Последовательность пользовательских действий WIX - PullRequest
3 голосов
/ 22 декабря 2011

Я определил несколько пользовательских действий в моей настройке WIX, и эти действия вызывают сторонние EXE-файлы, от которых зависит наше приложение. Пользователь решает установить или игнорировать эти сторонние приложения из дерева функций. Мои CustomAction и двоичные теги выглядят так:

<CustomAction Id='NL220_Action' BinaryKey='NL220EXE' Return='asyncWait'  />
<Binary Id="NICEXE" SourceFile="..\NL220.exe" />

<CustomAction Id='NIC_Action' BinaryKey='NICEXE' Return='asyncWait'  />
<Binary Id="NICEXE" SourceFile="..\NIC.exe" />

Кроме того, мой тег InstallExecuteSequence выглядит следующим образом:

<InstallExecuteSequence>
    <Custom Action="NL220_Action" After="InstallFinalize"><![CDATA[(&Optional_NL220=3)]]></Custom>
    <Custom Action="NIC_Action" After="NL220_Action"><![CDATA[(&Optional_NIC=3)]]></Custom>
</InstallExecuteSequence>

Все работает нормально: пользователь может выбрать, какие сторонние установочные пакеты запускать, и они запускаются после завершения установки. Проблема заключается в том, что если пользователь выбирает оба сторонних установщика, они запускаются одновременно, игнорируя атрибут After = "NL220_Action" второго настраиваемого действия. Есть идеи, почему это так?

1 Ответ

2 голосов
/ 22 декабря 2011

Per Параметры обработки возврата настраиваемого действия , ожидание asyncWait происходит в конце последовательности. Использование этого значения означает, что вам нужно, чтобы действие было успешным, но вам абсолютно все равно, когда оно будет успешным. Если бы он ожидал завершения настраиваемого действия, прежде чем продолжить, он был бы синхронным. Если вам нужно дождаться завершения первого, прежде чем запускать второе, то либо вам нужно сделать первое действие синхронным, либо, возможно, объединить оба действия в одно асинхронное действие, которое само выполняет два подэтапа в упорядоченной последовательности.

...