Erstellen eines Installationsprogramms mit WiX. Teil 3

    Dieses Mal werden wir etwas komplizierteres als das Installationspaket aus dem ersten Artikel erstellen . Wir werden lernen, Änderungen an den Installationsschritten vorzunehmen und unsere eigenen Installationsdialoge zu erstellen.


    Unser neues Installationsprogramm umfasst die folgenden Schritte:

    1. Willkommen

    2. Auswählen der Installationsmethode



    3. Auswählen der zu installierenden Komponenten



    4. Erstellen von Verknüpfungen



    5. Alles ist bereit für die Installation
    6. Installationsvorgang
    7. Abschließender Dialog

    Es werden zwei Programme installiert: Editor und Rechner .

    Das Installationsprogramm bietet drei Installationsarten an: Normal , Benutzerdefiniert , Vollständig. Stellen wir die Bedingung ein: Wenn der Benutzer die übliche Installation gewählt hat, sollte der Rechner nicht installiert werden, mit einer vollständigen, Notizblock und Taschenrechner sollten installiert werden, mit einer selektiven, was der Benutzer ausgewählt hat.

    Beginnen wir mit der Erstellung eines neuen Projekts und dem sofortigen Hinzufügen der russischen Sprachunterstützung und eines Links zu WixUIExtension .

    In einem früheren Artikel habe ich darauf hingewiesen, dass die Datei WixUI_ru-ru.wxl in das Projekt aufgenommen werden muss, da dies nicht erforderlich ist Eine Datei mit russischer Lokalisierung ist bereits in der aktuellen Version von WiX enthalten. Ich habe nicht geschaut, ich bereue.

    Dieses Mal verwenden wir als Dialogfelder das WixUI_Mondo- Set . Fügen Sie am Ende der Datei Product.wxs einen Link zu diesem Satz hinzu in der Sektion .



    Als nächstes werden wir unser Projekt in mehrere Dateien aufteilen. Nehmen Sie die Beschreibung herausin eine separate Datei Features.wxs . Erstellen Sie einfach eine separate Datei für die Beschreibung der Dateien installiert Files.wxs , Verknüpfungen erstellen Shortcuts.wxs und die Variablen in der Datei herausnehmen Variables.wxi , wie beschrieben in dem zweiten Artikel .

    Fügen Sie nun die zu installierenden Dateien hinzu: Notizblock und Taschenrechner. Der Editor ist ein erforderliches Element, der Taschenrechner ist optional und Teil der Editor-Komponente, wie im Screenshot gezeigt. Auswählen der zu installierenden Komponenten

    Fügen Sie der Datei Files.wxs den folgenden Code hinzu :

     
      
     


     
      
     



    * This source code was highlighted with Source Code Highlighter.


    Wir haben eine Beschreibung von zwei verschiedenen Komponenten erstellt, damit diese Komponenten in verschiedenen Optionen enthalten sein können () Installation. Fügen Sie Installationsoptionen hinzu. Fügen Sie dazu den Code zur Datei Features.wxs hinzu :

     

     
      
     



    * This source code was highlighted with Source Code Highlighter.


    Wie Sie sehen können, ist die FeatureCalc-Installationsoption Teil von FeatureNotepad, d. H. ist abhängig und wird dementsprechend als untergeordnetes Element im Fenster zur Auswahl der zu installierenden Komponenten angezeigt.
    In den SchlüsselparameternWir sehen Parameter wie Titel und Beschreibung. Diese Parameter sind für den Namen der Komponente in der Baumstruktur der zu installierenden Komponenten und deren Beschreibung verantwortlich, die bei der Auswahl einer Komponente im rechten Teil des Fensters angezeigt wird. Ein weiterer interessanter Punkt ist der Parameter ConfigurableDirectory - er legt den Bezeichner des Verzeichnisses fest, dessen Pfad sich ändert, wenn auf die Schaltfläche Durchsuchen geklickt wird . In diesem Fall ist dies das INSTALLLOCATION-Verzeichnis, d.h. die, in die unser Produkt eingebaut wird. Wenn Sie keinen ConfigurableDirectory-Parameterwert angeben, kann der Benutzer den Installationspfad nicht ändern.

    Fügen Sie einen Link zu den Installationsoptionen in der Datei Product.wxs hinzu :


    Es müssen noch Verknüpfungen zum Startmenü hinzugefügt werden, und Sie können die erste Version des Pakets abrufen. Fügen Sie den Code ein , um der Datei Shortcuts.wxs Verknüpfungen hinzuzufügen :

     
              Name="Блокнот"
           Description="$(var.ProductName)"
           Target="[INSTALLLOCATION]Notepad.exe"
           WorkingDirectory="INSTALLLOCATION"/>
      
               Key="Software\$(var.Manufacturer)\$(var.ProductName)"
              Name="installed"
              Type="integer"
              Value="1"
              KeyPath="yes"/>
     


     
              Name="Калькулятор"
           Description="$(var.ProductName)"
           Target="[INSTALLLOCATION]Calc.exe"
           WorkingDirectory="INSTALLLOCATION"/>
               Key="Software\$(var.Manufacturer)\$(var.ProductName)"
              Name="installed"
              Type="integer"
              Value="1"
              KeyPath="yes"/>
     



    * This source code was highlighted with Source Code Highlighter.


    Eine Beschreibung der Verknüpfungen wurde hinzugefügt. Nun müssen Sie Verknüpfungen zu den entsprechenden Installationsoptionen hinzufügen:

     
     

     
      
      
     



    * This source code was highlighted with Source Code Highlighter.


    Versuchen wir unser Projekt zusammenzustellen und schauen wir uns an, was passiert ist. Optionen werden ausgewählt, Dateien werden installiert, aber dies sieht nicht so aus, wie wir es zu Beginn geplant haben. Es gibt ein Fenster der Lizenzvereinbarung, das wir entfernen möchten, und es gibt kein Fenster zum Erstellen von Verknüpfungen.

    Wir beginnen, Änderungen an der Anzeigereihenfolge der Installations-Matser-Fenster vorzunehmen. Dazu müssen Sie entweder Ihre eigenen Dialogfenster erstellen oder das fertige als Grundlage nehmen und Ihre Änderungen vornehmen. Um die Zeit zu verkürzen, laden Sie das Archiv mit den WiX- Quellen herunter , entpacken Sie es, suchen Sie die Datei WiXUI_Mondo.wxs (src \ ext \ UIExtension \ wixlib) und benennen Sie sie in WiXUI_Wizard.wxs um . Öffnen Sie als nächstes diese Datei und suchen Sie die Zeile:
    und wechseln zu


    Es wurde darauf geachtet, dass bei der Montage der Fehler " Duplicate symbol 'WixUI: WixUI_Mondo' found " nicht angezeigt wird. In der WixUIExtension- Bibliothek ist bereits ein Element mit dem Bezeichner WixUI_Mondo vorhanden, zu dem wir einen Link zu unserem Projekt hinzugefügt haben.

    Wir fügen diese Datei in unser Projekt ein. Ändern Sie den Link:

    auf


    Wir entfernen die Lizenzvereinbarung aus dem Paket, dazu löschen wir die Zeilen aus der WixUI_Wizard.wxs- Datei :
    1
    LicenseAccepted = "1"


    Diese Zeilen bestimmten die Aktionen beim Klicken auf die Schaltflächen Weiter und Zurück im Dialogfeld Lizenzvereinbarung.

    Ändern Sie die Zeile:
    1
    auf
    1

    Diese Zeile legt die Aktion fest, wenn Sie im Willkommensfenster auf Weiter klicken. Wir haben die Aktion geändert und die Anzeige des Fensters zur Auswahl des Installationstyps (SetupTypeDlg) zugewiesen, indem wir auf Weiter geklickt haben.

    Linie:
    1
    wechseln zu
    1

    In dieser Zeile wird die Aktion festgelegt, wenn Sie im Auswahlfenster für den Installationstyp auf die Schaltfläche Zurück klicken. Wir haben die Aktion geändert und mit der Schaltfläche Zurück eine Rückkehr zum Begrüßungsfenster eingestellt.

    Wir haben lediglich die Erwähnung des Fensters mit der Lizenzvereinbarung gelöscht und sind durch das Fenster "gesprungen", wodurch die Reaktion der Schaltflächen "Zurück" und "Weiter" außer Kraft gesetzt wurde. Die Zeilen, die die Reaktion der Schaltflächen "Zurück" und "Weiter" im Fenster "Lizenzvereinbarung" bestimmen, konnten nicht entfernt werden, indem die Aktionen der Schaltflächen "Weiter" und "Zurück" in den Begrüßungsdialogen überschrieben und die Installationsmethode ausgewählt wurden. Der Dialog mit der Lizenz wurde bereits vom Installationsprozess ausgeschlossen.

    Wenn wir das Installationspaket jetzt zusammenstellen und ausführen, sehen wir dasselbe wie zuvor, jedoch ohne das Lizenzvereinbarungsfenster.

    Erstellen Sie Ihren eigenen Verknüpfungsdialog. Fügen Sie dem Projekt eine neue Datei hinzuWixUI_Shortcuts.wxs, in dem wir das Aussehen des neuen Dialogfelds definieren:



     
      
       
        
        
        
         1
        


                  Type="CheckBox"
             Height="18"
             Width="295"
             X="26" Y="58"
             Text="Создать ярлык на рабочем столе"
             Property="SHORTCUT_DESKTOP"
             CheckBoxValue="1" />
                  Type="CheckBox"
             Height="18"
             Width="295"
             X="26" Y="79"
             Text="Создать ярлык в меню Пуск"
             Property="SHORTCUT_PROGRAMMENU"
             CheckBoxValue="1" />

        
        
        
        
       

      

     



    * This source code was highlighted with Source Code Highlighter.


    Es gibt zwei Möglichkeiten, Dialogfelder zu erstellen: Erstellen Sie sie selbst, indem Sie den Code bearbeiten, oder verwenden Sie einen visuellen Editor, z. B. Sharp Develop. Ich habe genau das getan, indem ich den Dialog SetupTypeDlg.wxs (src \ ext \ UIExtension \ wixlib) zugrunde gelegt, den Überschuss entfernt und den fehlenden hinzugefügt habe.

    Wir werden unseren neuen Dialog in den Installationsprozess einbeziehen. Das neue Dialogfeld sollte nach dem Dialogfeld zur Auswahl der zu installierenden Komponenten oder nach dem Dialogfeld zur Auswahl der Installationsart angezeigt werden, wenn auf die Schaltflächen Normal oder Vollständig geklickt wird. Öffnen Sie die Datei WixUI_Wizard.wxs und fügen Sie Folgendes hinzu:
    1
    1

    * This source code was highlighted with Source Code Highlighter.


    Jetzt müssen Sie die Reaktion auf Tastenklicks in den Dialogen SetupTypeDlg , CustomizeDlg , VerifyReadyDlg neu definieren . Alles zusammen wird so aussehen (ich gebe keine unveränderten Zeilen):

    1

    1

    1



     WixUI_InstallMode = "InstallCustom"



     WixUI_InstallMode = "InstallTypical" OR WixUI_InstallMode = "InstallComplete"


    1

     WixUI_InstallMode = "Change"


     WixUI_InstallMode = "Repair" OR WixUI_InstallMode = "Remove"


    * This source code was highlighted with Source Code Highlighter.


    Wir sammeln, starten, sehen ein neues Fenster. Ein Problem ist, ob Kontrollkästchen vorhanden sind oder nicht - eine Verknüpfung auf dem Desktop wird nicht erstellt, im Startmenü wird sie trotzdem erstellt. Das heißt keine reaktion. Und das alles, weil wir nichts an diese Kontrollkästchen gebunden haben. Fügen Sie der Product.wxs- Datei zunächst zwei neue Eigenschaften hinzu :
    1
    1


    Unsere Checkboxen haben die gleichen Eigenschaften: Property = "SHORTCUT_DESKTOP" und Property = "SHORTCUT_PROGRAMMENU", daher die Verbindung. Wenn wir den Status der Kontrollkästchen im Dialogfeld ändern, ändert sich auch der Wert von Property. Jetzt müssen wir die Erstellung von Verknüpfungen und Eigenschaftswerten verknüpfen. Das geht ganz einfach. Die Bedingung wird der Komponente hinzugefügt:
    SHORTCUT_PROGRAMMENU

    Befindet sich der Ausdruck im Schlüssel? true, dann wird die Komponente installiert.

    Alles zusammen sieht so aus:

            Name="Блокнот"
          Description="$(var.ProductName)"
          Target="[INSTALLLOCATION]Notepad.exe"
          WorkingDirectory="INSTALLLOCATION"/>
     
     
     SHORTCUT_PROGRAMMENU


    * This source code was highlighted with Source Code Highlighter.


    Vergessen Sie nicht hinzuzufügen und für die ShortcutCalc-Komponente.

    Es müssen nur noch Desktop-Verknüpfungen hinzugefügt werden. Fügen Sie der Products.wxs- Datei ein neues Verzeichnis hinzu



    Beschreibung der Verknüpfungen in der Datei Shortcuts.wxs :

     
      
       
      

      
      SHORTCUT_DESKTOP
     


     
      
       
      

      
      SHORTCUT_DESKTOP
     



    * This source code was highlighted with Source Code Highlighter.


    Fügen Sie der Datei Features.wxs Verknüpfungslinks hinzu :

     
     
     

     
      
      
      
     



    * This source code was highlighted with Source Code Highlighter.


    Fast geschafft Es bleibt noch eine Bedingung zu erfüllen, bei einer normalen Installation sollte nur ein Notebook installiert werden. Um diese Bedingung zu erfüllen, fügen Sie hinzu in verantwortlich für die Installation des Rechners.
    INSTALLLEVEL=3

    Pegelparameter bei Verwendung drinnen ist ein Muss. Er legt den Level selbst festwenn die Bedingung erfüllt ist. In diesem Fall ist es INSTALLLEVEL = 3, und der Wert 3 wird auf die Eigenschaft INSTALLLEVEL gesetzt, wenn der Benutzer die Option Normale Installation ausgewählt hat . Wie habe ich es herausgefunden? Ich habe mir die Quellen des Dialogs angesehen, in denen die Art der Installation ausgewählt wurde. SetupTypeDlg.wxs (es gibt übrigens eine Menge interessanter Dinge)
    1

    Der Wert 0 des Level-Parameters bedeutet, dass die Installationsoption deaktiviert wird.

    Wir montieren, starten, installieren.

    Projektquellen können hier heruntergeladen werden

    . Das nächste Mal werde ich über CustomActions sprechen , eine sehr interessante Sache, mit der Sie dem Installationspaket beliebige Aktionen hinzufügen können.

    Jetzt auch beliebt: