Tengo un instalador creado con Wix. En el asistente de IU, hay una casilla de verificación que está seleccionada por defecto. Quiero guardar el valor de esta casilla en el registro para cambios, reparaciones y actualizaciones usando la (versión más simple de) "Remember Property" pattern descrita por Rob Mensching.Guardar un valor de casilla de verificación Wix que se establece como predeterminado en el registro
La aplicación casilla:
<Control Id="httpsCheckBox" Type="CheckBox" CheckBoxValue="true" X="30" Y="119" Width="139" Height="17" Text="Enable HTTPS services" Property="ENABLEHTTPS" />
La definición de propiedad:
<Property Id="ENABLEHTTPS" value="true">
<RegistrySearch Id="EnableHttpsRegistrySearch" Type="raw" Root="HKLM" Key="SOFTWARE\CompanyName\ProductName" Name="EnableHttps" />
</Property>
y la propiedad se escriben en el registro aquí:
<Component Id="RegistryEntries">
<RegistryKey Root="HKLM" Key="SOFTWARE\CompanyName\ProductName">
<RegistryValue Name="EnableHttps" Value="[ENABLEHTTPS]" Type="string" />
</RegistryKey>
</Component>
La instalación inicial funciona bien. El valor en el registro es "verdadero" si la casilla de verificación se deja marcada o vacía si no está marcada.
La próxima vez que se ejecute el instalador, para instalar una nueva característica, por ejemplo, la casilla de verificación siempre se verifica independientemente del valor en la configuración del registro.
Si elimino el valor predeterminado de la definición de propiedad para que la casilla de verificación esté desmarcada la primera vez que se ejecuta el instalador, todo funciona bien. La próxima vez que se ejecute el instalador, la casilla de verificación (y la propiedad) tendrá el valor correcto del registro.
Parece que RegistrySearch no establece la propiedad si el valor del registro está vacío.
¿Estoy haciendo algo mal? ¿O hay una mejor manera de hacer esto?
Gracias Rami. Eso funciona como un regalo. – Smiffy