Pregunta

Estoy tratando de cerrar un proceso antes de la desinstalación usando WIX. Confirmé que funciona siempre que haya una ventana visible, pero si no hay una ventana visible (que es el caso la mayor parte del tiempo con esta aplicación, ya que es una aplicación de bandeja del sistema), el desinstalador simplemente cuelga, y Finalmente continúa con la desinstalación, dejando el proceso en funcionamiento.

De acuerdo a esta publicación del foro, parece que Wix ha tenido problemas para cerrar aplicaciones minimizadas en el pasado, así que me pregunto si esto está relacionado.

¿Alguna sugerencia sobre qué más puedo hacer para asegurarme de que el proceso se cierre? ¿Hay alguna forma de intentar capturar el mensaje en mi aplicación usando la API Win32 tal vez?

Aquí está la Declaración de Aplicación de Cierre:

<util:CloseApplication Id="CloseApp" CloseMessage="yes" Target="App.exe" RebootPrompt="yes" />

Y aquí está la acción personalizada:

<Custom Before="InstallInitialize" Action="WixCloseApplications">REMOVE = "ALL"</Custom>
¿Fue útil?

Solución

Parece que estás programando el WixCloseApplications Acción personalizada antes de la transacción de instalación. La forma en que funciona la acción personalizada es programar una acción diferida que realmente cierra las aplicaciones. No puede hacer ese trabajo a menos que ocurra durante la transacción (After="InstallInitialize").

La solución es probablemente bastante fácil. Quitar el Custom/@Action="WixCloseApplications" elemento.

Otros consejos

Al principio, no olvides hacer referencia Wixutilextension.dll asamblea. También verifique si Wix El elemento contiene definición de Utilxtension espacio de nombres:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

He notado que debe cambiar su acción personalizada para ser ejecutada antes de instalarInitialize.

<Custom Before="InstallInitialize" Action="WixCloseApplications">REMOVE = "ALL"</Custom>

Si aplica esos cambios y la extensión de las aplicaciones de cierre no funciona, intente registrar el proceso de instalación utilizando

msiexec /i MyApplication.msi /l*v MyLogFile.txt

También enfrenté este problema. Cambiar el atributo anterior a "InstallValidate" funcionó para mí.

<Custom Before="InstallValidate" Action="WixCloseApplications"/>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top