WixSharp - указание порядка для запуска ManageAction при наличии нескольких

Я использовал 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 ответ

Да, есть!

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 будет выполнен после предыдущего действия. Это означает после предыдущего действия, определенного в массиве. То же самое с последним ManagedAction, Вот так я и решил определить заказ.

Надеюсь это поможет.

Другие вопросы по тегам