Install4j - 卸载具有不同应用程序 ID 的旧应用程序
Install4j - Uninstall old application with different Application ID
我们目前为每个发布的新产品版本使用不同的随机生成的应用程序 ID 和安装目录。例如:
- 版本 10 的应用程序 ID 为 12345,目录为 "ProductName10"
- 版本 11 的应用程序 ID 为 98765,目录为 "ProductName11"
我们选择为每个新版本使用单独的 ID 和安装目录,以允许用户试用新版本而无需删除以前的版本。如果我们使用相同的 ID,它将覆盖以前的版本并使他们的许可证失效。
但是,对于知道自己想要升级的用户来说,安装新版本然后找到 & 运行 以前版本的卸载程序是一个 2 步过程。我们想要的是在安装过程中提示用户选择卸载以前的版本(如果找到)。
我们已经在 Install4j 设置中寻找一些预建选项来允许这样做,但没有找到好的解决方案。基本上我们想要的工作流程如下:
- 显示第一个标准欢迎屏幕
- 用户选择我们的自定义选项并开始安装
- 在安装过程中:首先检查是否存在以前的版本(使用
已知应用程序 ID 或其他方法),如果是,则显示消息
确认删除以前版本的用户
- 如果用户选择“是”运行 之前程序的卸载程序
完成当前新程序的安装。
最终我有2个与此相关的问题:
- 我们完成所需工作流程的最佳方式是什么?
- 如果没有简单的方法,是否有其他方法来设置我们的
应用程序版本,以便我们可以有一个类似的过程来允许
我们有单独的应用程序版本并以某种方式自动卸载
以前的版本?
注意:我们的解决方案还需要与 Windows、Mac 和 Linux
交叉兼容
谢谢!
如果设置 "Installation directory" 属性 并取消选择 "Only if the same application ID is found" 属性,则有一个 "Execute previous uninstaller" 操作可以从任何目录卸载。
要找出具有不同应用程序 ID 的先前版本的安装位置,请使用
ApplicationRegistry.ApplicationInfo[] applicationInfos =
ApplicationRegistry.getApplicationInfoById("<application ID of previous version>");
if (applicationInfos.length > 1) {
context.setVariable("uninstallDir",
applicationInfos[0].getInstallationDirectory().getPath());
}
在 "Run script" 动作中。然后可以将"Execute previous uninstaller"动作的"Installation directory"属性设置为
${installer:uninstallDir}
及其"Condition expression"到
context.getVariable("uninstallDir") != null
我们目前为每个发布的新产品版本使用不同的随机生成的应用程序 ID 和安装目录。例如:
- 版本 10 的应用程序 ID 为 12345,目录为 "ProductName10"
- 版本 11 的应用程序 ID 为 98765,目录为 "ProductName11"
我们选择为每个新版本使用单独的 ID 和安装目录,以允许用户试用新版本而无需删除以前的版本。如果我们使用相同的 ID,它将覆盖以前的版本并使他们的许可证失效。
但是,对于知道自己想要升级的用户来说,安装新版本然后找到 & 运行 以前版本的卸载程序是一个 2 步过程。我们想要的是在安装过程中提示用户选择卸载以前的版本(如果找到)。
我们已经在 Install4j 设置中寻找一些预建选项来允许这样做,但没有找到好的解决方案。基本上我们想要的工作流程如下:
- 显示第一个标准欢迎屏幕
- 用户选择我们的自定义选项并开始安装
- 在安装过程中:首先检查是否存在以前的版本(使用 已知应用程序 ID 或其他方法),如果是,则显示消息 确认删除以前版本的用户
- 如果用户选择“是”运行 之前程序的卸载程序 完成当前新程序的安装。
最终我有2个与此相关的问题:
- 我们完成所需工作流程的最佳方式是什么?
- 如果没有简单的方法,是否有其他方法来设置我们的 应用程序版本,以便我们可以有一个类似的过程来允许 我们有单独的应用程序版本并以某种方式自动卸载 以前的版本?
注意:我们的解决方案还需要与 Windows、Mac 和 Linux
交叉兼容谢谢!
如果设置 "Installation directory" 属性 并取消选择 "Only if the same application ID is found" 属性,则有一个 "Execute previous uninstaller" 操作可以从任何目录卸载。
要找出具有不同应用程序 ID 的先前版本的安装位置,请使用
ApplicationRegistry.ApplicationInfo[] applicationInfos =
ApplicationRegistry.getApplicationInfoById("<application ID of previous version>");
if (applicationInfos.length > 1) {
context.setVariable("uninstallDir",
applicationInfos[0].getInstallationDirectory().getPath());
}
在 "Run script" 动作中。然后可以将"Execute previous uninstaller"动作的"Installation directory"属性设置为
${installer:uninstallDir}
及其"Condition expression"到
context.getVariable("uninstallDir") != null