<?xml version="1.0" encoding="UTF-8"?>
<install4j version="5.0" transformSequenceNumber="3">
  <directoryPresets config="./media" />
  <application name="Sample App" distributionSourceDir="" applicationId="5340-5932-4994-0799" mediaDir="./media" mediaFilePattern="${compiler:sys.shortName}_${compiler:sys.platform}_${compiler:sys.version}" compression="6" lzmaCompression="false" pack200Compression="false" excludeSignedFromPacking="true" commonExternalFiles="false" createMd5Sums="true" shrinkRuntime="true" shortName="sample" publisher="ej-technologies GmbH" publisherWeb="http://www.ej-technologies.com" version="1.0" allPathsRelative="true" backupOnSave="false" autoSave="false" convertDotsToUnderscores="true" macSignature="????" installerName="" javaMinVersion="1.4" javaMaxVersion="" allowBetaVM="false" jdkMode="jdk" jdkName="JDK 1.6">
    <languages skipLanguageSelection="false" languageSelectionInPrincipalLanguage="false">
      <principalLanguage id="en" customLocalizationFile="" />
      <additionalLanguages />
    </languages>
    <searchSequence>
      <registry />
      <envVar name="JAVA_HOME" />
      <envVar name="JDK_HOME" />
    </searchSequence>
    <variables />
    <mergedProjects />
  </application>
  <files keepModificationTimes="false" missingFilesStrategy="warn" defaultOverwriteMode="4" defaultUninstallMode="0" launcherOverwriteMode="3" defaultFileMode="644" defaultDirMode="755">
    <filesets />
    <roots />
    <mountPoints />
    <entries />
    <components />
  </files>
  <launchers />
  <installerGui installerType="1" addOnAppId="" suggestPreviousLocations="true" autoUpdateDescriptorUrl="" useAutoUpdateBaseUrl="false" autoUpdateBaseUrl="">
    <customCode />
    <autoUpdate useMinUpdatableVersion="false" minUpdatableVersion="" useMaxUpdatableVersion="false" maxUpdatableVersion="">
      <commentFiles />
      <customAttributes />
    </autoUpdate>
    <applications>
      <application name="" id="installer" customizedId="" beanClass="com.install4j.runtime.beans.applications.InstallerApplication" enabled="true" commentSet="false" comment="" fileset="" customIcnsFile="" customIcoFile="" automaticLauncherIntegration="false" launchMode="startupFirstWindow" launchInNewProcess="false" launchSchedule="updateSchedule" allLaunchers="true">
        <serializedBean>
          <java class="java.beans.XMLDecoder">
            <object class="com.install4j.runtime.beans.applications.InstallerApplication">
              <void property="frameHeight">
                <int>550</int>
              </void>
              <void property="frameWidth">
                <int>600</int>
              </void>
            </object>
          </java>
        </serializedBean>
        <launcherIds />
        <variables>
          <variable name="jdkHome" value="" description="The home directory of the selected JDK" category="" valueClass="string" />
        </variables>
        <startup>
          <screen name="" id="9" customizedId="" beanClass="com.install4j.runtime.beans.screens.StartupScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false" wizardIndexChangeType="unchanged" wizardIndexKey="">
            <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="" id="1512" customizedId="" beanClass="com.install4j.runtime.beans.screens.WelcomeScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false" wizardIndexChangeType="unchanged" wizardIndexKey="">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.screens.WelcomeScreen" />
              </java>
            </serializedBean>
            <condition />
            <validation />
            <preActivation />
            <postActivation />
            <actions />
            <formComponents />
          </screen>
          <group name="JDK" id="3854" customizedId="" beanClass="com.install4j.runtime.beans.groups.ScreenGroup" enabled="true" commentSet="true" comment="This screen group has beed added so it can be a link target for another project.&#xA;&#xA;In the &quot;mergedProjects&quot; sample project, this project is a merged project and this screen group is merged into the installer.">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.groups.ScreenGroup" />
              </java>
            </serializedBean>
            <beans>
              <screen name="Search for JDKs" id="2677" customizedId="" beanClass="com.install4j.runtime.beans.screens.CustomizableProgressScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false" wizardIndexChangeType="unchanged" wizardIndexKey="">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.screens.CustomizableProgressScreen">
                      <void property="subTitle">
                        <string>Please wait while the installer searches your system</string>
                      </void>
                      <void property="title">
                        <string>Search for JDKs</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition>!Util.isMacOS() &amp;&amp; !context.isUnattended()</condition>
                <validation />
                <preActivation />
                <postActivation />
                <actions>
                  <action name="" id="2679" customizedId="" 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="2705" customizedId="" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" 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.SetMessageAction">
                          <void property="statusMessage">
                            <string>Searching for suitable JDKs</string>
                          </void>
                          <void property="useDetail">
                            <boolean>true</boolean>
                          </void>
                          <void property="useStatus">
                            <boolean>true</boolean>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <condition />
                  </action>
                  <action name="Detect JDKs" id="2678" customizedId="" beanClass="com.install4j.runtime.beans.actions.control.RunScriptAction" 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.RunScriptAction">
                          <void property="script">
                            <object class="com.install4j.api.beans.ScriptProperty">
                              <void property="value">
                                <string>JVMSelector.JVMLocation[] locations = JVMSelector.getJVMLocations("${compiler:sys.javaMinVersion}", "${compiler:sys.javaMaxVersion}", true, null);
