2013-12-18 33 views
1

我们部署使用的InstallAnywhere 2012如何制止InstallAnywhere的安装过程中,如果预定目标应用程序已经运行

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

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

IA提供了一种“执行自定义代码”的方法,可以指向一个jar文件。因此,我创建了一个独立的runnable jar程序,如果全部清除,则以代码0退出;如果检测为“旧版本”,则代码为1,依赖于tasklist.exe的返回和某些字符串分析。但是,我似乎无法找到一种方法来根据我的程序输出来改变安装程序的过程。

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

回答

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

自定义代码操作后,添加一个“显示消息对话框”。 添加规则来进行行动
$ OLD_VERSION_RUNNING $等于true

在操作属性,必须取消和退出选项,对的台词点击按钮..

希望这有助于..

+0

我这样做,它*主要*工作,谢谢!但是,出现的窗格可以选择“下一步”或“取消”,而理想情况下,我希望“下一步”被禁用或更改为“重试”。但至少现在我有一个指向谷歌的东西:) –

相关问题