WiX: No se puede manejar “Iniciar una aplicación después de la instalación” casilla de verificación = 0

StackOverflow https://stackoverflow.com/questions/2272275

  •  20-09-2019
  •  | 
  •  

Pregunta

Estoy haciendo una instalación con WiX que tienen un "Iniciar una aplicación después de la instalación" casilla de verificación. El objetivo es tener una reacción en settting la casilla de verificación, así como en desarmar la casilla de verificación. En caso de que la casilla de verificación está activada, se necesita para ejecutar una aplicación. En caso de que la casilla de verificación no está activada, se necesita para ejecutar la misma aplicación pero con argumentos de línea de comandos.

Aquí es una parte de mi guión WiX.

<CustomAction Id="StartConfigManagerOnExit"
              FileKey="ParamsShower.exe"
              ExeCommand=""
              Execute="immediate"
              Impersonate="yes"
              Return="asyncNoWait" />
<CustomAction Id="StartUpgradeConfigOnExit"
              FileKey="ParamsShower.exe"
              ExeCommand="/upgrade"
              Execute="immediate"
              Impersonate="yes"
              Return="asyncNoWait" />
<UI>
    <Publish Dialog="ExitDialogEx"
             Control="Finish"
             Order="1"
             Event="DoAction"
             Value="StartConfigManagerOnExit">LAUNCHAPPONEXIT = 1</Publish>
    <Publish Dialog="ExitDialogEx"
             Control="Finish"
             Order="1"
             Event="DoAction"
             Value="StartUpgradeConfigOnExit">LAUNCHAPPONEXIT = 0</Publish>
    <Publish Dialog="ExitDialogEx"
             Control="Finish"
             Event="EndDialog"
             Value="Return"
             Order="999">1</Publish>

    <Dialog Id="ExitDialogEx"
            Width="370"
            Height="270"
            Title="[ProductName] Setup">
        <Control Id="LaunchCheckBox"
                 Type="CheckBox"
                 X="135"
                 Y="190"
                 Width="220"
                 Height="40"
                 Property="LAUNCHAPPONEXIT"
                 Hidden="yes"
                 CheckBoxValue="1"
                 Text="Launch an app">
           <Condition Action="show">NOT Installed</Condition>
        </Control>
    </Dialog>
    <InstallUISequence>
       <Show Dialog="ExitDialogEx"
             OnExit="success" />
    </InstallUISequence>
    <AdminUISequence>
        <Show Dialog="ExitDialogEx"
              OnExit="success" />
    </AdminUISequence>
</UI>

Una instalación se inicia la aplicación cuando se establece LaunchCheckBox. Pero no se ejecuta en caso de que la casilla de verificación no está establecido.

¿Fue útil?

Solución

He encontrado una respuesta. Parece que la propiedad casilla de verificación no es igual a 0 cuando se controla. Basta con cambiar la condición de "LAUNCHAPPONEXIT = 0" con "NO LAUNCHAPPONEXIT" resuelve la situación.

Hacer por defecto:

<Property Id="LAUNCHAPPONEXIT" Value="1" />

A continuación, corregir las condiciones (corregido con el comentario de Sascha):

<Publish Dialog="ExitDialogEx" Control="Finish" Order="1" Event="DoAction" Value="StartConfigManagerOnExit">LAUNCHAPPONEXIT</Publish>
<Publish Dialog="ExitDialogEx" Control="Finish" Order="1" Event="DoAction" Value="StartUpgradeConfigOnExit">NOT LAUNCHAPPONEXIT</Publish>

Otros consejos

Una casilla de verificación no tiene ningún valor en absoluto cuando no se controla, por lo que en lugar de utilizar la notación 1/0 puede simplemente usar

LAUNCHAPPONEXIT

y

Not LAUNCHAPPONEXIT

Es necesario añadir inicializar acción personalizada para su propiedad,

<CustomAction ID="InitLAUNCHAPPONEXIT" 
              Property="LAUNCHAPPONEXIT" 
              Value="0" 
              Return="check"/> 

y luego añadirlo a InstallUISequence antes de diálogo programa de salida, o simplemente añadir su propiedad a <Property Id="LAUNCHAPPONEXIT" Value="0" /> producto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top