context.setVariable("jvmLocations", locations);
context.setVariable("jvmCount", new Integer(locations.length));
if (Util.isWindows() &amp;&amp; !context.isConsole()) {
    Thread.sleep(1500);
}
return true;</string>
                              </void>
                            </object>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <condition />
                  </action>
                </actions>
                <formComponents />
              </screen>
              <screen name="JDK Selection" id="2454" customizedId="" beanClass="com.install4j.runtime.beans.screens.FormScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="1" finishScreen="false" wizardIndexChangeType="unchanged" wizardIndexKey="">
                <serializedBean>
                  <java class="java.beans.XMLDecoder">
                    <object class="com.install4j.runtime.beans.screens.FormScreen">
                      <void property="scrollable">
                        <boolean>false</boolean>
                      </void>
                      <void property="subTitle">
                        <string>Which JDK do you want to use?</string>
                      </void>
                      <void property="title">
                        <string>JDK Selection</string>
                      </void>
                    </object>
                  </java>
                </serializedBean>
                <condition>!Util.isMacOS()</condition>
                <validation>import java.io.*;

String jdkHome; 
if (context.getVariable("selectionMode").equals("otherJDK")) {
    String otherBaseDir = (String)context.getVariable("otherBaseDir");
    if (otherBaseDir.trim().length() == 0) {
        Util.showErrorMessage("Please specify a location");
        return false;
    } else {
        if (JVMSelector.getJVMLocation(new File(otherBaseDir), "${compiler:sys.javaMinVersion}", "${compiler:sys.javaMaxVersion}", true) != null) {
            jdkHome = new File(otherBaseDir).getAbsolutePath();
        } else if (context.isUnattended()) {
            Util.logInfo(null, "The location\n" + otherBaseDir + "\ndoes not contain a suitable JDK");
            return false;
        } else {
            Util.showErrorMessage("The location\n" + otherBaseDir + "\ndoes not contain a suitable JDK");
            return false;
        }
    }
} else {
    JVMSelector.JVMLocation[] locations = (JVMSelector.JVMLocation[])context.getVariable("jvmLocations");
    Integer jvmIndex = (Integer)context.getVariable("jvmIndex");
    
    if (jvmIndex != null &amp;&amp; locations != null &amp;&amp; jvmIndex.intValue() &gt;= 0 &amp;&amp; jvmIndex.intValue() &lt; locations.length) {
        jdkHome = locations[jvmIndex.intValue()].getJavaHome().getAbsolutePath();
        context.setVariable("otherBaseDir", jdkHome);
    } else {
        Util.showErrorMessage("Please specify a location");
        return false;
    }
}

JVMSelector.setPreferredJVM(jdkHome);
context.setVariable("jdkHome", jdkHome);
context.registerResponseFileVariable("jdkHome");
return true;</validation>
                <preActivation>final JVMSelector.JVMLocation[] locations = (JVMSelector.JVMLocation[])context.getVariable("jvmLocations");

