<?xml version="1.0" encoding="UTF-8"?>
<install4j version="4.1" transformSequenceNumber="2" applicationTemplates="true">
  <installerGui>
    <applications>
      <application name="Updater/Standalone updater" id="1" beanClass="com.install4j.runtime.beans.applications.CustomApplication" enabled="true" commentSet="true" comment="A template for an updater that can be directly invoked by the user. The updater will check for a new version, ask the user whether to download and execute the new installer." customIcnsFile="${compiler:sys.install4jHome}/resource/macos/updater.icns" customIcoFile="${compiler:sys.install4jHome}/resource/updater.ico">
        <serializedBean>
          <java class="java.beans.XMLDecoder">
            <object class="com.install4j.runtime.beans.applications.CustomApplication">
              <void property="customPngIcon16File">
                <object class="com.install4j.api.beans.ExternalFile">
                  <string>${compiler:sys.install4jHome}/resource/updater_16.png</string>
                </object>
              </void>
              <void property="customPngIcon32File">
                <object class="com.install4j.api.beans.ExternalFile">
                  <string>${compiler:sys.install4jHome}/resource/updater_32.png</string>
                </object>
              </void>
              <void property="useCustomIcon">
                <boolean>true</boolean>
              </void>
              <void property="windowTitle">
                <string>${i18n:updater.WindowTitle("${compiler:sys.fullName}")}</string>
              </void>
            </object>
          </java>
        </serializedBean>
        <startup>
          <screen name="" id="2" beanClass="com.install4j.runtime.beans.screens.StartupScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.screens.StartupScreen" />
              </java>
            </serializedBean>
            <condition />
            <validation />
            <preActivation />
            <postActivation />
            <actions />
            <formComponents />
          </screen>
        </startup>
        <screens>
          <screen name="Welcome" id="7" beanClass="com.install4j.runtime.beans.screens.CustomizableBannerScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.screens.CustomizableBannerScreen">
                  <void property="infoText">
                    <string>${i18n:updater.WelcomeInfoText("${compiler:sys.fullName}")}</string>
                  </void>
                  <void property="title">
                    <string>${i18n:updater.WelcomeTitle("${compiler:sys.fullName}")}</string>
                  </void>
                </object>
              </java>
            </serializedBean>
            <condition />
            <validation />
            <preActivation />
            <postActivation />
            <actions />
            <formComponents />
          </screen>
          <screen name="Check for update" id="8" beanClass="com.install4j.runtime.beans.screens.CustomizableProgressScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.screens.CustomizableProgressScreen">
                  <void property="initialStatusMessage">
                    <string>${i18n:updater.CheckForUpdateLabel}</string>
                  </void>
                  <void property="subTitle">
                    <string>${i18n:updater.CheckForUpdateSubtitle}</string>
                  </void>
                  <void property="title">
                    <string>${i18n:updater.CheckForUpdateTitle}</string>
                  </void>
                </object>
              </java>
            </serializedBean>
            <condition />
            <validation />
            <preActivation />
            <postActivation />
            <actions>
              <action name="" id="131" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="1" errorMessage="">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.actions.control.SetProgressAction">
                      <void property="progressChangeType">
                        <object class="com.install4j.runtime.beans.actions.control.ProgressChangeType" field="SET_INDETERMINATE" />
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition />
              </action>
              <action name="" id="9" beanClass="com.install4j.runtime.beans.actions.update.CheckForUpdateAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="2" errorMessage="">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.actions.update.CheckForUpdateAction">
                      <void property="variable">
                        <string>updateDescriptor</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition />
              </action>
              <action name="" id="94" beanClass="com.install4j.runtime.beans.actions.control.SleepAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="1" errorMessage="">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.actions.control.SleepAction" />
                  </java>
                </serializedBean>
                <condition />
              </action>
              <action name="Update descriptor entry" id="42" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="1" errorMessage="">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.actions.control.SetVariableAction">
                      <void property="script">
                        <object class="com.install4j.api.beans.ScriptProperty">
                          <void property="value">
                            <string>((UpdateDescriptor)context.getVariable("updateDescriptor")).getPossibleUpdateEntry()</string>
                          </void>
                        </object>
                      </void>
                      <void property="variableName">
                        <string>updateDescriptorEntry</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition />
              </action>
              <group name="Update available" id="61" beanClass="com.install4j.runtime.beans.groups.ActionGroup" enabled="true" commentSet="false" comment="">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.groups.ActionGroup">
                      <void property="conditionExpression">
                        <object class="com.install4j.api.beans.ScriptProperty">
                          <void property="value">
                            <string>context.getVariable("updateDescriptorEntry") != null</string>
                          </void>
                        </object>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <beans>
                  <action name="New version" id="64" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="1" errorMessage="">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.actions.control.SetVariableAction">
                          <void property="script">
                            <object class="com.install4j.api.beans.ScriptProperty">
                              <void property="value">
                                <string>((UpdateDescriptorEntry)context.getVariable("updateDescriptorEntry")).getNewVersion()</string>
                              </void>
                            </object>
                          </void>
                          <void property="variableName">
                            <string>updaterNewVersion</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <condition />
                  </action>
                  <action name="Download size" id="65" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="1" errorMessage="">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.actions.control.SetVariableAction">
                          <void property="script">
                            <object class="com.install4j.api.beans.ScriptProperty">
                              <void property="value">
                                <string>((UpdateDescriptorEntry)context.getVariable("updateDescriptorEntry")).getFileSizeVerbose()</string>
                              </void>
                            </object>
                          </void>
                          <void property="variableName">
                            <string>updaterDownloadSize</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <condition />
                  </action>
                  <action name="Comment" id="66" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="1" errorMessage="">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.actions.control.SetVariableAction">
                          <void property="script">
                            <object class="com.install4j.api.beans.ScriptProperty">
                              <void property="value">
                                <string>((UpdateDescriptorEntry)context.getVariable("updateDescriptorEntry")).getComment()</string>
                              </void>
                            </object>
                          </void>
                          <void property="variableName">
                            <string>updaterComment</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <condition />
                  </action>
                  <action name="Download directory" id="67" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="1" errorMessage="">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.actions.control.SetVariableAction">
                          <void property="script">
                            <object class="com.install4j.api.beans.ScriptProperty">
                              <void property="value">
                                <string>Util.getUserHome()</string>
                              </void>
                            </object>
                          </void>
                          <void property="variableName">
                            <string>updaterDownloadDir</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <condition />
                  </action>
                  <action name="Download URL" id="69" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="1" errorMessage="">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.actions.control.SetVariableAction">
                          <void property="script">
                            <object class="com.install4j.api.beans.ScriptProperty">
                              <void property="value">
                                <string>((UpdateDescriptorEntry)context.getVariable("updateDescriptorEntry")).getURL().toExternalForm()</string>
                              </void>
                            </object>
                          </void>
                          <void property="variableName">
                            <string>updaterDownloadUrl</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <condition />
                  </action>
                  <action name="Archive" id="267" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="1" errorMessage="">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.actions.control.SetVariableAction">
                          <void property="script">
                            <object class="com.install4j.api.beans.ScriptProperty">
                              <void property="value">
                                <string>((UpdateDescriptorEntry)context.getVariable("updateDescriptorEntry")).isArchive() ? Boolean.TRUE : Boolean.FALSE</string>
                              </void>
                            </object>
                          </void>
                          <void property="variableName">
                            <string>isArchive</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <condition />
                  </action>
                </beans>
              </group>
            </actions>
            <formComponents />
          </screen>
          <group name="Up to date" id="10" beanClass="com.install4j.runtime.beans.groups.ScreenGroup" enabled="true" commentSet="false" comment="">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.groups.ScreenGroup">
                  <void property="conditionExpression">
                    <object class="com.install4j.api.beans.ScriptProperty">
                      <void property="value">
                        <string>context.getVariable("updateDescriptorEntry") == null</string>
                      </void>
                    </object>
                  </void>
                </object>
              </java>
            </serializedBean>
            <beans>
              <screen name="Up to date notification" id="11" beanClass="com.install4j.runtime.beans.screens.CustomizableBannerScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="true">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.screens.CustomizableBannerScreen">
                      <void property="infoText">
                        <string>${i18n:updater.UpToDateInfoText("${compiler:sys.fullName}")}</string>
                      </void>
                      <void property="title">
                        <string>${i18n:updater.UpToDateTitle}</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition />
                <validation />
                <preActivation />
                <postActivation />
                <actions />
                <formComponents />
              </screen>
            </beans>
          </group>
          <group name="Update available" id="12" beanClass="com.install4j.runtime.beans.groups.ScreenGroup" enabled="true" commentSet="false" comment="">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.groups.ScreenGroup">
                  <void property="conditionExpression">
                    <object class="com.install4j.api.beans.ScriptProperty">
                      <void property="value">
                        <string>context.getVariable("updateDescriptorEntry") != null</string>
                      </void>
                    </object>
                  </void>
                </object>
              </java>
            </serializedBean>
            <beans>
              <screen name="New version available" id="13" beanClass="com.install4j.runtime.beans.screens.FormScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.screens.FormScreen">
                      <void property="subTitle">
                        <string>${i18n:updater.NewVersionAvailableSubtitle("${compiler:sys.fullName}")}</string>
                      </void>
                      <void property="title">
                        <string>${i18n:updater.NewVersionAvailableTitle}</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition />
                <validation />
                <preActivation />
                <postActivation />
                <actions />
                <formComponents>
                  <formComponent name="" id="17" beanClass="com.install4j.runtime.beans.formcomponents.KeyValuePairComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.KeyValuePairComponent">
                          <void property="labelText">
                            <string>${i18n:updater.CurrentVersionLabel}</string>
                          </void>
                          <void property="valueLabelColor">
                            <object class="java.awt.Color">
                              <int>128</int>
                              <int>0</int>
                              <int>0</int>
                              <int>255</int>
                            </object>
                          </void>
                          <void property="valueLabelFont">
                            <object class="java.awt.Font">
                              <string>dialog</string>
                              <int>1</int>
                              <int>0</int>
                            </object>
                          </void>
                          <void property="valueLabelText">
                            <string>${installer:sys.version}</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript />
                  </formComponent>
                  <formComponent name="" id="18" beanClass="com.install4j.runtime.beans.formcomponents.KeyValuePairComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.KeyValuePairComponent">
                          <void property="labelText">
                            <string>${i18n:updater.NewVersionLabel}</string>
                          </void>
                          <void property="valueLabelColor">
                            <object class="java.awt.Color">
                              <int>0</int>
                              <int>128</int>
                              <int>0</int>
                              <int>255</int>
                            </object>
                          </void>
                          <void property="valueLabelFont">
                            <object class="java.awt.Font">
                              <string>dialog</string>
                              <int>1</int>
                              <int>0</int>
                            </object>
                          </void>
                          <void property="valueLabelText">
                            <string>${installer:updaterNewVersion}</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript />
                  </formComponent>
                  <formComponent name="" id="30" beanClass="com.install4j.runtime.beans.formcomponents.HyperlinkActionLabelComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.HyperlinkActionLabelComponent">
                          <void property="actionScript">
                            <object class="com.install4j.api.beans.ScriptProperty">
                              <void property="value">
                                <string>context.goForward(1, false, false);</string>
                              </void>
                            </object>
                          </void>
                          <void property="hyperlinkText">
                            <string>${i18n:updater.ShowComments}</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript>boolean hasComment = ((String)context.getVariable("updaterComment")).length() &gt; 0;
