Wix Installer, как мне создать раздел реестра, если пользователь соглашается на диалог? - PullRequest
0 голосов
/ 17 июня 2019

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

Это кажется самой простой из задач, но как мне использовать Wix?создать диалоговое окно и условно создать раздел реестра на основе ввода пользователя?

До сих пор я пытался узнать о пользовательских действиях, но кажется, что это не тот инструмент, так как Wix содержит возможностьсоздать раздел реестра уже.Я просто не знаю, как связать установку функции с ответом на конкретный диалог.Если соглашение не задано, установщик должен продолжить работу в обычном режиме, просто без этого конкретного ключа реестра.

Я использую Visual Studio.

Некоторые фрагменты кода: это вверхумоего продукта, рядом с другими свойствами.

<Property Id="STREAMING_ACCEPTED" Secure="yes"/>

Затем у меня есть диалог со следующим элементом управления.

<Control Id="StreamingAcceptedCheckBox" Type="CheckBox" X="20" Y="207" Width="330" Height="18" CheckBoxValue="1" Property="STREAMING_ACCEPTED" Text="Accept streaming" />

И, наконец, я пытаюсь подключить этодобавив условие к компоненту.

<Component Id ="StreamingAcceptanceRegKey" Guid="some-guid" Win64="yes">
  <Condition>STREAMING_ACCEPTED</Condition>
  <RegistryKey Root="HKLM" Key="SOFTWARE\MyProgram" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
    <RegistryValue Type="string" Name="UsageStats" Value="true" Action="write" KeyPath="yes"/>
  </RegistryKey>
</Component>

Я в правильных строках, потому что это не запись раздела реестра?Действительно ли это записывает "true" и "false" для свойства на основе состояния флажка?

1 Ответ

1 голос
/ 17 июня 2019

Элемент управления пользовательского интерфейса имеет свойство, связанное с ним. Убедитесь, что это безопасная публичная собственность. (Все заглавные буквы и обозначены как безопасные).

Описание того, как выбор функции и INSTALLLEVEL работает в MSI, занимает некоторое время. Поскольку у вас есть только одно значение реестра, я бы вместо этого предложил создать компонент для установки значения реестра и наложить условие на этот компонент, который использует защищенное настраиваемое общедоступное свойство, найденное в пользовательском интерфейсе.

Если вы хотите, чтобы пользователь заходил в «Программы и компоненты» и изменял исходный выбор, убедитесь, что вы пометили компонент как транзитивный и внедрили шаблон свойств WiX запомнить, чтобы последующие исправления / транзакции оставляли за собой выбор.

http://robmensching.com/blog/posts/2010/5/2/the-wix-toolsets-remember-property-pattern/

...