2016-03-05 114 views
1

在linux中,我希望我的updater运行脚本文件进行回滚操作(实际上是将某些文件权限更改为另一个用户而不是根目录)。所以,我能想到的可能途径有:Install4j:运行用于回滚操作的批处理文件/脚本文件

  1. 使用行为:“运行可执行文件或批处理文件”在执行回滚和运行脚本,因为它使用的root权限。

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

  3. 使用回滚操作里面的ProcessBuilder(我已经用于正常操作)

但形成install4j文件我找不到任何方法,可以帮助我做到这一点。我正在阅读关于InstallerContext.runElevated的文档,但它看起来并不是我正在寻找的东西。

UPDATE:

原来直接运行使用ProcessBuilder在最大提升权限(root)的“运行脚本”的动作脚本,使完成任务。但是我仍然有兴趣知道事件监听器是否有可能从中触发一个动作。

+0

你为什么不能使用“运行可执行文件或批处理文件”操作及其“使用回滚可执行文件”属性? –

+0

但是只对特定的“运行可执行文件或批处理文件”操作有效吗?对于我的情况,我设置了一个执行回滚函数的动作侦听器,我通常为任何动作定义回滚函数。我想在这里实现的是以某种方式在回滚函数 – ShaDooW

回答

1

在事件侦听器的代码,你可以像这样的编程方式运行操作:

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() { 
     return action.execute(context); 
    } 
}, true); 
+0

真棒运行脚本!它将以最大特权执行? – ShaDooW

+0

看我的编辑... –