Here are the steps for creating an InstallAnywhere CustomCode (plugin) via NetBeans.
1. NetBeans IDE creates a new "Java Application" project - CompareVersionString, with com.qxc.ia.customcode.actions.CompareVersionString Main Class
CompareVersionString.java
package com.qxc.ia.customcode.actions;
import com.zerog.ia.api.pub.*;
import java.util.Arrays;
import java.util.List;
/**
 * CompareString.java
 *
 *
 */
public class CompareVersionString extends CustomCodeAction {
    /**
     *  This is the method that is called at install-time.  The InstallerProxy
     *  instance provides methods to access information in the installer,
     *  set status, and control flow.
     */
    public void install(InstallerProxy ip) throws InstallException {
        try {
            String myVar1 = ip.substitute("$OLD_VERSION_STR$");
            String myVar2 = ip.substitute("$NEW_VERSION_STR$");
            Integer myResultVariable = null;
            if (getComparisonResults(myVar1, myVar2) == 1) {
                myResultVariable = 1;
            } else if (getComparisonResults(myVar1, myVar2) == -1) {
                myResultVariable = -1;
            } else if (getComparisonResults(myVar1, myVar2) == 0) {
                myResultVariable = 0;
            }
            ip.setVariable("$COMPARISON_RESULT$", myResultVariable);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     *  This is the method that is called at uninstall-time.  The DataInput
     *  instance provides access to any information written at install-time
     *  with the instance of DataOutput provided by UninstallerProxy.getLogOutput().
     */
    public void uninstall(UninstallerProxy up) throws InstallException {
    }
    /**
     *  This method will be called to display a status message during the
     *  installation.
     */
    public String getInstallStatusMessage() {
        return "Comparing string";
    }
    /**
     *  This method will be called to display a status message during the
     *  uninstall.
     */
    public String getUninstallStatusMessage() {
        return "Comparing string";
    }
    public static int getComparisonResults(String oldString, String newVersion) {
        oldString = oldString.replaceAll("\\s", "");
        newVersion = newVersion.replaceAll("\\s", "");
        String[] a1 = oldString.split("\\.");
        String[] a2 = newVersion.split("\\.");
        List<String> list1 = Arrays.asList(a1);
        List<String> list2 = Arrays.asList(a2);
        int i = 0;
        while (true) {
            Double digit1 = null;
            Double digit2 = null;
            try {
                digit1 = Double.parseDouble(list1.get(i));
            } catch (IndexOutOfBoundsException e) {
            }
            try {
                digit2 = Double.parseDouble(list2.get(i));
            } catch (IndexOutOfBoundsException e) {
            }
            if (digit1 != null && digit2 != null) {
                if (digit1.doubleValue() > digit2.doubleValue()) {
                    return 1;
                } else if (digit1.doubleValue() < digit2.doubleValue()) {
                    return -1;
                }
            } else if (digit2 == null && digit1 != null) {
                if (digit1.doubleValue() > 0) {
                    return 1;
                }
            } else if (digit1 == null && digit2 != null) {
                if (digit2.doubleValue() > 0) {
                    return -1;
                }
            } else {
                break;
            }
            i++;
        }
        return 0;
    }
}
2. Under Source Packages, add help.htm and customcode.properties
help.htm:
<!--
<html>
<head>
<title>Plugin</title>
</head>
<body>
<b>Custom Code Action: CompareVersionString</b>
<br>
Classname: com.qxc.ia.customcode.actions.CompareVersionString
<br>
<br>
<b>Description:</b> This class compares dot delimited two version strings.
<br>
<br>
<b>Input InstallAnywhere Variables:</b>
<br>
<br>
$OLD_VERSION_STR$: contains dot delimited version string (i.e. 1.1.0.0).
<br>
$NEW_VERSION_STR$: contains dot delimited version string (i.e. 1.1.0.1).
<br>
<br>
<b>Output InstallAnywhere Variables:</b>
<br>
<br>
$COMPARISON_RESULT$: contains comparison result
<br>
(i.e.
<br>
"1" for $OLD_VERSION_STR$ is greater than $NEW_VERSION_STR$
<br>
"-1" for $OLD_VERSION_STR$ is less than $NEW_VERSION_STR$
<br>
"0" for $OLD_VERSION_STR$ is equal to $NEW_VERSION_STR$
<br>
) .
<br>
</body>
</html>
-->
customcode.properties:
plugin.main.class=com.qxc.ia.customcode.actions.CompareVersionString
plugin.name=CompareVersionString
plugin.type=action
plugin.available=preinstall,install,postinstall,preuninstall,postuninstall
property.OLD_VERSION_STR=
property.NEW_VERSION_STR=

 



























