Установщик Wix отключает настройки реестра при восстановлении - PullRequest
8 голосов
/ 13 мая 2011

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

Пользовательское диалоговое окно имеет одно текстовое поле, связанное со свойством.Это свойство имеет поиск в реестре, так что если пользователь восстанавливает или обновляет предыдущее значение, оно сохраняется и поэтому отображается в настраиваемом диалоговом окне для проверки пользователем.Диалоговое окно отлично работает при установке и ключ реестра создан.Однако при восстановлении появляется настраиваемое диалоговое окно с правильным введенным значением реестра (поэтому RegistrySearch работает), но когда восстановление завершено, значение ключа остается пустым.

<Property Id='SERVER_LISTEN_URL'>
          <RegistrySearch Id='ServerListenUrlRegSearch' Root='HKLM'
                          Key='SOFTWARE\$(var.Manufacturer)\$(var.Name)'
                          Name='ServerListenUrl'
                          Type='raw' Win64='no' />
        </Property>

<Component Id="RegistryEntries" Guid="0234974B-6158-4312-90A7-56869809B42E">
        <RegistryKey Id="ServerRegKey"
              Root="HKLM"
              Key='SOFTWARE\$(var.Manufacturer)\$(var.Name)'
              Action='createAndRemoveOnUninstall'>
          <RegistryValue Id="ServerListenUrlRegVal"
                         Name='ServerListenUrl'
                         Value='[SERVER_LISTEN_URL]'
                         KeyPath='yes'
                         Type='string' />
        </RegistryKey>
</Component>

<Dialog Id="SettingsDlg">
    <Control Id="ListenUrl" Type="Edit" X="20" Y="100" Width="320" Height="18" Property="SERVER_LISTEN_URL" Indirect="no" />
</Dialog>

Что я сделал не так?

Ответы [ 2 ]

7 голосов
/ 13 мая 2011

Мне удалось решить это самому после того, как я отправил.Я потратил почти целый день, пытаясь решить это, так что, надеюсь, это спасет немного боли.Все, что вам нужно сделать, это изменить собственность на безопасную собственность.

<Property Id='SERVER_LISTEN_URL' Secure='yes'>
      <RegistrySearch Id='ServerListenUrlRegSearch' Root='HKLM'
                      Key='SOFTWARE\$(var.Manufacturer)\$(var.Name)'
                      Name='ServerListenUrl'
                      Type='raw' Win64='no' />
</Property>
3 голосов
/ 14 мая 2011

Защищенные свойства могут передавать свое содержимое из клиентского процесса (запуск в контексте пользователя) в процесс сервера (запуск в контексте системы) во время «повышенной установки».Другими словами, установка, запускаемая пользователем без прав администратора.Не будьте слишком щедрыми в отношении того, какие свойства защищены, но обязательно добавьте все свойства, используемые в таблице обновлений, и любые специальные, которые используются в графическом интерфейсе для получения важной информации, как вы сделали.

http://msdn.microsoft.com/en-us/library/aa371571(v=vs.85).aspx

...