Я пытаюсь решить это какое-то время. Я создал пользовательский интерфейс для моего приложения Bootstrapper. Установка значения по умолчанию для InstallFolder не является проблемой, но когда пользователь меняет этот путь, как я могу сохранить этот путь для последующих изменений в программах добавления/удаления, например. когда другой пакет в комплекте должен быть установлен путем изменения пакета? Для записи в реестре может быть опция, но приложение Bootstrapper не работает постоянно, поэтому он не может писать в HKLM. Но должен быть способ сделать это, я видел похожие вещи для Visual Studio ...Wix Burn: Как сохранить пользовательский InstallFolder для последующих изменений?
ответ
Вы должны хранить значение InstallFolder в реестре одним (или все в зависимости от того, как оно написано) ваших MSI, что упакованы в приложение bootstrapper. При запуске вы можете использовать util:RegistrySearch
для поиска и установки InstallFolder в загрузчике.
<Fragment>
<util:RegistrySearch
Id="ServerInstalledCheck"
Root="HKLM"
Key="SOFTWARE\$(var.OEMRegistryRootKeyName)\v7"
Value="ServerPath"
Result="value"
Variable="ServerInstalled"/>
<util:DirectorySearch
Path='[ServerInstalled]'
Variable='InstallFolder'
After='ServerInstalledCheck'
Condition='ServerInstalled' />
</Fragment>
Я думаю, что вы можете прямо установить переменную InstallFolder в самом поиске в реестре и опустить DirectorySearch. Подход DirectorySearch использовался только для обеспечения того, чтобы установить только InstallFolder в место, которое фактически существует на машине. Могут быть и другие преимущества, но я не могу думать о них в данный момент.
Это сохранит ваше местоположение по умолчанию InstallFolder в новой установке и «запомнит» выбранное место установки при запуске для удаления/изменения/обновления.
Вы правы, что не можете полагаться на запись каких-либо разделов реестра внутри вашего приложения-загрузчика, поскольку оно не гарантируется (и действительно не должно) запускаться с повышением.
Это в основном после «помнить свойство» шаблон, который объясняется here. Всякий раз, когда вы хотите запомнить значение, установленное в предыдущей установке во время изменения/обновления/удаления, обычно это переход.