Install4j 64位安装程序不会卸载以前的32位版本

时间:2019-08-19 12:50:59

标签: java install4j

我们将应用程序从32位更改为64位,并增加了最新版本,但是现在安装程序无法识别何时安装了先前版本,因此在安装新版本时不会取消安装先前版本

示例: 应用程序版本1.0.0 32位 应用程序版本2.0.0 32位 应用版本3.0.0 64位

已安装1.0.0版应用程序并执行了2.0.0版安装程序->已卸载1.0.0版应用程序并已安装2.0.0版。

已安装2.0.0版应用程序,并执行了3.0.0版安装程序-> 应用版本2.0.0未触及,版本3.0.0已安装。

我们没有更改应用程序ID。

版本2.0.0安装程序是使用Install4j 6.1.6生成的,而版本3.0.0是使用7.0.10生成的

1 个答案:

答案 0 :(得分:1)

以前的版本存储在注册表中,从install4j 8.0开始,64位安装程序不会检查32位注册表是否有以前的安装,以防止64位安装最终出现在32位程序文件目录中。

要卸载32位安装,请在安装程序的“启动”节点上添加“设置变量”操作,并使用变量名“ previousDir”和脚本

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

然后将“安装目录”属性设置为

的“执行先前的卸载程序”操作添加到“安装”屏幕之前的“安装文件”操作之前
${installer:previousDir}

和条件表达式

context.getVariable("previousDir") != null