2016-07-27 4 views
0

Я построил установщик с помощью WiX, который позволяет пользователю обновить текущую установку до следующей версии и изменить расположение установочной папки. Это работает при использовании файла .msi, но при его запуске без использования msiexec моя настройка INSTALLDIR будет перезаписана позже в процессе установки.Изменение места установки с помощью бесшумной установки установщика WiX

Я просмотрел журналы и записывается с текущей установочной директорией. У меня есть свойство, которое ищет в реестре текущее место установки и устанавливает значение INSTALLDIR.

Я думаю, что в значении UI .msi все работает в правильном порядке, но с тихой установкой это не так.

MSI (s) (A0:90) [09:47:34:315]: PROPERTY CHANGE: Modifying INSTALLDIR property. Its current value is 'C:\SpecifiedInSilentInstall'. Its new value: 'C:\CurrentInstallDirectoryFromRegistry\'. 

Есть ли способ определить порядок в CustomAction или что-то?

ответ

0

Если вы используете пользовательские действия, как этот

<CustomAction Id="SetInstallDir" Property="INSTALLDIR" Value="[YourInstallDir]" /> 

вы можете время его в <InstallExecuteSequence> разделе как этот

<Custom Action="SetInstallDir" Before="CostFinalize" /> 

Здесь вы можете время ваши события с Before и After. Эти события следуют в определенном порядке (взятый из FIREGIANT)

  • AppSearch
  • LaunchConditions
  • ValidateProductID
  • CostInitialize
  • FileCost
  • CostFinalize
  • InstallValidate
  • InstallInitialize
  • ProcessComponents
  • UnpublishFeatures
  • RemoveShortcuts
  • RemoveFiles
  • InstallFiles
  • CreateShortcuts
  • RegisterUser
  • RegisterProduct
  • PublishFeatures
  • PublishProduct
  • InstallFinalize
  • RemoveExistingProducts

Для свойства INSTALLDIR важно, чтобы установить его в нужное событие вступили в силу (независимо от ваших потребностей). Для меня Before=CostFinalize изменяет путь к тому, который я хочу.