代码之家  ›  专栏  ›  技术社区  ›  ShaDooW

Install4j:为回滚操作运行批处理文件/脚本文件

  •  2
  • ShaDooW  · 技术社区  · 10 年前

    在linux中,我希望我的更新程序运行一个用于回滚操作的脚本文件(实际上是将一些文件权限更改给另一个用户,而不是根用户)。因此,我可能想到的方法是:

    1. 使用操作:在执行回滚时“运行可执行文件或批处理文件”,并使用根权限运行脚本。

    2. 运行脚本或调用的任何方法都已创建“运行可执行文件或批处理文件”,具有根权限 InstallerEventListener 执行回滚操作时。

    3. 使用 ProcessBuilder 在回滚操作中(我用于正常操作)

    但是在install4j文档中,我找不到任何方法可以帮助我完成这项工作。我正在阅读 InstallerContext.runElevated 但这似乎不是我要找的东西。

    更新:

    结果是直接使用 进程生成器 在“运行脚本”中,具有最大提升权限(root)的操作完成任务。但我仍然想知道事件监听器是否有可能从中触发操作。

    1 回复  |  直到 10 年前
        1
  •  2
  •   Ingo Kegel    7 年前

    在事件侦听器代码中,您可以以编程方式运行如下操作:

    import com.install4j.runtime.beans.actions.misc.*;
    
    RunExecutableAction action = new RunExecutableAction();
    action.setExecutable(...);
    action.setWorkingDirectory(...);
    // other configuration
    action.execute(context);
    

    要以最大权限执行,请执行以下操作:

    context.runElevated(new RemoteCallable() {
        @Override
        public Serializable execute() {
            RunExecutableAction action = new RunExecutableAction();
            action.setExecutable(...);
            action.setWorkingDirectory(...);
            // other configuration
            return action.execute(context);
        }
    }, true);