Установщик WIX: значительное обновление до нового установочного каталога

Мы используем WiX для сборки инсталляционных пакетов. Я новичок в технологии WiX и в настоящее время пытаюсь выполнить серьезное обновление установленного приложения, но в другом каталоге, чем предыдущая версия. Например, если v2 продукта был установлен в Program Files (x86)\Old_path\Product, я хотел бы установить обновленную версию v3 в другую папку C:\Program Files (x86)\New_path\Product.

Я изменил свойство msi INSTALLDIR, чтобы иметь новый путь к местоположению. Мы попытались изменить InstallExecuteSequence, добавили RemoveRegistryValues ​​после InstallValidate, чтобы удалить сохраненный старый путь в реестре, и сделали WriteRegistryValues, чтобы добавить новые значения реестра.

<InstallExecuteSequence>
....
    <Custom Action="HxPrepare" Before="InstallValidate">NOT Installed</Custom>
    <RemoveRegistryValues After="InstallValidate" />
    <WriteRegistryValues />
   <Custom Action="HxFinalize" Before="StartServices">NOT Installed</Custom>
....
<InstallExecuteSequence />

Но я не вижу изменений в процессе установки, и новые файлы копируются только в старый каталог. Могу ли я узнать, откуда этот старый путь получен даже после изменения пути INSTALLDIR? Как мы можем сделать это изменение пути установки во время крупных обновлений.

Ответ на комментарий PhilDW:

Это правильный процесс для серьезного обновления. Все старые версии файлов удалены. Но, тем не менее, в нашем приложении нет диалогового окна просмотра во время обновления, чтобы запросить новый / обязательный каталог установки. Это просто берет путь предыдущей версии. Это потому, что сначала нам нужно сделать резервную копию важных файлов настроек / пользовательских настроек более ранней версии, а затем использовать их в обновленной версии. После того, как эта резервная копия сохранена, я пытаюсь переместить эти файлы резервной копии на новый путь и позже начать копировать новые файлы. Я делаю это изменение пути к INSTALLDIR на этапе HxPrepare и хочу продолжить процесс в новом каталоге. Но я не могу знать, откуда только рассматривается старый путь.

<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
<Custom Action="PreventDowngrade" After="FindRelatedProducts">DOWNGRADE</Custom>
<Custom Action="HxInit" After="CostFinalize">NOT Installed</Custom>
<Custom Action="HxPrepare" Before="InstallValidate">NOT Installed</Custom>
<Custom Action="HxFinalize" Before="StartServices">NOT Installed</Custom>
<Custom Action="HxPreUninstall" Before="InstallValidate">(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>
<Custom Action="HxUninstall" After="InstallInitialize">(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")</Custom>

Причина, по которой я хочу выполнить это изменение пути установки, заключается в том, что я хочу изменить имя производителя продукта и хочу, чтобы основное обновление продукта происходило по новому пути, например, "C:\Program Files (x86)\New_manufacturer\ Установка продукта" . " Как мне этого добиться?

0 ответов

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