2017-01-25 12 views
0

Я пытаюсь решить это какое-то время. Я создал пользовательский интерфейс для моего приложения Bootstrapper. Установка значения по умолчанию для InstallFolder не является проблемой, но когда пользователь меняет этот путь, как я могу сохранить этот путь для последующих изменений в программах добавления/удаления, например. когда другой пакет в комплекте должен быть установлен путем изменения пакета? Для записи в реестре может быть опция, но приложение Bootstrapper не работает постоянно, поэтому он не может писать в HKLM. Но должен быть способ сделать это, я видел похожие вещи для Visual Studio ...Wix Burn: Как сохранить пользовательский InstallFolder для последующих изменений?

ответ

0

Вы должны хранить значение 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. Всякий раз, когда вы хотите запомнить значение, установленное в предыдущей установке во время изменения/обновления/удаления, обычно это переход.