Динамически меняющиеся CA в последовательности установки WIX
Мне было бы очень полезно решить, какие пользовательские действия я вызываю в определенные моменты моей установки, в зависимости от свойств, которые я установил в установщике.
Например; если я хочу использовать отдельные библиотеки DLL для взаимодействия с различными версиями SQL (SSRS 2005/2008R2, чтобы быть конкретным).
Предположим, что действия, определяющие, какой ЦС следует запускать (выясняя, на какую версию SSRS указывает установщик), выполняются с "немедленным", а ЦС, которые могут выполняться или не выполняться, зависят от этого результата и "откладываются".
Как я могу изменить, какой отложенный CA я выполняю в определенных частях установки, динамически, во время установки?.. Это вообще возможно?
((WiX 2.0 предпочтительнее, но ответы более высокой версии приемлемы))
1 ответ
В управляемых данными настраиваемых действиях, которые изменяют состояние компьютера (которое звучит так, как будто вы пишете), немедленное настраиваемое действие должно прочитать таблицы и / или свойства в MSI, чтобы запланировать соответствующие отложенные настраиваемые действия для внесения изменений в машину.
Для этого все пользовательские действия определены (CustomAction
элементы в ваших файлах.wxs), но запланированы только немедленные пользовательские действия (Custom/@Action
элементы в InstallExecuteSequence
). Немедленные пользовательские действия смотрят, принимают решения, устанавливают CustomActionData
для отложенного настраиваемого действия, затем вызовите ::MsiDoAction()
с именем соответствующего отложенного настраиваемого действия, чтобы добавить отложенное настраиваемое действие в сценарий установки на этом этапе. Позже, когда установщик Windows выполнит сценарий установки (отложенная часть установки), отложенные пользовательские действия начнут действовать со всеми их данными.
Пользовательские действия набора инструментов WiX делают это постоянно, если вы ищете примеры.