2012-03-22 12 views
8

Estoy en una especie de miseria. Tengo un instalador instalando e iniciando una aplicación de icono de bandeja (.exe común)WiX cierra la aplicación antes de la desinstalación - cierra las aplicaciones abiertas mensaje

Esto está funcionando correctamente, pero ahora quiero detener esa aplicación antes de que aparezca esta UI que le dice al usuario que cierre manualmente la aplicación, porque durante el Desinstalar rutina, el icono de mi bandeja se elimina pero el proceso aún se está ejecutando.

que aplica esta acción personalizada para cerrar la aplicación antes de desinstalar (o incluso durante)

<CustomAction Id="CloseTrayApp" ExeCommand="-exit" FileKey="TrayApp" Execute="immediate" Return="asyncNoWait" /> 

<InstallExecuteSequence> 
    <Custom Action="CloseTrayApp" Before="InstallValidate" /> 
</InstallExecuteSequence> 

Pero el diálogo "cerrar todas las aplicaciones en ejecución" todavía aparece, pero pensé que esto va a resolver mi problema.

Ya traté de usar CloseAction pero me apresuré a usarlo por error al compilar las cosas. Se dice que el espacio de nombres WixUtils puede faltar pero una doble comprobación de que está ahí:

xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" 

¿Cómo puedo evitar la ventana de diálogo poping y desencadenar esta acción personalizada para ser ejecutado?

Respuesta

7

También debe agregar una referencia a WixUtilExtension.dll. Si está usando Visual Studio/Votive, simplemente haga clic derecho en agregar referencia y seleccione la DLL de [ProgramFilesFolder] Windows Installer XML v3.5 \ bin. De lo contrario, usted tiene que hacer la extensión disponible para el compilador y el enlazador:

candle.exe yourfile.wxs -ext %full path to WixUtilExtension.dll%' 
light.exe yourfile.wixobj -ext %full path to WixUtilExtension.dll% –out yourfile.msi yourfile.wixout' 

Más información se puede encontrar en:

Using Standard Custom Actions

Tenga en cuenta que la acción personalizada CloseApp tiene una limitación que ganó 't "finalizará su aplicación. Solo enviará cortésmente a su aplicación un mensaje WM_CLOSE y le corresponde a su aplicación trayapp recibir y procesar ese mensaje con un apagado.

+0

¿Hay alguna otra manera de usar una acción personalizada y pasar un argumento como "-exit" porque mi programa reacciona y termina por sí mismo. Pensé que podría haber algún problema con la declaración anterior Before = "InstallValidate". ¿Puedo conectar la rutina de desinstalación en una situación anterior? – inva

+0

Lo siento, leí su descripción pero no su código. Eche un vistazo a: http://wix.sourceforge.net/manual-wix3/util_xsd_closeapplication.htm –

+0

maldita sea que todavía no funciona correctamente ... el icono de la bandeja se vuelve invisible pero el proceso de la aplicación de la bandeja aún se está ejecutando ... :(¿Qué estoy haciendo mal? Estoy utilizando la siguiente declaración closeapp: inva

Cuestiones relacionadas