2

我使用 ManagedActionand 和 ElevatedManagedAction 已经有一段时间了,一切都很好;但是,我现在需要按特定顺序执行操作,或者至少确保在必要时首先/最后执行操作。

我假设操作是按照输入的顺序执行的,例如:

 Project project =
    new Project("My Project",
        new Property("SOME_PROPERTY", "ABC"),
        new Dir(@"%ProgramFiles%\blah blah blah",
            new File(...),
            ...

        new ManagedAction(CustomActions.FirstAction, ...) {},
        ...

        new ManagedAction(CustomActions.LastAction, ...) {}
        ...

我有很多动作,然后想,嗯......,也许是自下而上,所以我把我想先运行的东西放在底部。这并没有改变顺序,所以我想可能是按字母顺序进行的,并做了一些测试,果然这就是它所做的。

那么,除了为操作名称添加前缀(如 A01_FirstAction、A02_LastAction ...)之外,还有其他方法可以指定调用的顺序操作吗?

谢谢,

瑞克

4

1 回答 1

2

就在这里!

project.Actions = new WixSharp.Action[] {
  new ManagedAction(CustomActions.MyFirstCustomAction,Return.check, When.Before, Step.InstallFinalize, Condition.NOT_Installed),
  new ManagedAction(CustomActions.MySecondCustomAction,Return.check, When.After, Step.PreviousAction, Condition.NOT_Installed),
  new ManagedAction(CustomActions.MyThirdCustomAction,Return.check, When.After, Step.PreviousAction, Condition.NOT_Installed)
}

只需看一下 2 个参数WhenStep. 在这种情况下,第一个ManagedAction将在步骤InstallFinalize之前执行。第二个将在PreviousAction之后执行。这意味着在数组中定义的上一个动作之后。最后一个也一样。这就是我想出指定订单的方式。ManagedActionManagedAction

希望这可以帮助。

于 2018-09-18T14:24:24.480 回答