2016-03-10 2 views
0

В процессе преобразования из 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 

Почему я получаю это, в то время как, казалось бы, допустил это? Насколько мне известно, как мне повторить поведение, которое было ранее на месте?

ответ

2

Вы не указали определение пользовательских действий, но сообщение указывает, что оно отложено и должно быть упорядочено по мере указания сообщения. Возможно, оригинальный тип был немедленным.

Если вы имеете в виду ранее установленные версии вашего продукта (или, фактически, любого продукта на базе MSI, для которого вы знаете UpgradeCode), нет необходимости в каком-либо коде. Если вы хотите использовать элемент WiX MajorUpgrade, вы можете обнаружить предыдущие версии, потому что будет установлено свойство WIX_UPGRADE_DETECTED, и вы можете использовать это как условие запуска или что-то, что вы планируете делать. Или используйте элементы Upgrade and UpgradeVersion для обнаружения предыдущих версий и диапазонов версий. Из того, что вы сказали, нет необходимости запускать код. Просто используйте свойства поиска обновлений и покажите диалоги или ошибки или что-то еще.

+0

Я отредактировал оригинальное сообщение, чтобы показать CA defs. Что касается вашего анализа того, нужно ли мне «запускать код» ... Я понятия не имею, о чем вы говорите (пока)! LOL Код проверяет конкретные команды в hklm \ m \ w \ cv \ uninstall. Я просто портирую код, который предшествовал мне, и эта часть выполнена; моя единственная забота заключается в том, чтобы упорядочить его в том же месте, что и версия installshield. – Jon

+0

И ... «отсроченный» был виновником. Почему это изменило ситуацию? Является ли шаг ValidateProductID не частью отложенной последовательности? – Jon

+0

«Отложенная» часть установки - это часть, которая фактически изменяет систему, последовательность выполнения между InstallInitialize и InstallFinalize, и все отложенные пользовательские действия должны находиться в этом диапазоне. – PhilDW

Смежные вопросы