Gregor G.
Gregor G.

Reputation: 189

Install4j 64-bit Setup doesn't uninstall previous 32-bit Version

We changed our Application from 32-bit to 64-bit with the last version increase but now our installer doesn't recognize when there is a previous version installed, so it doesn't unistall the previous version when installing the new one.

Example: App version 1.0.0 32-bit App version 2.0.0 32-bit App version 3.0.0 64-bit

App version 1.0.0 is installed and version 2.0.0 installer is executed -> App version 1.0.0 gets uninstalled and version 2.0.0 installed.

App version 2.0.0 is installed and version 3.0.0 installer is executed -> App version 2.0.0 is not touched and version 3.0.0 gets installed.

We didn't change the Application id.

Version 2.0.0 Setup was generated with Install4j 6.1.6 and Version 3.0.0 gets generated with 7.0.10

Upvotes: 2

Views: 251

Answers (1)

Ingo Kegel
Ingo Kegel

Reputation: 48005

The previous version is stored in the registry and as of install4j 8.0 the 64-bit installer does not check the 32-bit registry for previous installations to prevent a 64-bit installation ending up in the 32-bit program files directory.

To uninstall the 32-bit installation, add a "Set a variable" action to the "Startup" node of the installer, with the variable name "previousDir" and the script

if (!context.isUpdateInstallation()) {
    ApplicationRegistry.ApplicationInfo[] infos = 
        ApplicationRegistry.getApplicationInfoById(context.getApplicationId());
    if (infos.length > 0) {
        return infos[0].getInstallationDirectory().getPath();
    }
}
return null;

Then add an "Execute previous uninstaller" action to the "Installation" screen before the "Install files" action with the "Installation directory" property set to

${installer:previousDir}

and a condition expression of

context.getVariable("previousDir") != null

Upvotes: 2

Related Questions