В процессе преобразования из installshield в wix я переношу пользовательские действия.Wix scheduling custom actions
Первый - для определения ранее установленных версий и появления сообщения, если таковые обнаружены. Наверное, подсказки ранее не отслеживались должным образом.
Внутри установочного экрана, похоже, у них был ЦС, запланированный после ValidateProductID. Я попытался сделать то же самое:
<CustomAction Id="CA_CheckPreviousVersions.SetProperty" Property="CA_CheckPreviousVersions" Value="ERROR_UNINSTALL_VERSION=$(var.ERROR_UNINSTALL_VERSION)" />
<CustomAction Id="CA_CheckPreviousVersions" DllEntry="CheckPreviousVersions" Execute="deferred" BinaryKey="LunaClientCustomActions_dll" />
<InstallExecuteSequence>
...
<Custom Action="CA_CheckPreviousVersions.SetProperty" After="ValidateProductID" />
<Custom Action="CA_CheckPreviousVersions" After="CA_CheckPreviousVersions.SetProperty" >NOT Installed AND NOT PATCH</Custom>
</InstallExecuteSequence>
За исключением, я получаю неприятную предупреждение:
error LGHT0204: ICE77: CA_CheckPreviousVersions is a in-script custom action. It must be sequenced in between the InstallInitialize action and the InstallFinalize action in the InstallExecuteSequence table
Почему я получаю это, в то время как, казалось бы, допустил это? Насколько мне известно, как мне повторить поведение, которое было ранее на месте?
Я отредактировал оригинальное сообщение, чтобы показать CA defs. Что касается вашего анализа того, нужно ли мне «запускать код» ... Я понятия не имею, о чем вы говорите (пока)! LOL Код проверяет конкретные команды в hklm \ m \ w \ cv \ uninstall. Я просто портирую код, который предшествовал мне, и эта часть выполнена; моя единственная забота заключается в том, чтобы упорядочить его в том же месте, что и версия installshield. – Jon
И ... «отсроченный» был виновником. Почему это изменило ситуацию? Является ли шаг ValidateProductID не частью отложенной последовательности? – Jon
«Отложенная» часть установки - это часть, которая фактически изменяет систему, последовательность выполнения между InstallInitialize и InstallFinalize, и все отложенные пользовательские действия должны находиться в этом диапазоне. – PhilDW