Object savedDir = context.getVariable("otherBaseDir");
if ((locations != null &amp;&amp; locations.length == 0) || (savedDir != null &amp;&amp; savedDir instanceof String)) {
    context.setVariable("selectionMode", "otherJDK");
}</preActivation>
                <postActivation />
                <actions />
                <formComponents>
                  <formComponent name="" id="3898" customizedId="" beanClass="com.install4j.runtime.beans.formcomponents.SingleRadiobuttonComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.SingleRadiobuttonComponent">
                          <void property="coupledComponentIds">
                            <void method="add">
                              <string>3900</string>
                            </void>
                          </void>
                          <void property="initiallySelected">
                            <boolean>true</boolean>
                          </void>
                          <void property="radioButtonLabel">
                            <string>Use detected JDK</string>
                          </void>
                          <void property="variableName">
                            <string>selectionMode</string>
                          </void>
                          <void property="variableValue">
                            <string>foundJDK</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript />
                    <visibilityScript />
                  </formComponent>
                  <group name="" id="3900" customizedId="" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" enabled="true" commentSet="false" comment="">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.groups.VerticalFormComponentGroup">
                          <void property="insets">
                            <object class="java.awt.Insets">
                              <int>0</int>
                              <int>20</int>
                              <int>0</int>
                              <int>0</int>
                            </object>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <beans>
                      <formComponent name="" id="3807" customizedId="" beanClass="com.install4j.runtime.beans.formcomponents.MultilineHtmlLabelComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                        <serializedBean>
                          <java class="java.beans.XMLDecoder">
                            <object class="com.install4j.runtime.beans.formcomponents.MultilineHtmlLabelComponent">
                              <void property="labelHtml">
                                <string>&lt;html&gt;Found &lt;b&gt;${installer:jvmCount}&lt;/b&gt; JDKs:</string>
                              </void>
                            </object>
                          </java>
                        </serializedBean>
                        <initScript />
                        <visibilityScript />
                      </formComponent>
                      <formComponent name="" id="3740" customizedId="" beanClass="com.install4j.runtime.beans.formcomponents.ListComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                        <serializedBean>
                          <java class="java.beans.XMLDecoder">
                            <object class="com.install4j.runtime.beans.formcomponents.ListComponent">
                              <void property="fillVertical">
                                <boolean>true</boolean>
                              </void>
                              <void property="listEntries">
                                <array class="java.lang.String" length="1">
                                  <void index="0">
                                    <string>${installer:jvmLocations}</string>
                                  </void>
                                </array>
                              </void>
                              <void property="multiSelection">
                                <boolean>false</boolean>
                              </void>
                              <void property="variableName">
                                <string>jvmIndex</string>
                              </void>
                              <void property="visibleRows">
                                <int>5</int>
                              </void>
                            </object>
                          </java>
                        </serializedBean>
                        <initScript>if (configurationObject.getModel().getSize() &gt; 0) {
    configurationObject.setSelectedIndex(0);
}</initScript>
                        <visibilityScript />
                      </formComponent>
                    </beans>
                  </group>
                  <formComponent name="" id="3897" customizedId="" beanClass="com.install4j.runtime.beans.formcomponents.SingleRadiobuttonComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.SingleRadiobuttonComponent">
                          <void property="coupledComponentIds">
                            <void method="add">
                              <string>3743</string>
                            </void>
                          </void>
                          <void property="radioButtonLabel">
                            <string>Specify alternative JDK base directory</string>
                          </void>
                          <void property="variableName">
                            <string>selectionMode</string>
                          </void>
                          <void property="variableValue">
                            <string>otherJDK</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript />
                    <visibilityScript />
                  </formComponent>
                  <formComponent name="" id="3743" customizedId="" beanClass="com.install4j.runtime.beans.formcomponents.DirectoryChooserComponent" enabled="true" commentSet="false" comment="" insetTop="" insetLeft="20" insetBottom="" insetRight="" resetInitOnPrevious="false">
                    <serializedBean>
                      <java class="java.beans.XMLDecoder">
                        <object class="com.install4j.runtime.beans.formcomponents.DirectoryChooserComponent">
                          <void property="requestFocus">
                            <boolean>true</boolean>
                          </void>
                          <void property="variableName">
                            <string>otherBaseDir</string>
                          </void>
                        </object>
                      </java>
                    </serializedBean>
                    <initScript />
                    <visibilityScript />
                  </formComponent>
                </formComponents>
              </screen>
            </beans>
          </group>
          <screen name="" id="1946" customizedId="" beanClass="com.install4j.runtime.beans.screens.FinishedScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="true" wizardIndexChangeType="unchanged" wizardIndexKey="">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.screens.FinishedScreen" />
              </java>
            </serializedBean>
            <condition />
            <validation />
            <preActivation />
            <postActivation />
            <actions />
            <formComponents />
          </screen>
        </screens>
      </application>
      <application name="" id="uninstaller" customizedId="" beanClass="com.install4j.runtime.beans.applications.UninstallerApplication" enabled="false" commentSet="false" comment="" fileset="" customIcnsFile="" customIcoFile="" automaticLauncherIntegration="false" launchMode="startupFirstWindow" launchInNewProcess="false" launchSchedule="updateSchedule" allLaunchers="true">
        <serializedBean>
          <java class="java.beans.XMLDecoder">
            <object class="com.install4j.runtime.beans.applications.UninstallerApplication">
              <void property="frameHeight">
                <int>550</int>
              </void>
              <void property="frameWidth">
                <int>600</int>
              </void>
            </object>
          </java>
        </serializedBean>
        <launcherIds />
        <variables />
        <startup>
          <screen name="" id="10" customizedId="" beanClass="com.install4j.runtime.beans.screens.StartupScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false" wizardIndexChangeType="unchanged" wizardIndexKey="">
            <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="" id="515" customizedId="" beanClass="com.install4j.runtime.beans.screens.UninstallWelcomeScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false" wizardIndexChangeType="unchanged" wizardIndexKey="">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.screens.UninstallWelcomeScreen" />
              </java>
            </serializedBean>
            <condition />
            <validation />
            <preActivation />
            <postActivation />
            <actions />
            <formComponents />
          </screen>
          <screen name="" id="7" customizedId="" beanClass="com.install4j.runtime.beans.screens.UninstallationScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false" wizardIndexChangeType="unchanged" wizardIndexKey="">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.screens.UninstallationScreen" />
              </java>
            </serializedBean>
            <condition />
            <validation />
            <preActivation />
            <postActivation />
            <actions>
              <action name="" id="8" customizedId="" beanClass="com.install4j.runtime.beans.actions.UninstallFilesAction" 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.UninstallFilesAction" />
                  </java>
                </serializedBean>
                <condition />
              </action>
            </actions>
            <formComponents />
          </screen>
          <screen name="" id="516" customizedId="" beanClass="com.install4j.runtime.beans.screens.UninstallFailureScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false" wizardIndexChangeType="unchanged" wizardIndexKey="">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.screens.UninstallFailureScreen" />
              </java>
            </serializedBean>
            <condition />
            <validation />
            <preActivation />
            <postActivation />
            <actions />
            <formComponents />
          </screen>
          <screen name="" id="517" customizedId="" beanClass="com.install4j.runtime.beans.screens.UninstallSuccessScreen" enabled="true" commentSet="false" comment="" rollbackBarrier="false" backButton="2" finishScreen="false" wizardIndexChangeType="unchanged" wizardIndexKey="">
            <serializedBean>
              <java class="java.beans.XMLDecoder">
                <object class="com.install4j.runtime.beans.screens.UninstallSuccessScreen" />
              </java>
            </serializedBean>
            <condition />
            <validation />
            <preActivation />
            <postActivation />
            <actions />
            <formComponents />
          </screen>
        </screens>
      </application>
    </applications>
  </installerGui>
  <mediaSets>
    <windows name="Windows" id="8" customizedId="" mediaFileName="" installDir="hello" overridePrincipalLanguage="false" jreBitType="32" runPostProcessor="false" postProcessor="" failOnPostProcessorError="false" useLegacyMediaFileIds="false" legacyMediaFileIds="" includedJRE="" manualJREEntry="false" bundleType="1" jreURL="" jreFtpURL="" jreShared="false" directDownload="false" installOnlyIfNecessary="false" customInstallBaseDir="" contentFilesType="1" downloadURL="" verifyIntegrity="true">
      <excludedLaunchers />
      <excludedComponents />
      <excludedBeans />
      <overriddenPrincipalLanguage id="en" customLocalizationFile="" />
      <exclude />
      <variables />
      <autoUpdate useMinUpdatableVersion="false" minUpdatableVersion="" useMaxUpdatableVersion="false" maxUpdatableVersion="">
        <commentFiles />
        <customAttributes />
      </autoUpdate>
    </windows>
    <unixInstaller name="Unix Installer" id="12" customizedId="" mediaFileName="" installDir="hello" overridePrincipalLanguage="false" jreBitType="all" runPostProcessor="false" postProcessor="" failOnPostProcessorError="false" useLegacyMediaFileIds="false" legacyMediaFileIds="" includedJRE="" manualJREEntry="false" bundleType="1" jreURL="" jreFtpURL="" jreShared="false" directDownload="false" installOnlyIfNecessary="false" customInstallBaseDir="" contentFilesType="1" downloadURL="">
      <excludedLaunchers />
      <excludedComponents />
      <excludedBeans />
      <overriddenPrincipalLanguage id="en" customLocalizationFile="" />
      <exclude />
      <variables />
      <autoUpdate useMinUpdatableVersion="false" minUpdatableVersion="" useMaxUpdatableVersion="false" maxUpdatableVersion="">
        <commentFiles />
        <customAttributes />
      </autoUpdate>
      <installerScript mode="1" file="">
        <content />
      </installerScript>
    </unixInstaller>
  </mediaSets>
  <buildIds buildAll="true" />
</install4j>

