Hay una forma de hacerlo en WiX. Solo necesita fabricar su propio evento modificado.
Comparamos nuestra condición DoAction a otra propiedad que se mantenga el estado anterior de la Combobox - VIRTUALWEBSITEOLD
ejecutar una acción personalizada en el cuadro combinado cuando el viejo no nueva iguales:
<Control Id="WebSite" Type="ComboBox" Width="180" Height="18" X="120" Y="48" ComboList="no" Property="VIRTUALWEBSITE">
<Publish Event="DoAction" Value="LansaInitVirtualFolders"><![CDATA[VIRTUALWEBSITE <> VIRTUALWEBSITEOLD]]></Publish>
</Control>
A continuación, el La acción personalizada realiza la misma comparación que DoAction (probablemente no sea necesaria) y luego guarda el valor de Combobox en la propiedad OLD.
Tstring wszWebsite = ReadProperty(_T("VIRTUALWEBSITE"));
Tstring wszWebsiteOld = ReadProperty(_T ("VIRTUALWEBSITEOLD"));
// If unchanged ignore request
if (wszWebsite == wszWebsiteOld) return true ;
[Do Some stuff]
// Set the saved state of the combobox so we don't get called again until it changes
if (nResult == ERROR_SUCCESS || nResult == ERROR_NO_MORE_ITEMS)
{
WriteProperty(_T("VIRTUALWEBSITEOLD"), wszWebsite.c_str());
}
(Nota:. También es necesario utilizar Patrón gemelo de diálogo si la actualización, por ejemplo, un control de cuadro de lista Si su control, pero no se actualiza en Siguiente y Atrás pone al día, entonces patrón gemelo de diálogo se asegurará de que se actualiza)
¿me puede dar un ejemplo de lo mismo? –
He actualizado mi respuesta con la muestra –
esto lo sé, pero usando alguna herramienta externa u otra cosa ¿no puedo lograr lo que exactamente quiero? –