web-dev-qa-db-fra.com

Comment créer une interface utilisateur d'installation WiX minimale sans page de licence?

Je voudrais utiliser le programme d'installation de WixUI_Minimal, mais je ne veux pas de la page de licence. Comment puis-je faire ceci?

69
Adam Tegen

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

Vous voulez saisir le code minimal WixUI , et le modifier un peu. Au lieu de la boîte de dialogue de bienvenue WelcomeEulaDlg, vous souhaitez utiliser le WelcomeDlg. Ajustez les références et connectez le bouton Suivant du WelcomeDlg à la boîte de dialogue suivante de la pile, qui serait le 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" />
52
Adam Tegen

J'utiliserais simplement l'une des interfaces utilisateur WiX déjà créées et remplacerais la séquence (augmentez-la pour qu'elle remplace le paramètre 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>
87
Ran Davidovitz

Le moyen peu technique de contourner ce problème consiste simplement à définir la propriété LicenseAccepted sur 1 et mettez des informations utiles sur le type de fichier Lisez-moi dans la boîte de licence. Cela signifie que l'utilisateur n'a pas à cliquer sur la case et que vous n'avez pas à vous soucier de créer une boîte de dialogue supplémentaire :)

Exemple:

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

Voir réponse à une question connexe , script WiX avec seulement les écrans Bienvenue et Terminé , pour l'interface utilisateur minimale la plus simple:

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

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

mais soyez prudent:

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

il doit avoir Ordre = "2"ou cela ne peut pas fonctionner.

3
phoenix