Wie erstelle ich eine minimale Benutzeroberfläche für das WiX-Installationsprogramm ohne Lizenzseite?

74

Ich möchte das Installationsprogramm WixUI_Minimal verwenden, möchte aber die Lizenzseite nicht. Wie kann ich das machen?

Adam Tegen
quelle

Antworten:

91

Ich würde einfach eine der bereits erstellten WiX-Benutzeroberflächen verwenden und die Sequenz überschreiben (erhöhen Sie sie, damit die vorherige Einstellung überschrieben wird):

    <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>
Ran Davidovitz
quelle
9
Diese Antwort wäre besser, wenn sie erklären würde, wo das UI-Tag platziert werden soll
Alan
3
@Alan Ich habe das <UI> -Element in das <Product> -Element eingefügt, das hat gut funktioniert.
theDmi
@Justin Das UI & UIRef-Zeug kann anscheinend nicht das erste Element unter Produkt sein. Ich habe keine Ahnung warum, aber es ist auch für mich gescheitert, bis ich etwas darüber hatte. Ich bin mir nicht sicher, ob es sich um denselben Fehler handelt.
Josh Sutterfield
1
wird nicht kompiliert: Fehler LGHT0091: Doppeltes Symbol 'ControlEvent: WelcomeDlg / Next / NewDialog / VerifyReadyDlg / Installed AND PATCH' gefunden. Dies bedeutet normalerweise, dass eine ID dupliziert wird. Stellen Sie sicher, dass alle Ihre Bezeichner eines bestimmten Typs (Datei, Komponente, Feature) eindeutig sind. ... und so weiter
Andreas Niedermair
1
@ Justin: Für Fehlercode 2819 siehe stackoverflow.com/a/24439962/569302
Jared
54

Der Schlüssel besteht darin, eine benutzerdefinierte Benutzeroberfläche zu erstellen und verschiedene Seiten anzuschließen. Siehe die Seite auf WixWiki

Sie möchten den WixUI-Minimalcode abrufen und ein wenig ändern. Anstelle des WelcomeEulaDlg-Begrüßungsdialogs möchten Sie das WelcomeDlg verwenden. Passen Sie die Referenzen an und verbinden Sie die Schaltfläche Weiter im WelcomeDlg mit dem nächsten Dialogfeld im Stapel, dem PrepareDlg.

Vollständiger Code:

  <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" />
Adam Tegen
quelle
Vielen Dank, ich wusste, was ich tun musste, aber ich wusste nicht, was ich als nächstes Dialogfeld nach WelcomeDlg einstellen sollte. Wo finde ich den Dialogstapel? Wie hätte ich herausfinden können, dass der nächste Dialog nach WelcomeDlg PrepareDlg sein sollte?
Carlos
Ich habe ein Problem mit dem obigen Code und starte die Anwendung, die auch ExitDialog <Publish Dialog = "ExitDialog" Control = "Finish" Event = "DoAction" Value = "LaunchApplication"> NICHT WIXUI_EXITDIALOGOPTIONALCHECKBOX und NOT Installed </ Publishing> verwendet nicht richtig geschlossen
se_pavel
1
Ich habe den obigen Code (ab 2009) verwendet und "Die Windows Installer XML-Variable! (Wix.WixUICostingPopupOptOut) ist unbekannt. Um dies zu beheben, habe ich die neueste Quelle erhalten und das Fragment \ src \ ext \ UIExtension \ wixlib \ WixUI_Minimal.wxs kopiert Dann entfernte man die <DialogRef Id = "WelcomeEulaDlg" /> und fügte das neue DialogRef hinzu und veröffentlichte gemäß Adams Antwort.
Martin Capodici
3
Der Wixwiki-Link ist defekt.
Nicolas Raoul
1
In Wix 3.11.0 mit Visual Studio wird die Fehlermeldung "Duplicate Symbol WixUI: WixUI_Minimal ..." angezeigt. Um dies zu beheben, suchen und ersetzen Sie WixUI_Minimal durch WixUI_CustomMinimal in Ihrem obigen Codeblock und führen Sie dann in Ihrem Hauptprodukt eine <UIRef Id = "aus. WixUI_CustomMinimal "/>
user922020
11

Der Low-Tech-Weg, um dies zu umgehen, besteht einfach darin, die Eigenschaft auf LicenseAcceptedzu setzen1 setzen und einige nützliche Informationen zum Readme-Typ in das Lizenzfeld zu schreiben. Dies bedeutet, dass der Benutzer nicht auf das Feld klicken muss und Sie sich nicht um die Erstellung eines zusätzlichen Dialogfelds kümmern müssen :)

Beispiel:

<Property Id="LicenseAccepted" Value="1"/>
saschabeaumont
quelle
3
Im Einzelnen:<Property Id="LicenseAccepted" Value="1"/>
Nathan
3

@Ran Davidovitz 'Antwort ist sehr gut

aber sei vorsichtig:

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

es muss Order = "2" haben , sonst kann es nicht funktionieren.

Phönix
quelle