我一直在使用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 ......?
谢谢,
瑞克
答案 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)
}
只需看一下两个参数When
和Step
。在这种情况下,第一个ManagedAction
将在 InstallFinalize 步骤之前执行。第二个ManagedAction
将在 PreviousAction 之后执行。这意味着在数组中定义的上一个动作之后。最后一个ManagedAction
也是如此。这就是我想指定订单的方式。
希望这会有所帮助。