77 votes

Comment construire une interface minimale d'installation de WiX sans page de licence ?

Je voudrais utiliser l'installateur WixUI_Minimal, mais je ne veux pas la page de licence. Comment puis-je faire ?

93voto

Ran Davidovitz Points 605

J'utiliserais simplement l'une des interfaces utilisateur WiX déjà créées et je remplacerais la séquence (la rendre plus élevée pour qu'elle remplace le réglage précédent) :

    <Product> 
        ...
        <UI>
            <UIRef Id="WixUI_InstallDir" />

            <!-- Skip license dialog -->
            <Publish Dialog="WelcomeDlg"
                     Control="Next"
                     Event="NewDialog"
                     Value="InstallDirDlg"
                     Order="2">1</Publish>
            <Publish Dialog="InstallDirDlg"
                     Control="Back"
                     Event="NewDialog"
                     Value="WelcomeDlg"
                     Order="2">1</Publish>
        </UI>

        <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />
        ...
    </Product>

9 votes

Cette réponse serait meilleure si elle expliquait où placer la balise UI.

3 votes

@Alan J'ai mis l'élément <UI> dans l'élément <Produit>, cela a bien fonctionné.

0 votes

@Justin Les éléments UI & UIRef ne peuvent apparemment pas être le premier élément sous Product. Je ne sais pas pourquoi, mais cela a échoué pour moi aussi jusqu'à ce que j'aie quelque chose au-dessus. Je ne sais pas si c'est la même erreur.

58voto

Adam Tegen Points 8563

La clé est de créer une interface utilisateur personnalisée et de relier différentes pages. Voir la page sur WixWiki

Vous voulez attraper le Code minimal de WixUI et le modifier un peu. Au lieu de la boîte de dialogue de bienvenue WelcomeEulaDlg, vous souhaitez utiliser la boîte de dialogue WelcomeDlg. Ajustez les références et connectez le bouton Suivant de la WelcomeDlg à la boîte de dialogue suivante de la pile, qui serait la PrepareDlg.

Code complet :

  <UI Id="WixUI_Minimal">
    <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
    <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
    <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />

    <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
    <Property Id="WixUI_Mode" Value="Minimal" />

    <DialogRef Id="ErrorDlg" />
    <DialogRef Id="FatalError" />
    <DialogRef Id="FilesInUse" />
    <DialogRef Id="MsiRMFilesInUse" />
    <DialogRef Id="PrepareDlg" />
    <DialogRef Id="ProgressDlg" />
    <DialogRef Id="ResumeDlg" />
    <DialogRef Id="UserExit" />

    <!-- This is the welcome dialog you specified-->
    <DialogRef Id="WelcomeDlg" /> 

    <!-- Hook the new welcome dialog to the next one in the stack-->
    <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="PrepareDlg">1</Publish> 

    <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>

    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>

    <Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>

    <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
    <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
    <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>

    <Property Id="ARPNOMODIFY" Value="1" />
  </UI>

  <UIRef Id="WixUI_Common" />

0 votes

Merci, je savais ce que je devais faire, mais je ne savais pas comment définir la boîte de dialogue suivante après WelcomeDlg. Où puis-je trouver ce qu'est la pile de dialogue ? Comment ai-je pu comprendre que le dialogue suivant après WelcomeDlg devait être PrepareDlg ?

0 votes

J'ai un problème avec le code ci-dessus et lancer l'application qui utilise également ExitDialog <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="LaunchApplication">NOT WIXUI_EXITDIALOGOPTIONALCHECKBOX et NOT Installed</Publish> l'application ne s'est pas fermée correctement

0 votes

Quelqu'un a essayé ceci et a obtenu "La variable XML de Windows Installer !(wix.WixUICostingPopupOptOut) est inconnue. Veuillez vous assurer que la variable est déclarée sur la ligne de commande de light.exe" ?

16voto

saschabeaumont Points 14415

La façon la plus simple de contourner ce problème est de définir la propriété LicenseAccepted a 1 et mettre quelques informations utiles de type readme dans la boîte de licence. Ainsi, l'utilisateur n'a pas à cliquer sur la boîte et vous n'avez pas à vous soucier de créer une boîte de dialogue supplémentaire :)

Exemple :

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

3 votes

Plus précisément : <Property Id="LicenseAccepted" Value="1"/>

7voto

marfarma Points 2533

Ver el réponse à une question connexe , WiX script avec seulement les écrans de bienvenue et de fin de session pour l'interface utilisateur minimale la plus simple :

  1. WelcomeDlg
  2. Progression de l'installation
  3. Boîte de dialogue de sortie

2 votes

Voici la réponse que je cherchais. Toutes les autres solutions proposées ici présentent des inconvénients et nécessitent davantage de clics pour passer par les boîtes de dialogue.

4voto

phoenix Points 61

La réponse de @Ran Davidovitz est très bonne.

mais faites attention :

<Publish Dialog="InstallDirDlg"
         Control="Back"
         Event="NewDialog"
         Value="WelcomeDlg"
         Order="2">1</Publish> 

il doit avoir Ordre="2" ,ou ça ne peut pas marcher.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X