Sample userInputSpec.xml
Sample userInputSpec.xml
Here's an example 3 panel userInputSpec.xml file. You specify the use of this XML document inside your install definition in the resource section like this (assuming your ant build.xml uses a property called build.dir):
<resources> <res id="userInputSpec.xml" src="@{build.dir}/userInputSpec.xml" /> </resources>
userInputSpec.xml
<userInput> <!-- Install --> <panel order="0"> <createForPack name="Main Application" /> <field type="title" txt="Import Keystores" bold="true" size="1" /> <field type="divider" align="top"/> <!-- Keystore --> <field type="staticText" align="left" txt="Existing SSL keystore to import:"/> <field type="file" align="left" variable="existing.ssl.keystore"> <spec txt="" size="25" set=""/> </field> <field type="space"/> <!-- Truststore --> <field type="staticText" align="left" txt="Existing SSL truststore to import:"/> <field type="file" align="left" variable="existing.ssl.truststore"> <spec txt="" size="25" set=""/> </field> <field type="space"/> <!-- Signing Keystore --> <field type="staticText" align="left" txt="Existing signing keystore to import:"/> <field type="file" align="left" variable="existing.signing.keystore"> <spec txt="" size="25" set=""/> </field> <field type="space"/> <field type="divider" align="bottom"/> </panel> <panel order="1"> <!-- Validate access to keystores with information from last panel --> <createForPack name="Main Application" /> <field type="title" txt="SSL Keystore Settings" bold="true" size="1" /> <field type="divider" align="bottom"/> <!-- Skip validation in case customer has something wrong they want to fix later --> <field type="check" align="left" variable="skip.keystore.validation"> <spec txt=" Skip keystore password validation (not recommended)" size="25" true="true" false="false" set="false"/> </field> <field type="divider" align="top"/> <!-- Keystore --> <field type="combo" variable="existing.ssl.keystore.type"> <spec txt="Keystore type:" id="existing.ssl.keystore.type"> <choice txt="JKS" value="JKS" set="true"/> <!-- <choice txt="PKCS12" value="PKCS12"/> --> </spec> </field> <field type="space"/> <field type="text" align="left" variable="keystore.key.alias"> <spec txt="Keystore Key Alias:" size="25" set="alias-1"/> </field> <field type="password" align="left" variable="keystore.password"> <spec> <pwd txt="Keystore Password:" size="25" set=""/> <pwd txt="Retype Password:" size="25" set=""/> </spec> <validator class="com.izforge.izpack.panels.userinput.validator.PasswordEqualityValidator" txt="Both keystore passwords must match." id="key for the error text"/> <validator class="com.izforge.izpack.panels.userinput.validator.PasswordKeystoreValidator" txt="Could not validate keystore with password and alias provided." id="key for the error text"> <param name="keystoreFile" value="${existing.ssl.keystore}"/> <param name="keystoreType" value="${existing.ssl.keystore.type}"/> <param name="keystoreAlias" value="${keystore.key.alias}"/> <param name="skipValidation" value="${skip.keystore.validation}"/> </validator> </field> <field type="space"/> <!-- Truststore --> <field type="combo" variable="existing.ssl.truststore.type"> <spec txt="Truststore type:" id="existing.ssl.truststore.type"> <choice txt="JKS" value="JKS" set="true"/> <!-- <choice txt="PKCS12" value="PKCS12"/> --> </spec> </field> <field type="space"/> <field type="password" align="left" variable="truststore.password"> <spec> <pwd txt="Truststore Password:" size="25" set=""/> <pwd txt="Retype Password:" size="25" set=""/> </spec> <validator class="com.izforge.izpack.panels.userinput.validator.PasswordEqualityValidator" txt="Both truststore passwords must match." id="key for the error text"/> <validator class="com.izforge.izpack.panels.userinput.validator.PasswordKeystoreValidator" txt="Could not validate keystore with password and alias provided." id="key for the error text"> <param name="keystoreFile" value="${existing.ssl.truststore}"/> <param name="keystoreType" value="${existing.ssl.truststore.type}"/> <param name="skipValidation" value="${skip.keystore.validation}"/> </validator> </field> <field type="divider" align="bottom"/> </panel> <panel order="2"> <!-- Validate access to signing keystore with information from last panel --> <createForPack name="Main Application" /> <field type="title" txt="Signing Keystore Settings" bold="true" size="1" /> <field type="divider" align="bottom"/> <!-- Skip validation in case customer has something wrong they want to fix later --> <field type="check" align="left" variable="skip.keystore.validation"> <spec txt=" Skip keystore password validation (not recommended)" size="20" true="true" false="false" set="false"/> </field> <field type="divider" align="top"/> <!-- Keystore --> <field type="combo" variable="existing.signing.keystore.type"> <spec txt="Keystore type:" id="existing.signing.keystore.type"> <choice txt="JKS" value="JKS" set="true"/> <!-- <choice txt="PKCS12" value="PKCS12"/> --> </spec> </field> <field type="space"/> <field type="password" align="left" variable="signing.keystore.password"> <spec> <pwd txt="Keystore Password:" size="20" set=""/> <pwd txt="Retype Password:" size="20" set=""/> </spec> <validator class="com.izforge.izpack.panels.userinput.validator.PasswordEqualityValidator" txt="Both signing keystore passwords must match." id="key for the error text"/> <validator class="com.izforge.izpack.panels.userinput.validator.PasswordKeystoreValidator" txt="Could not access keystore with password provided." id="key for the error text"> <param name="keystoreFile" value="${existing.signing.keystore}"/> <param name="keystoreType" value="${existing.signing.keystore.type}"/> <param name="skipValidation" value="${skip.keystore.validation}"/> </validator> </field> <field type="space"/> <!-- Signing Key 1 --> <field type="text" align="left" variable="first.signing.keystore.key.alias"> <spec txt="First Signing Alias:" size="20" set="alias-1"/> </field> <field type="password" align="left" variable="first.signing.password"> <spec> <pwd txt="First Signing Password:" size="20" set=""/> <pwd txt="Retype Password:" size="20" set=""/> </spec> <validator class="com.izforge.izpack.panels.userinput.validator.PasswordEqualityValidator" txt="Both first signing key passwords must match." id="key for the error text"/> <validator class="com.izforge.izpack.panels.userinput.validator.PasswordKeystoreValidator" txt="Could not validate keystore with password and first signing alias provided." id="key for the error text"> <param name="keystoreFile" value="${existing.signing.keystore}"/> <param name="keystoreType" value="${existing.signing.keystore.type}"/> <param name="keystorePassword" value="${signing.keystore.password}"/> <param name="keystoreAlias" value="${first.signing.keystore.key.alias}"/> <param name="skipValidation" value="${skip.keystore.validation}"/> </validator> </field> <field type="space"/> <!-- Signing Key 2 --> <field type="text" align="left" variable="second.signing.keystore.key.alias"> <spec txt="Second Signing Alias:" size="20" set="crate-cmd-alias"/> </field> <field type="password" align="left" variable="second.signing.password"> <spec> <pwd txt="Second Signing Password:" size="20" set=""/> <pwd txt="Retype Password:" size="20" set=""/> </spec> <validator class="com.izforge.izpack.panels.userinput.validator.PasswordEqualityValidator" txt="Both second signing key passwords must match." id="key for the error text"/> <validator class="com.izforge.izpack.panels.userinput.validator.PasswordKeystoreValidator" txt="Could not validate keystore with password and second signing alias provided." id="key for the error text"> <param name="keystoreFile" value="${existing.signing.keystore}"/> <param name="keystoreType" value="${existing.signing.keystore.type}"/> <param name="keystorePassword" value="${signing.keystore.password}"/> <param name="keystoreAlias" value="${second.signing.keystore.key.alias}"/> <param name="skipValidation" value="${skip.keystore.validation}"/> </validator> </field> <field type="divider" align="bottom"/> </panel> </userInput>