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