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

问题描述 投票:2回答:1

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

谢谢,

干草堆

action wixsharp
1个回答
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)
}

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

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.