Install4j - 使用不同的应用程序ID

时间:2017-12-22 14:55:37

标签: java install4j

我们目前正在使用不同的随机生成的应用程序ID&发布的每个新产品版本的安装目录。例如:

  • 版本10的应用程序ID为12345& “ProductName10”目录
  • 版本11的应用程序ID为98765& “ProductName11”目录

我们选择使用单独的ID&每个新版本的安装目录,允许用户演示新版本而无需删除以前的版本。如果我们使用相同的ID,它将覆盖以前的版本并使其许可证无效。

但是,对于知道要升级的用户来说,安装新版本然后找到&运行以前版本的卸载程序。我们希望在安装过程中提示用户选择卸载以前的版本(如果找到)。

我们已经在Install4j设置中寻找了一些预先构建的选项来允许这个但是还没有找到一个好的解决方案。基本上我们期望的工作流程如下:

  1. 显示第一个标准欢迎屏幕
  2. 用户选择我们的自定义选项并开始安装
  3. 安装期间:首先检查以前的版本是否存在(使用 已知的应用程序ID或其他方法),如果是,则显示消息 用户确认删除以前的版本
  4. 如果用户选择“是”,请在之前的程序中运行卸载程序 完成当前新程序的安装。
  5. 最终我有两个与此相关的问题:

    1. 我们完成所需工作流程的最佳方式是什么?
    2. 如果没有简单的方法,还有另一种方法来设置我们的 应用程序版本,以便我们可以有一个类似的进程允许 我们有单独的应用程序版本,并以某种方式自动卸载 以前的版本?
    3. 注意:我们的解决方案还需要与Windows,Mac和& Linux的

      谢谢!

1 个答案:

答案 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