我们目前正在使用不同的随机生成的应用程序ID&发布的每个新产品版本的安装目录。例如:
我们选择使用单独的ID&每个新版本的安装目录,允许用户演示新版本而无需删除以前的版本。如果我们使用相同的ID,它将覆盖以前的版本并使其许可证无效。
但是,对于知道要升级的用户来说,安装新版本然后找到&运行以前版本的卸载程序。我们希望在安装过程中提示用户选择卸载以前的版本(如果找到)。
我们已经在Install4j设置中寻找了一些预先构建的选项来允许这个但是还没有找到一个好的解决方案。基本上我们期望的工作流程如下:
最终我有两个与此相关的问题:
注意:我们的解决方案还需要与Windows,Mac和& Linux的
谢谢!
答案 0 :(得分:1)
如果设置了“安装目录”属性,则可以从任何目录卸载“执行以前的卸载程序”操作,并且取消选择“仅当找到相同的应用程序ID”属性时。
要查找安装了具有不同应用程序ID的先前版本的位置,请使用
ApplicationRegistry.ApplicationInfo[] applicationInfos =
ApplicationRegistry.getApplicationInfoById("<application ID of previous version>");
if (applicationInfos.length > 1) {
context.setVariable("uninstallDir",
applicationInfos[0].getInstallationDirectory().getPath());
}
在“运行脚本”操作中。然后,您可以将“执行以前的卸载程序”操作的“安装目录”属性设置为
${installer:uninstallDir}
及其“条件表达”到
context.getVariable("uninstallDir") != null