WixSharp - 指定在有多个时运行ManageAction的顺序

时间:2017-12-20 19:19:42

标签: action wixsharp

我一直在使用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 ......?

谢谢,

瑞克

1 个答案:

答案 0 :(得分:1)

是的!

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

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

希望这会有所帮助。