Question

How can I validate user input?

How can I validate user input?

Answer:

You can validate user input adding a <validationActionList> to the parameter. For example, adding the following code to the 'installdir' parameter, will prevent the user from selecting a directory that contains a space.

<validationActionList>
   <throwError>
      <text>This directory path can not contain spaces</text>
      <ruleList>
         <compareText>
          <text>${installdir}</text>
          <logic>contains</logic>
          <value> </value>
         </compareText>
      </ruleList>
   </throwError>
</validationActionList>

validation.xml :

<project>
    <shortName>sample</shortName>
    <fullName>Sample Project</fullName>
    <version>1.0</version>
    <installerFilename></installerFilename>
    <readmeFile></readmeFile>
    <licenseFile></licenseFile>
    <wrapLicenseFileText>1</wrapLicenseFileText>
    <leftImage></leftImage>
    <logoImage></logoImage>
    <splashImage></splashImage>
    <defaultLanguage></defaultLanguage>
    <allowLanguageSelection>0</allowLanguageSelection>
    <postInstallationScript></postInstallationScript>
    <postInstallationScriptArguments></postInstallationScriptArguments>
    <showPostInstallationScriptResult>0</showPostInstallationScriptResult>
    <preUninstallationScript></preUninstallationScript>
    <preUninstallationScriptArguments></preUninstallationScriptArguments>
    <allowedLanguages></allowedLanguages>
    <cdromDirectory>${product_shortname}-${product_version}-cdrom</cdromDirectory>
    <cdromDiskSize>700000000</cdromDiskSize>
    <cdromFirstDiskSize>650000000</cdromFirstDiskSize>
    <defaultUnixDirectoryPermissions>755</defaultUnixDirectoryPermissions>
    <defaultUnixFilePermissions>644</defaultUnixFilePermissions>
    <outputDirectory>${installbuilder_install_root}/output</outputDirectory>
    <projectSchemaVersion>1.2</projectSchemaVersion>
    <saveRelativePaths>0</saveRelativePaths>
    <slideShowLoop>1</slideShowLoop>
    <slideShowTiming>5</slideShowTiming>
    <startMenuGroupName>${product_fullname}</startMenuGroupName>
    <style>standard</style>
    <uninstallerDirectory></uninstallerDirectory>
    <validatorProgram></validatorProgram>
    <componentList>
        <component>
            <name>default</name>
            <description>Default Component</description>
            <canBeEdited>1</canBeEdited>
            <detailedDescription></detailedDescription>
            <selected>1</selected>
            <show>1</show>
            <desktopShortcutList/>
            <folderList>
                <folder>
                    <description>Program Files</description>
                    <destination>${installdir}</destination>
                    <name>programfiles</name>
                    <platforms>all</platforms>
                    <shortcutList>
                        <shortcut>
                            <comment>Uninstall</comment>
                            <exec>${installdir}/uninstall</exec>
                            <icon></icon>
                            <name>Uninstall ${product_fullname}</name>
                            <path>${installdir}</path>
                            <platforms>all</platforms>
                            <windowsExec>${installdir}/uninstall.exe</windowsExec>
                            <windowsExecArgs></windowsExecArgs>
                            <windowsIcon></windowsIcon>
                            <windowsPath>${installdir}</windowsPath>
                        </shortcut>
                    </shortcutList>
                </folder>
                <folder>
                    <description>Program Files</description>
                    <destination>${installdir}</destination>
                    <name>programfileslinux</name>
                    <platforms>linux</platforms>
                </folder>
                <folder>
                    <description>Program Files</description>
                    <destination>${installdir}</destination>
                    <name>programfileswindows</name>
                    <platforms>windows</platforms>
                </folder>
            </folderList>
            <startMenuShortcutList>
                <startMenuShortcut>
                    <comment>Uninstall ${product_fullname}</comment>
                    <name>Uninstall ${product_fullname}</name>
                    <windowsExec>${installdir}/uninstall.exe</windowsExec>
                    <windowsExecArgs></windowsExecArgs>
                    <windowsIcon></windowsIcon>
                    <windowsPath>${installdir}/</windowsPath>
                </startMenuShortcut>
            </startMenuShortcutList>
        </component>
    </componentList>
    <customLanguageFileList/>
    <fileList/>
    <parameterList>
        <directoryParameter>
            <name>installdir</name>
            <title></title>
            <description>Installer.Parameter.installdir.description</description>
            <explanation>Installer.Parameter.installdir.explanation</explanation>
            <value></value>
            <default>${platform_install_prefix}/${product_shortname}-${product_version}</default>
            <allowEmptyValue>0</allowEmptyValue>
            <ask>yes</ask>
            <cliOptionName>prefix</cliOptionName>
            <leftImage></leftImage>
            <mustBeWritable>yes</mustBeWritable>
            <mustExist>0</mustExist>
            <width>40</width>
            <validationActionList>
              <throwError>
                <text>This directory path can not contain spaces</text>
                <ruleList>
                  <compareText>
                   <text>${installdir}</text>
                   <logic>contains</logic>
                   <value> </value>
                  </compareText>
                </ruleList>
             </throwError>
            </validationActionList> 
        </directoryParameter>
    </parameterList>
    <platformOptionsList/>
    <postInstallationActionList/>
    <preBuildActionList/>
    <preInstallationActionList/>
    <preUninstallationActionList/>
    <slideShowImageList/>
</project>