WiX: non può gestire “Avviare un'applicazione dopo l'installazione” checkbox = 0

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

  •  20-09-2019
  •  | 
  •  

Domanda

Sto facendo un'installazione con WiX che hanno una "Avviare un'applicazione dopo l'installazione" casella di controllo. L'obiettivo è quello di avere una reazione sul settting la casella di controllo, nonché sulla disinserimento la casella di controllo. Nel caso in cui la casella di controllo è impostato, ho bisogno di eseguire un'applicazione. Nel caso in cui la casella di controllo non è impostato, ho bisogno di eseguire la stessa applicazione, ma con l'argomento da riga di comando.

Ecco una parte del mio script 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>

Un impianto si avvia l'applicazione quando LaunchCheckBox è impostato. Ma non viene eseguito nel caso in cui la casella di controllo non è impostato.

È stato utile?

Soluzione

ho trovato una risposta. Sembra proprietà casella di controllo non è uguale a 0 quando incontrollato. Basta cambiare la condizione "LAUNCHAPPONEXIT = 0" con "NOT LAUNCHAPPONEXIT" risolve la situazione.

Fai di default:

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

Poi correggere le condizioni (corretto con il commento di 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>

Altri suggerimenti

Una casella di controllo non ha alcun valore a tutti quando incontrollato, in modo piuttosto che usare la notazione 1/0 si può utilizzare semplicemente

LAUNCHAPPONEXIT

e

Not LAUNCHAPPONEXIT

È necessario aggiungere inizializzare un'azione personalizzata per la vostra proprietà,

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

e poi aggiungerlo al InstallUISequence prima finestra di dialogo spettacolo uscita, o semplicemente aggiungere la vostra proprietà per <Property Id="LAUNCHAPPONEXIT" Value="0" /> prodotto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top