我一直在使用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 ......?
谢谢,
干草堆
就在这里!
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个参数When
和Step
。在这种情况下,第一个ManagedAction
将在步骤InstallFinalize之前执行。第二个ManagedAction
将在PreviousAction之后执行。这意味着在数组中定义的上一个操作之后。与最后的ManagedAction
相同。这就是我想出指定订单的方式。
希望这可以帮助。