sirve - subir archivo html a wix
Insertar acción personalizada entre cuadros de diálogo(InstallUISequence) en WiX (1)
En lugar de programar la acción personalizada en InstallUISequence
, puede publicarla en el botón, haga clic en:
<Dialog Id="DialogA" ...>
<Control Id="ControlEdit" Type="Edit" Property="MY_PROPERTY" .../>
<Control Id="ControlNext" Type="PushButton" ...>
<Publish Event="DoAction" Value="MyCustomAction">1</Publish>
<Publish Event="EndDialog" Value="Return">1</Publish>
</Control>
</Dialog>
EDITAR: La condición del elemento Publish
debe evaluarse explícitamente como verdadera para ejecutarse, por lo tanto, agregue "1"
como el texto de los elementos Publish
.
Tengo dos cuadros de diálogo personalizados (más los necesarios ExitDlg
, FatalErrorDlg
, etc.), el primero establece una propiedad usando un control de Edición y el segundo muestra esta propiedad usando un control de Texto. Aquí está el código significativo:
<Dialog Id="DialogA" ...>
<Control Id="ControlEdit" Type="Edit" Property="MY_PROPERTY" .../>
<Control Id="ControlNext" Type="PushButton" ...>
<Publish Event="EndDialog" Value="Return" /></Control>
</Dialog>
Y luego el segundo diálogo:
<Dialog Id="DialogB" ...>
<Control Id="ControlText" Type="Text" Text="[MY_PROPERTY]" .../>
<Control Id="ControlBack" Type="PushButton" ...>
<Publish Event="EndDialog" Value="Return" /></Control>
<Control Id="ControlNext" Type="PushButton" ...>
<Publish Event="EndDialog" Value="Return" /></Control>
</Dialog>
Y la secuencia de acción:
<InstallUISequence>
<Show Dialog="DialogA" Before="MyCustomAction" />
<Custom Action="MyCustomAction" Before="DialogB" />
<Show Dialog="DialogB" Before="ExecuteAction" />
</InstallUISequence>
La acción personalizada cambia el valor de MY_PROPERTY
. Mi problema es cómo hacer que el botón Atrás en DialogB
regrese a DialogA
. Usar NewDialog
es simple, pero no puedo ejecutar la acción personalizada entre los cuadros de diálogo, ¿o sí?
editar - 2013-05-02
Después de la respuesta de @caveman_dick, traté de cambiar el DialogA
casi como él dijo, pero en lugar de usar EndDialog
, cambié a Action="NewDialog" Value="DialogB"
. Pero ahora la acción personalizada no se está llamando. Si elimino el evento Publicar para ir al siguiente diálogo, se llama a la CA. Si me voy como dijo @caveman_dick, no puedo volver a DialogA
desde DialogB
.
editar - 2013-05-02
Después de buscar en el libro WiX 3.6: Una guía del desarrollador de Windows Installer XML , encontré lo siguiente: "si tiene más de un evento de publicación, deben tener sentencias condicionales como texto interno. De lo contrario, todos los eventos simplemente no ser publicado."
Entonces, la respuesta de @caveman_dick es correcta, excepto que debe cambiar a lo siguiente:
<Publish ...>1</Publish>