Question

Q: How do I make the installer perform a string substitution as part of the installation?

How do I make the installer perform a string substitution as part of the installation?

Answer:

You can perform string substitutions with the substitution action. This action allows you to specify pattern/value pairs that will be substituted in certain files. It takes a list of glob file patterns separated by ';' and a list of the pattern/value pairs.

       <substitute>
                 <files>*/launcher/launchMyJavaApp.sh;*/bin/*.sh</files>
                 <substitutionList>
                   <substitution>
                     <pattern>@@INSTALLDIR@@</pattern>
                     <value>${installdir}</value>
                   </substitution>
                   <substitution>
                     <pattern>@@JAVADIR@@</pattern>
                     <value>${installdir}/jre</value>
                   </substitution>
                 </substitutionList>
               </substitute>
        

Suppose the user sets /home/user/application as installdir and the original launchMyJavaApp.sh looked like:

#!/bin/sh
        export MYAPPDIR=@@INSTALLDIR@@
        @@JAVADIR@@/bin/java com.some.class.Name
        

Then the script will look like the following after installation:

#!/bin/sh
        export MYAPPDIR=/home/user/application
        /home/user/application/jre/bin/java com.some.class.Name
        

You can find more information about this action in Actions section of the product documentation included with InstallBuilder.