【问题标题】:Install4j - is there any finalization stage option in case of a failure?Install4j - 如果发生故障,是否有任何最终阶段选项?
【发布时间】:2018-02-25 09:02:46
【问题描述】:

我们使用的是 Install4j 6.1.6。在安装程序上,失败策略操作选项之一是Quit on failure

标记选项时,安装程​​序将尝试回滚以前的更改,但并非总是能够。这种情况的一个例子是,安装程序安装了一个窗口服务,但如果以后发生故障,它将无法通过回滚正确卸载它。

有什么方法可以定义一个“finally”步骤,我可以在其中定义如果失败应该发生什么?

编辑:我知道“运行可执行文件或批处理文件”操作中有一个“回滚可执行文件”属性,但它仍然不会解决我的问题,因为我有很多操作在服务安装后可能会失败。有没有办法在一批动作上定义这样的属性?

【问题讨论】:

    标签: java install4j


    【解决方案1】:

    在回滚的情况下不会运行任何操作块。

    最好的选择可能是使用只有true 作为脚本的“运行脚本”操作,并使用它们的“可选回滚脚本”属性来执行清理。

    如果您需要回滚代码中的操作功能,您可以实例化操作并以编程方式执行它们,如下所示:

    import com.install4j.runtime.beans.actions.misc.RunExecutableAction;
    
    RunExecutableAction action = new RunExecutableAction();
    action.setExecutable(...);
    action.setArguments(...);
    
    action.execute(context);
    

    【讨论】:

    • 这可能有效,但此操作缺少“运行可执行文件或批处理文件”操作中存在的一些重要配置,例如“等待终止”属性。它是否也适用于“运行可执行文件或批处理文件”操作?
    • 谢谢!只是一个小问题 - 为什么你更喜欢“运行脚本”而不是“运行可执行文件或批处理文件”操作?如果我已经有了一些逻辑,为什么要创建另一个新动作而不是使用现有的动作?
    • 在“运行脚本”操作中,有一个在回滚期间调用的“可选回滚脚本”属性。 “运行可执行文件或批处理文件”操作具有“使用回滚可执行文件”属性,但无法在回滚期间执行代码。
    • 不幸的是它对我不起作用。我想我做错了什么。 “运行脚本”操作的“可选回滚脚本”在回滚期间不会执行。我将另一个先前的操作配置为故意失败(失败时退出),但回滚脚本不会做任何事情。我错过了什么吗?
    • “运行脚本”操作必须在导致失败的操作之前,并且在其间不得有任何标记为回滚障碍的操作或屏幕,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2021-12-13
    • 2020-08-20
    • 1970-01-01
    相关资源
    最近更新 更多