component.setVisible(hasComment);</initScript>
                  </formComponent>
                  <formComponent name="" id="20" beanClass="com.install4j.runtime.beans.formcomponents.SpacerComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.SpacerComponent" />
                      </java>
                    </serializedBean>
                    <initScript />
                  </formComponent>
                  <formComponent name="" id="21" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent">
                          <void property="labelText">
                            <string>${i18n:updater.DownloadLocationLabel}</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript />
                  </formComponent>
                  <formComponent name="" id="22" beanClass="com.install4j.runtime.beans.formcomponents.DirectoryChooserComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.DirectoryChooserComponent">
                          <void property="initialFile">
                            <string>${installer:updaterDownloadDir}</string>
                          </void>
                          <void property="labelText">
                            <string>${i18n:updater.DownloadToLabel}</string>
                          </void>
                          <void property="manualEntryAllowed">
                            <boolean>false</boolean>
                          </void>
                          <void property="variableName">
                            <string>updaterDownloadLocation</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript />
                  </formComponent>
                  <formComponent name="" id="31" beanClass="com.install4j.runtime.beans.formcomponents.KeyValuePairComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.KeyValuePairComponent">
                          <void property="labelText">
                            <string>${i18n:updater.DownloadSizeLabel}</string>
                          </void>
                          <void property="valueLabelText">
                            <string>${installer:updaterDownloadSize}</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript />
                  </formComponent>
                </formComponents>
              </screen>
              <screen name="Update message" id="14" beanClass="com.install4j.runtime.beans.screens.CustomizableInfoScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.screens.CustomizableInfoScreen">
                      <void property="displayedText">
                        <string>${installer:updaterComment}</string>
                      </void>
                      <void property="infoText">
                        <string>${i18n:updater.CommentsLabel}</string>
                      </void>
                      <void property="subTitle">
                        <string>${i18n:updater.CommentsSubTitle}</string>
                      </void>
                      <void property="title">
                        <string>${i18n:updater.CommentsTitle}</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition>false // This screen is only shown if the user clicks the "Show comments" hyperlink label in the previous screen.
