我们将应用程序从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生成的
答案 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