繁体   English   中英

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM