Instalator w pliku msi część 3

W poprzednim artykule zbudowałem podstawowy instalator w MSI za pomocą Windows Installer Xml. Jego wygląd pozostawiał bardzo wiele od życzenia ? nie wyświetlał nic oprócz nudnego progress bara, a użytkownik nie miał możliwości np wyboru folderu docelowego.

W tym poście dodam interfejs użytkownika pozwalający na wybór typu instalacji, ustawienie folderu docelowego oraz wybór feature. Dodatkowo przy ponownym uruchomieniu zainstalowanego już produktu pojawi się okienko dające nam możliwość usunięcia, naprawienia albo zmiany parametrów instalacji.

WiX domyślnie zawiera mechanizmy pozwalające na szybkie dodanie interefejsu użytkownika. Biblioteka WiXUiExtension.dll  zawiera skompilowane skrypty wxs definiujące okna dialogowe. Nawiasem mówiąc podczas mojej prezentacji w Krakowie wywiązała się ciekawa dyskusja na temat czy jest to natywna biblioteka czy nie. Okazuje się że jest to assembly .netowe i w resourcach umieszczona jest skompilowana biblioteka wixlib, która jest dołączana do wynikowego instalatora.

Żeby wzbogacić instalatora z poprzedniego artykułu należy najpierw dodać referencje do WixUiExtension.dll:

wixcz0301

wixcz0302

Jedyne, co tak naprawdę musimy dodać to element UIRef:

<UIRef Id="WixUI_Mondo"/>

Wix wspiera parę rodzajow interfejsów użytkownika:

  • WixUI_Mondo ? pełny interfejs z możliwością określenia rodzaju instalacji(pełna, domyślna, użytkownika), określeniem foldru docelowego(jeśli na to zezwoliśmy)
  • WixUI_FeatureTree ? pozwala na wybór feature
  • WixUI_InstallDir ? pozwalający tylko na wybór docelowego folderu
  • WixUI_Minimal ? tylko zgoda na licencje oprogramowania

Ostatecznie zmodyfkownay skrypt jest poniżej zwróć uwagę na ustawienia codepage oraz language:

<?xml version="1.0" encoding="windows-1250"?>
  <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

    <Product Id="5c899cab-095c-4f4e-a57e-9b03dc4cd322" Name="WixDemo2" Language="1045" Codepage="1250" Version="1.0.0.0" 

           Manufacturer="WixDemo2" UpgradeCode="994dbe73-b654-482d-8dfd-3dcdc54d0f30">

        <Package InstallerVersion="200" Compressed="yes" />

        <Media Id="1" Cabinet="WixDemo2.cab" EmbedCab="yes" />

        <Directory Id="TARGETDIR" Name="SourceDir">

            <Directory Id="ProgramFilesFolder">

                <Directory Id="INSTALLLOCATION" Name="WixDemo2">                                        <Component Id="ProductComponent" Guid="53f6485a-8034-4022-9386-ca83dbe3cc07">

            <File Id="Exe" Source="..\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe"/>

                    </Component>

                </Directory>

            </Directory>

        </Directory>

        <Feature Id="ProductFeature" Title="WixDemo2" Level="1" ConfigurableDirectory="INSTALLLOCATION">

            <ComponentRef Id="ProductComponent" />

        </Feature>

    <UIRef Id="WixUI_Mondo"/>

    </Product>

</Wix>

Warto też skorzystać z ustawień projektu i zmienić domyślny język na pl-PL będziemy wtedy mieli instalator po polsku. Na szczęście WiX zawiera domyślnie polskie lokalizacje więc nie  musimy się martwić o tłumaczenie:

wixcz0303

Po tych operacjach instalator będzie miał interfejs i polskie teksty, jak to wygląda można zobaczyć na filmie:


wix część 3 – user interface from bartek szafko on Vimeo.

4 thoughts on “Instalator w pliku msi część 3

  1. […] WixUIExtension ? dialogi, interfejs użytkownika, pisałem o tym w jednym z postów o WiX […]

  2. […] poprzedniej części stworzyłem instalator z interfejsem użytkownika. W tej części zbrandujemy instalator. Po […]

  3. […] w pliku msi część 4 W poprzedniej części stworzyłem instalator z interfejsem użytkownika. W tej części zbrandujemy instalator. Po […]

  4. […] już wszystko po staremu np budując prosty instalator z UI, o którym już kiedyś pisałem. Co cieszy dostępna jest Polska lokalizacja odrazu z […]

Leave a Reply

Your email address will not be published. Required fields are marked *