java - 如果预期的目标应用程序已经在运行,如何停止 installanywhere 安装程序进程

标签 java windows installanywhere

我们使用 InstallAnywhere 2012 部署了一个 Java 应用程序。

部署的应用程序有一个版本通知机制,弹出一个网站,并鼓励用户下载并启动“新版本”,而“旧版本”可能仍在运行。在此过程中有一个“请退出”对话框,但用户通常不会退出,安装“新版本”的行为通常只会覆盖未锁定的文件,这会导致无法安装,直到用户执行干净重新安装。

如果“旧版本”当前正在运行,我想修改实际安装程序以退出,要求用户先退出它。

IA 提供了一种“执行自定义代码”的方法,它可以指向一个 jar 文件。因此,我创建了一个独立的可运行 jar 程序,如果一切正常,该程序将以代码 0 退出,如果检测到“旧版本”正在运行,则以代码 1 退出,这取决于 tasklist.exe 的返回和一些字符串解析。但是,我似乎无法找到一种方法来根据程序的输出更改安装程序的过程。

有没有其他人尝试在 IA 平台上这样做,如果成功了,你们是怎么做到的?

最佳答案

配置自定义代码操作。保留以下内容作为引用。

public class PreviousVersionCheck extends CustomActionBase{

    @Override
    public void install(InstallerProxy proxy) throws InstallException {

     boolean oldVersionRunning = isOldVersionRunning();//Logic to check if old version running.
     proxy.setVariable("$OLD_VERSION_RUNNING$",oldVersionRunning)
 }
}

在自定义代码操作之后,添加一个“显示消息对话框”。 将操作规则添加为
$OLD_VERSION_RUNNING$ 等于 true

在操作属性中,您有取消和退出选项,点击对话框按钮..

希望这有帮助..

关于java - 如果预期的目标应用程序已经在运行,如何停止 installanywhere 安装程序进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20668928/

相关文章:

java - java检查数组元素是否被填充

windows - Windows 上的 Vagrant 'permission denied'

java - 如何在没有 JDK 的机器上使用 Jarsigner

java - 如何通过java程序监控安装过程?

python - 自动执行重复的键盘操作

linux - Linux 上 .com.zerog.registry.xml 文件的自定义 InstallAnywhere 位置

java - 如何从 .class 文件中知道是否包含调试元数据?

Java,找不到符号错误?

java - spring 核心中的 Autowiring 冲突与 xml 配置

windows - Windows 上的 dotnet 命令可执行文件位于何处?