</condition>
                <validation>if (context.isConsole()) {
    context.goBackInHistory(1);
}
return true;</validation>
                <preActivation>WizardContext wizardContext = context.getWizardContext();
if (wizardContext != null) {
    wizardContext.setNextButtonVisible(false);
    wizardContext.setCancelButtonVisible(false);
}</preActivation>
                <postActivation />
                <actions />
                <formComponents />
              </screen>
              <screen name="Download new version" id="15" beanClass="com.install4j.runtime.beans.screens.CustomizableProgressScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.screens.CustomizableProgressScreen">
                      <void property="subTitle">
                        <string>${i18n:updater.DownloadSubTitle}</string>
                      </void>
                      <void property="title">
                        <string>${i18n:updater.DownloadTitle}</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition />
                <validation />
                <preActivation />
                <postActivation />
                <actions>
                  <action name="Download location" id="72" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="1" errorMessage="">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.actions.control.SetVariableAction">
                          <void property="script">
                            <object class="com.install4j.api.beans.ScriptProperty">
                              <void property="value">
                                <string>context.getVariable("updaterDownloadLocation") + File.separator + ((UpdateDescriptorEntry)context.getVariable("updateDescriptorEntry")).getFileName()</string>
                              </void>
                            </object>
                          </void>
                          <void property="variableName">
                            <string>updaterDownloadFile</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <condition />
                  </action>
                  <action name="" id="68" beanClass="com.install4j.runtime.beans.actions.update.DownloadFileAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="2" errorMessage="">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.actions.update.DownloadFileAction">
                          <void property="targetFile">
                            <string>${installer:updaterDownloadFile}</string>
                          </void>
                          <void property="url">
                            <string>${installer:updaterDownloadUrl}</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <condition />
                  </action>
                  <action name="" id="243" beanClass="com.install4j.runtime.beans.actions.files.SetModeAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="1" errorMessage="">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.actions.files.SetModeAction">
                          <void property="file">
                            <object class="java.io.File">
                              <string>${installer:updaterDownloadFile}</string>
                            </object>
                          </void>
                          <void property="mode">
                            <string>755</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <condition />
                  </action>
                </actions>
                <formComponents />
              </screen>
              <screen name="Finish" id="32" beanClass="com.install4j.runtime.beans.screens.BannerFormScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="true">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.screens.BannerFormScreen">
                      <void property="infoText">
                        <string>${i18n:updater.FinishInfoText("${compiler:sys.fullName}")}</string>
                      </void>
                      <void property="title">
                        <string>${i18n:updater.FinishTitle}</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition />
                <validation />
                <preActivation />
                <postActivation />
                <actions>
                  <group name="Execute installer" id="207" beanClass="com.install4j.runtime.beans.groups.ActionGroup" enabled="true" commentSet="false" comment="">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.groups.ActionGroup">
                          <void property="conditionExpression">
                            <object class="com.install4j.api.beans.ScriptProperty">
                              <void property="value">
                                <string>((Integer)context.getVariable("updaterLaunchSelection")).intValue() == 0 &amp;&amp; !context.getBooleanVariable("isArchive")</string>
                              </void>
                            </object>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <beans>
                      <action name="" id="187" beanClass="com.install4j.runtime.beans.actions.update.ShutdownCallingLauncherAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="1" errorMessage="">
                        <serializedBean>
                          <java class="java.beans.XMLDecoder">
                            <object class="com.install4j.runtime.beans.actions.update.ShutdownCallingLauncherAction" />
                          </java>
                        </serializedBean>
                        <condition />
                      </action>
                      <action name="" id="73" beanClass="com.install4j.runtime.beans.actions.misc.RunExecutableAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="2" errorMessage="${i18n:updater.LaunchError}">
                        <serializedBean>
                          <java class="java.beans.XMLDecoder">
                            <object class="com.install4j.runtime.beans.actions.misc.RunExecutableAction">
                              <void property="executable">
                                <object class="java.io.File">
                                  <string>${installer:updaterDownloadFile}</string>
                                </object>
                              </void>
                              <void property="workingDirectory">
                                <object class="java.io.File">
                                  <string>${installer:updaterDownloadLocation}</string>
                                </object>
                              </void>
                            </object>
                          </java>
                        </serializedBean>
                        <condition />
                      </action>
                    </beans>
                  </group>
                </actions>
                <formComponents>
                  <formComponent name="" id="75" beanClass="com.install4j.runtime.beans.formcomponents.LabelComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.LabelComponent">
                          <void property="labelText">
                            <string>${i18n:updater.LaunchUpdaterQuestion}</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript />
                  </formComponent>
                  <formComponent name="" id="76" beanClass="com.install4j.runtime.beans.formcomponents.SpacerComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.SpacerComponent">
                          <void property="height">
                            <int>5</int>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript />
                  </formComponent>
                  <formComponent name="" id="74" beanClass="com.install4j.runtime.beans.formcomponents.RadiobuttonsComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.RadiobuttonsComponent">
                          <void property="radioButtonLabels">
                            <array class="java.lang.String" length="2">
                              <void index="0">
                                <string>${i18n:updater.LaunchUpdaterLabel}</string>
                              </void>
                              <void index="1">
                                <string>${i18n:updater.DoNotLaunchUpdaterLabel}</string>
                              </void>
                            </array>
                          </void>
                          <void property="variableName">
                            <string>updaterLaunchSelection</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript>if (context.getBooleanVariable("isArchive")) {
    component.setVisible(false);
}</initScript>
                  </formComponent>
                  <formComponent name="" id="165" beanClass="com.install4j.runtime.beans.formcomponents.HyperlinkActionLabelComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.HyperlinkActionLabelComponent">
                          <void property="actionScript">
                            <object class="com.install4j.api.beans.ScriptProperty">
                              <void property="value">
                                <string>Util.showPath((String)context.getVariable("updaterDownloadFile"));</string>
                              </void>
                            </object>
                          </void>
                          <void property="hyperlinkText">
                            <string>${i18n:updater.OpenContainingFolderLabel}</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript />
                  </formComponent>
                  <formComponent name="" id="228" beanClass="com.install4j.runtime.beans.formcomponents.ProgressComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.ProgressComponent">
                          <void property="detailVisible">
                            <boolean>false</boolean>
                          </void>
                          <void property="hideInitially">
                            <boolean>true</boolean>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript />
                  </formComponent>
                </formComponents>
              </screen>
            </beans>
          </group>
        </screens>
      </application>
      <application name="Updater/Updater with silent version check" id="3" beanClass="com.install4j.runtime.beans.applications.CustomApplication" enabled="true" commentSet="true" comment="A template for an updater that is invoked programatically from  your application. The updater will silently check for for a new version. If no new version is available, no GUI will be displayeded. Otherwise, the user will be asked whether to download and execute the new installer." customIcnsFile="${compiler:sys.install4jHome}/resource/macos/updater.icns" customIcoFile="${compiler:sys.install4jHome}/resource/updater.ico">
        <serializedBean>
          <java class="java.beans.XMLDecoder">
            <object class="com.install4j.runtime.beans.applications.CustomApplication">
              <void property="customPngIcon16File">
                <object class="com.install4j.api.beans.ExternalFile">
                  <string>${compiler:sys.install4jHome}/resource/updater_16.png</string>
                </object>
              </void>
              <void property="customPngIcon32File">
                <object class="com.install4j.api.beans.ExternalFile">
                  <string>${compiler:sys.install4jHome}/resource/updater_32.png</string>
                </object>
              </void>
              <void property="useCustomIcon">
                <boolean>true</boolean>
              </void>
              <void property="windowTitle">
                <string>${i18n:updater.WindowTitle("${compiler:sys.fullName}")}</string>
              </void>
            </object>
          </java>
        </serializedBean>
        <startup>
          <screen name="" id="4" beanClass="com.install4j.runtime.beans.screens.StartupScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.screens.StartupScreen" />
              </java>
            </serializedBean>
            <condition />
            <validation />
            <preActivation />
            <postActivation />
            <actions>
              <action name="" id="171" beanClass="com.install4j.runtime.beans.actions.update.CheckForUpdateAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="2" errorMessage="">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.actions.update.CheckForUpdateAction">
                      <void property="showError">
                        <boolean>false</boolean>
                      </void>
                      <void property="variable">
                        <string>updateDescriptor</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition />
              </action>
              <action name="Update descriptor entry" id="174" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="2" errorMessage="">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.actions.control.SetVariableAction">
                      <void property="failIfNull">
                        <boolean>true</boolean>
                      </void>
                      <void property="script">
                        <object class="com.install4j.api.beans.ScriptProperty">
                          <void property="value">
                            <string>((UpdateDescriptor)context.getVariable("updateDescriptor")).getPossibleUpdateEntry()</string>
                          </void>
                        </object>
                      </void>
                      <void property="variableName">
                        <string>updateDescriptorEntry</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition />
              </action>
              <link name="" id="173" beanClass="" enabled="true" targetId="61" />
            </actions>
            <formComponents />
          </screen>
        </startup>
        <screens>
          <link name="" id="175" beanClass="" enabled="true" targetId="12" />
        </screens>
      </application>
      <application name="Updater/Updater without version check" id="5" beanClass="com.install4j.runtime.beans.applications.CustomApplication" enabled="true" commentSet="true" comment="A template for an updater that is invoked programatically from  your application. This template aassumes that you have performed the update check in your application, displayed the result to the user and need the updater only for downloading and executing the new installer. You can change the default download directory by passing -DupdaterDownloadLocation=[directory] as a VM parameter." customIcnsFile="${compiler:sys.install4jHome}/resource/macos/updater.icns" customIcoFile="${compiler:sys.install4jHome}/resource/updater.ico">
        <serializedBean>
          <java class="java.beans.XMLDecoder">
            <object class="com.install4j.runtime.beans.applications.CustomApplication">
              <void property="customPngIcon16File">
                <object class="com.install4j.api.beans.ExternalFile">
                  <string>${compiler:sys.install4jHome}/resource/updater_16.png</string>
                </object>
              </void>
              <void property="customPngIcon32File">
                <object class="com.install4j.api.beans.ExternalFile">
                  <string>${compiler:sys.install4jHome}/resource/updater_32.png</string>
                </object>
              </void>
              <void property="useCustomIcon">
                <boolean>true</boolean>
              </void>
              <void property="windowTitle">
                <string>${i18n:updater.WindowTitle("${compiler:sys.fullName}")}</string>
              </void>
            </object>
          </java>
        </serializedBean>
        <startup>
          <screen name="" id="6" beanClass="com.install4j.runtime.beans.screens.StartupScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.screens.StartupScreen" />
              </java>
            </serializedBean>
            <condition />
            <validation />
            <preActivation />
            <postActivation />
            <actions>
              <action name="" id="179" beanClass="com.install4j.runtime.beans.actions.update.CheckForUpdateAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="2" errorMessage="">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.actions.update.CheckForUpdateAction">
                      <void property="variable">
                        <string>updateDescriptor</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition />
              </action>
              <action name="Update descriptor entry" id="180" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="2" errorMessage="${i18n:updater.UpToDateInfoText(&quot;${compiler:sys.fullName}&quot;)}">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.actions.control.SetVariableAction">
                      <void property="failIfNull">
                        <boolean>true</boolean>
                      </void>
                      <void property="script">
                        <object class="com.install4j.api.beans.ScriptProperty">
                          <void property="value">
                            <string>((UpdateDescriptor)context.getVariable("updateDescriptor")).getPossibleUpdateEntry()</string>
                          </void>
                        </object>
                      </void>
                      <void property="variableName">
                        <string>updateDescriptorEntry</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition />
              </action>
              <link name="" id="181" beanClass="" enabled="true" targetId="61" />
              <action name="Download location" id="184" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" enabled="true" commentSet="false" comment="" rollbackBarrier="false" multiExec="false" failureStrategy="1" errorMessage="">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.actions.control.SetVariableAction">
                      <void property="onlyIfUndefined">
                        <boolean>true</boolean>
                      </void>
                      <void property="script">
                        <object class="com.install4j.api.beans.ScriptProperty">
                          <void property="value">
                            <string>context.getVariable("updaterDownloadDir")</string>
                          </void>
                        </object>
                      </void>
                      <void property="variableName">
                        <string>updaterDownloadLocation</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition />
              </action>
            </actions>
            <formComponents />
          </screen>
        </startup>
        <screens>
          <link name="" id="182" beanClass="" enabled="true" targetId="15" />
          <link name="" id="183" beanClass="" enabled="true" targetId="32" />
        </screens>
      </application>
    </applications>
  </installerGui>
</install4j>

