WiX: ne peut pas gérer « Lancer une application après l'installation » case = 0

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

  •  20-09-2019
  •  | 
  •  

Question

Je fais une installation avec WiX qui ont une case à cocher « Lancer une application après l'installation ». L'objectif est d'avoir une réaction sur settting la case à cocher ainsi que sur MHS la case à cocher. Dans le cas où la case à cocher est réglée, je dois exécuter une application. Dans le cas où la case à cocher est pas définie, je dois exécuter la même application, mais avec l'argument de ligne de commande.

Voici une partie de mon 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>

Une installation démarre l'application lorsque LaunchCheckBox est réglé. Mais il ne fonctionne pas dans le cas où la case à cocher est pas définie.

Était-ce utile?

La solution

Je l'ai trouvé une réponse. On dirait que la propriété de case à cocher n'est pas égal à 0 lorsque décochée. Il suffit de changer la condition "LAUNCHAPPONEXIT = 0" avec "NOT LAUNCHAPPONEXIT" permet de résoudre la situation.

Désigner par défaut:

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

Ensuite, corriger les conditions (corrigées avec le commentaire 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>

Autres conseils

Une case à cocher n'a pas de valeur du tout quand décochée, donc plutôt que d'utiliser la notation 1/0 vous pouvez simplement utiliser

LAUNCHAPPONEXIT

et

Not LAUNCHAPPONEXIT

Vous devez ajouter initialiser une action personnalisée pour votre propriété,

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

et puis l'ajouter à InstallUISequence avant de dialogue de sortie du spectacle, ou simplement ajouter votre propriété au produit <Property Id="LAUNCHAPPONEXIT" Value="0" />.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top