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



随着最新版本的增加,我们将应用程序从 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 生成的

以前的版本存储在注册表中,从 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

最新更新