如果预期目标应用程序已在运行,如何暂停installanywhere安装程序进程

时间:2013-12-18 21:36:47

标签: java windows installanywhere

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

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

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

IA提供了一种“执行自定义代码”的方法,可以指向jar文件。所以我创建了一个独立的可运行jar程序,如果一切都清楚就退出代码0,或者如果检测到“旧版本”正在运行则代码1,依赖于tasklist.exe的返回和一些字符串解析。但是,我似乎无法根据程序的输出找到改变安装程序的方法。

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

1 个答案:

答案 0 :(得分:2)

配置自定义代码操作。请保留以下内容作为参考。

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)
 }
}

自定义代码操作后,添加“显示消息Dialoge”。 将操作规则添加为
    $ OLD_VERSION_RUNNING $ equals true

在动作属性中,您可以点击“拨号”按钮取消和退出选项..

希望这会有所帮助..