Successfully reported this slideshow.
Windows Installer Xml Zaawansowane instalatory Bartłomiej Szafko
Agenda <ul><li>VS 2005 – jakie są możliwości </li></ul><ul><li>Dlaczego WiX </li></ul><ul><li>Budowa WiX </li></ul><ul><li...
VS 2005 <ul><li>w VS2005 jest cała grupa </li></ul><ul><li>Nie zdają egzaminu dla aplikacji desktopowych i webowych: </li>...
Dlaczego WiX <ul><li>Pozwala na kontrolę wszystkich aspektów tworzenia plików .msi: </li></ul><ul><ul><li>Lokalizacja </li...
Budowa WiX <ul><li>Plik .wxs plik xmlowy opisujący bazę msi </li></ul><ul><li>Candle tworzy pośredni plik .wixobj, tak jak...
Struktura pliku .wxs <ul><li>Product: </li></ul><ul><li>UpgradeCode powinien być stały dla jednego produktu </li></ul><ul>...
Struktura pliku .wxs - pusty <ul><li>     1   <? xml   version = &quot; 1.0 &quot;   encoding = &quot; UTF-8 &quot; ?> </l...
Struktura pliku .wxs - przykład <ul><li>     1   <? xml   version = &quot; 1.0 &quot;   encoding = &quot; UTF-8 &quot; ?> ...
UI w .wxs <ul><li>     1   <? xml   version = &quot; 1.0 &quot;   encoding = &quot; UTF-8 &quot; ?> </li></ul><ul><li>    ...
Lokalizacja cz.1 – .wxs <ul><li>     1   <? xml   version = &quot; 1.0 &quot;   encoding = &quot; windows-1250 &quot; ?> <...
Lokalizacja cz.1 – .wxl <ul><li>     1   <? xml   version = &quot; 1.0 &quot;   encoding = &quot; windows-1250 &quot; ?> <...
Na co pozwala jeszcze? <ul><li>Wykonywanie skryptów sql ( musimy zatroszczyć się o parametry logowania) </li></ul><ul><li>...
Narzędzia i przydatne adresy <ul><li>Strona domowa  http://wix.sourceforge.net  ( polecam wersje 3.0) </li></ul><ul><li>Bl...
<ul><li>DZIĘKUJE ZA UWAGĘ </li></ul><ul><li>PYTANIA??? </li></ul>
Upcoming SlideShare
Loading in …5
×

WiX Poznańska Grupa DotNet

794 views

Published on

Windows Installer XML Author:Bartłomiej Szafko

Published in: Technology
  • Be the first to comment

  • Be the first to like this

WiX Poznańska Grupa DotNet

  1. 1. Windows Installer Xml Zaawansowane instalatory Bartłomiej Szafko
  2. 2. Agenda <ul><li>VS 2005 – jakie są możliwości </li></ul><ul><li>Dlaczego WiX </li></ul><ul><li>Budowa WiX </li></ul><ul><li>Skrypty WXS – struktura </li></ul><ul><li>UI – interfejsy użytkownika </li></ul><ul><li>Lokalizacja </li></ul><ul><li>Pokaz działania WiX Votive w VS2005 </li></ul><ul><li>Narzędzia, przydatne adresy </li></ul>
  3. 3. VS 2005 <ul><li>w VS2005 jest cała grupa </li></ul><ul><li>Nie zdają egzaminu dla aplikacji desktopowych i webowych: </li></ul><ul><ul><li>Brak lokalizacji językowych </li></ul></ul><ul><ul><li>Nie ma możliwości MODYFIKACJI dialogów </li></ul></ul><ul><ul><li>Można dodać własne akcje tylko w .NET albo VBS </li></ul></ul><ul><ul><li>Brak wsparcia dla np. NGEN </li></ul></ul><ul><li>Najrozsądniejszą alternatywą jest InstallShield – wersja komercyjna dużo $$$ </li></ul>
  4. 4. Dlaczego WiX <ul><li>Pozwala na kontrolę wszystkich aspektów tworzenia plików .msi: </li></ul><ul><ul><li>Lokalizacja </li></ul></ul><ul><ul><li>Budowanie własnych dialogów / także modyfikacje </li></ul></ul><ul><ul><li>Tworzenie własnych akcji </li></ul></ul><ul><ul><li>Można uruchamiać poza IDE VS2005 </li></ul></ul><ul><ul><li>Jest darmowy </li></ul></ul><ul><li>Można zrobić wszystko co np. w InstallShield i więcej </li></ul><ul><li>Logo Certified for Windows </li></ul><ul><li>Używa: PHP,MySQL i oczywiście sam Microsoft </li></ul><ul><li>Szybko wprowadzane są nowości np. zgodność z Windows Installer 4.5 </li></ul><ul><li>Pierwszy projekt Open Source w Microsofcie </li></ul><ul><li>Rob Mensching „szef” projektu projektował instalacje dla Visty </li></ul>
  5. 5. Budowa WiX <ul><li>Plik .wxs plik xmlowy opisujący bazę msi </li></ul><ul><li>Candle tworzy pośredni plik .wixobj, tak jak kompilator </li></ul><ul><li>Light na jego podstawie tworzy docelowy plik .msi </li></ul><ul><li>Dark – dodatkowe narzędzie do tworzenia plików .wxs z gotowych .msi </li></ul><ul><li>Light – wykonuje dodatkowe testy na plikach nazywane Internal Consitency Checks </li></ul><ul><li>Używając Votive – wtyczki do VS nawet nie zauważamy działania candle i light; Votive tworzy nowy typ projektu </li></ul>Przykładowe wywołanie: Candle sample.wxs Light sample.wixobj
  6. 6. Struktura pliku .wxs <ul><li>Product: </li></ul><ul><li>UpgradeCode powinien być stały dla jednego produktu </li></ul><ul><li>Component: </li></ul><ul><li>Minimalna część produktu, traktowana jako całość </li></ul><ul><li>Identyfikowana unikalnym GUIDem </li></ul><ul><li>Może zawierać: pliki, grupy plików, foldery, komponenty COM, klucze rejestru, skrypty sql, i inne dane </li></ul><ul><li>Użytkownik końcowy nie działa bezpośrednio z componentami </li></ul><ul><li>Feature(funkcjonalność): </li></ul><ul><li>Zawiera componenty ( 1 lub więcej) lub inne featury </li></ul><ul><li>Typowe featury to np.: „Główny program” , „Pliki pomocy”, „Dodatkowe filtry” </li></ul><ul><li>Jeśli .msi posiada ui pozwala użytkownikowi wybrać </li></ul>
  7. 7. Struktura pliku .wxs - pusty <ul><li>     1   <? xml version = &quot; 1.0 &quot; encoding = &quot; UTF-8 &quot; ?> </li></ul><ul><li>     2   < Wix xmlns = &quot; http://schemas.microsoft.com/wix/2006/wi &quot; > </li></ul><ul><li>     3       < Product Id = &quot; 46022d73-ac24-4132-a555-f1205ec22eaf &quot; </li></ul><ul><li>     4               Name = &quot; PUT-PRODUCT-NAME-HERE &quot; </li></ul><ul><li>     5               Language = &quot; 1033 &quot; Version = &quot; 1.0.0.0 &quot; </li></ul><ul><li>     6               Manufacturer = &quot; PUT-COMPANY-NAME-HERE &quot; </li></ul><ul><li>     7               UpgradeCode = &quot; 8b53a2d8-313d-4eb9-861c-b95af3dd03c4 &quot; > </li></ul><ul><li>     8       < Package InstallerVersion = &quot; 200 &quot; Compressed = &quot; yes &quot; /> </li></ul><ul><li>     9       < Media Id = &quot; 1 &quot; Cabinet = &quot; WixProject2.cab &quot; EmbedCab = &quot; yes &quot; /> </li></ul><ul><li>    10       < Directory Id = &quot; TARGETDIR &quot; Name = &quot; SourceDir &quot; > </li></ul><ul><li>    11         < Directory Id = &quot; ProgramFilesFolder &quot; > </li></ul><ul><li>    12           < Directory Id = &quot; INSTALLLOCATION &quot; Name = &quot; PUT-APPLICATION-DIRECTORY-HERE &quot; > </li></ul><ul><li>    13             < Component Id = &quot; ProductComponent &quot; Guid = &quot; 1a47b12d-ad53-46dd-a181-fd3ae5603d16 &quot; > </li></ul><ul><li>    14               <!-- TODO: Insert your files, registry keys, and other resources here. --> </li></ul><ul><li>    15             </ Component > </li></ul><ul><li>    16           </ Directory > </li></ul><ul><li>    17         </ Directory > </li></ul><ul><li>    18       </ Directory > </li></ul><ul><li>    19       < Feature Id = &quot; ProductFeature &quot; Title = &quot; PUT-FEATURE-TITLE-HERE &quot; Level = &quot; 1 &quot; > </li></ul><ul><li>    20         < ComponentRef Id = &quot; ProductComponent &quot; /> </li></ul><ul><li>    21       </ Feature > </li></ul><ul><li>    22     </ Product > </li></ul><ul><li>    23   </ Wix > </li></ul>
  8. 8. Struktura pliku .wxs - przykład <ul><li>     1   <? xml version = &quot; 1.0 &quot; encoding = &quot; UTF-8 &quot; ?> </li></ul><ul><li>     2   < Wix xmlns = &quot; http://schemas.microsoft.com/wix/2006/wi &quot; > </li></ul><ul><li>     3       < Product Id = &quot; f7151ac4-3d9b-47f1-a75a-3ae91e5872f0 &quot; Name = &quot; Demo &quot; </li></ul><ul><li>     4             Language = &quot; 1033 &quot; Version = &quot; 1.0.0.0 &quot; </li></ul><ul><li>     5               Manufacturer = &quot; Advisor &quot; </li></ul><ul><li>     6               UpgradeCode = &quot; 8beabf9d-aad5-4299-8e81-a84a150d5924 &quot; > </li></ul><ul><li>     7       < Package InstallerVersion = &quot; 200 &quot; Compressed = &quot; yes &quot; /> </li></ul><ul><li>     8       < Media Id = &quot; 1 &quot; Cabinet = &quot; WixProject1.cab &quot; EmbedCab = &quot; yes &quot; /> </li></ul><ul><li>     9       < Directory Id = &quot; TARGETDIR &quot; Name = &quot; SourceDir &quot; > </li></ul><ul><li>    10         < Directory Id = &quot; ProgramFilesFolder &quot; > </li></ul><ul><li>    11           < Directory Id = &quot; CompanyFolder &quot; Name = &quot; Advisor &quot; > </li></ul><ul><li>    12             < Directory Id = &quot; INSTALLLOCATION &quot; Name = &quot; Demo &quot; > </li></ul><ul><li>    13               < Component Id = &quot; ProductComponent &quot; </li></ul><ul><li>    14                         Guid = &quot; 6c6bbcbb-dc14-4fec-9c22-12ad8ea70883 &quot; > </li></ul><ul><li>    15                 < File Id = &quot; DemoExe &quot; Name = &quot; demo.exe &quot; </li></ul><ul><li>    16                       Source = &quot; ..demoinDebugdemo.exe &quot; /> </li></ul><ul><li>    17               </ Component > </li></ul><ul><li>    18             </ Directory > </li></ul><ul><li>    19           </ Directory > </li></ul><ul><li>    20         </ Directory > </li></ul><ul><li>    21       </ Directory > </li></ul><ul><li>    22       < Feature Id = &quot; ProductFeature &quot; Title = &quot; Aplikacja demonstracyjna &quot; Level = &quot; 1 &quot; > </li></ul><ul><li>    23         < ComponentRef Id = &quot; ProductComponent &quot; /> </li></ul><ul><li>    24       </ Feature > </li></ul><ul><li>    25     </ Product > </li></ul><ul><li>    26   </ Wix > </li></ul>WixProject1.msi C:Program FilesAdvisorDemo
  9. 9. UI w .wxs <ul><li>     1   <? xml version = &quot; 1.0 &quot; encoding = &quot; UTF-8 &quot; ?> </li></ul><ul><li>     2   < Wix xmlns = &quot; http://schemas.microsoft.com/wix/2006/wi &quot; > </li></ul><ul><li>     3     < Product Id = &quot; 0A0DDA97-28DA-4b58-8994-CC9330FE033A &quot; Name = &quot; Demo &quot; </li></ul><ul><li>     4           Language = &quot; 1033 &quot; Version = &quot; 1.0.0.0 &quot; </li></ul><ul><li>     5             Manufacturer = &quot; Advisor &quot; </li></ul><ul><li>     6             UpgradeCode = &quot; 7BE87636-042D-48a3-8612-064A24CB8D9C &quot; > </li></ul><ul><li>     7       < Package InstallerVersion = &quot; 200 &quot; Compressed = &quot; yes &quot; /> </li></ul><ul><li>     8       < Media Id = &quot; 1 &quot; Cabinet = &quot; WixProject1.cab &quot; EmbedCab = &quot; yes &quot; /> </li></ul><ul><li>      9       < UIRef Id = &quot; WixUI_Mondo &quot; /> <!– referencja do wixuilib + .wxl w projekcie --> </li></ul><ul><li>    10       < Directory Id = &quot; TARGETDIR &quot; Name = &quot; SourceDir &quot; > </li></ul><ul><li>    11         < Directory Id = &quot; ProgramFilesFolder &quot; > </li></ul><ul><li>    12           < Directory Id = &quot; CompanyFolder &quot; Name = &quot; Advisor &quot; > </li></ul><ul><li>    13             < Directory Id = &quot; INSTALLLOCATION &quot; Name = &quot; Demo &quot; > </li></ul><ul><li>    14               < Component Id = &quot; ProductComponent &quot; </li></ul><ul><li>    15                         Guid = &quot; 6c6bbcbb-dc14-4fec-9c22-12ad8ea70883 &quot; > </li></ul><ul><li>    16                 < File Id = &quot; DemoExe &quot; Name = &quot; demo.exe &quot; </li></ul><ul><li>    17                       Source = &quot; ..demoinDebugdemo.exe &quot; /> </li></ul><ul><li>    18               </ Component > </li></ul><ul><li>    19             </ Directory > </li></ul><ul><li>    20           </ Directory > </li></ul><ul><li>    21         </ Directory > </li></ul><ul><li>    22       </ Directory > </li></ul><ul><li>    23       < Feature Id = &quot; ProductFeature &quot; Title = &quot; Aplikacja demonstracyjna &quot; Level = &quot; 1 &quot; > </li></ul><ul><li>    24         < ComponentRef Id = &quot; ProductComponent &quot; /> </li></ul><ul><li>    25       </ Feature > </li></ul><ul><li>    26     </ Product > </li></ul><ul><li>    27   </ Wix > </li></ul>WixProject2.msi WixProject2.wixproj
  10. 10. Lokalizacja cz.1 – .wxs <ul><li>     1   <? xml version = &quot; 1.0 &quot; encoding = &quot; windows-1250 &quot; ?> </li></ul><ul><li>     2   < Wix xmlns = &quot; http://schemas.microsoft.com/wix/2006/wi &quot; > </li></ul><ul><li>     3     < Product Id = &quot; B7521CC8-E99C-4320-A968-A4EBA1AA2828 &quot; Name = &quot; Demo &quot; </li></ul><ul><li>     4             Language = &quot; 1045 &quot; Version = &quot; 1.0.0.0 &quot; </li></ul><ul><li>     5             Manufacturer = &quot; Advisor &quot; </li></ul><ul><li>     6             UpgradeCode = &quot; C1ABB495-CB71-4bcd-8EA8-4955BC463F82 &quot; </li></ul><ul><li>     7             Codepage = &quot; 1250 &quot; > </li></ul><ul><li>     8       < Package InstallerVersion = &quot; 200 &quot; Compressed = &quot; yes &quot; /> </li></ul><ul><li>     9       < Media Id = &quot; 1 &quot; Cabinet = &quot; WixProject1.cab &quot; EmbedCab = &quot; yes &quot; /> </li></ul><ul><li>    10       < UIRef Id = &quot; WixUI_Mondo &quot; /> </li></ul><ul><li>    11       < Directory Id = &quot; TARGETDIR &quot; Name = &quot; SourceDir &quot; > </li></ul><ul><li>    12         < Directory Id = &quot; ProgramFilesFolder &quot; > </li></ul><ul><li>    13           < Directory Id = &quot; CompanyFolder &quot; Name = &quot; Advisor &quot; > </li></ul><ul><li>    14             < Directory Id = &quot; INSTALLLOCATION &quot; Name = &quot; Demo &quot; > </li></ul><ul><li>    15               < Component Id = &quot; ProductComponent &quot; </li></ul><ul><li>    16                         Guid = &quot; 6c6bbcbb-dc14-4fec-9c22-12ad8ea70883 &quot; > </li></ul><ul><li>    17                 < File Id = &quot; DemoExe &quot; Name = &quot; demo.exe &quot; </li></ul><ul><li>    18                       Source = &quot; ..demoinDebugdemo.exe &quot; /> </li></ul><ul><li>    19               </ Component > </li></ul><ul><li>    20             </ Directory > </li></ul><ul><li>    21           </ Directory > </li></ul><ul><li>    22         </ Directory > </li></ul><ul><li>    23       </ Directory > </li></ul><ul><li>    24       < Feature Id = &quot; ProductFeature &quot; Title = &quot; Aplikacja demonstracyjna &quot; Level = &quot; 1 &quot; > </li></ul><ul><li>    25         < ComponentRef Id = &quot; ProductComponent &quot; /> </li></ul><ul><li>    26       </ Feature > </li></ul><ul><li>    27     </ Product > </li></ul><ul><li>    28   </ Wix > </li></ul>WixProject3.msi WixProject3.wixproj
  11. 11. Lokalizacja cz.1 – .wxl <ul><li>     1   <? xml version = &quot; 1.0 &quot; encoding = &quot; windows-1250 &quot; ?> </li></ul><ul><li>     2   < WixLocalization Culture = &quot; pl-pl &quot; xmlns = &quot; http://schemas.microsoft.com/wix/2006/localization &quot; > </li></ul><ul><li>     3   < String Id = &quot; WixUIBack &quot; Overridable = &quot; yes &quot; > &amp; Cofnij </ String > </li></ul><ul><li>     4   < String Id = &quot; WixUINext &quot; Overridable = &quot; yes &quot; > &amp; Dalej </ String > </li></ul><ul><li>     5   < String Id = &quot; WixUICancel &quot; Overridable = &quot; yes &quot; > Anuluj </ String > </li></ul><ul><li>     6   < String Id = &quot; WelcomeDlg_Title &quot; Overridable = &quot; yes &quot; > Instalator [ProductName] </ String > </li></ul><ul><li>     7   < String Id = &quot; WelcomeDlgBitmap &quot; Overridable = &quot; yes &quot; > WixUI_Bmp_Dialog </ String > </li></ul><ul><li>     8   < String Id = &quot; WelcomeDlgDescription &quot; Overridable = &quot; yes &quot; > Ten wizard zainstaluje [ProductName] na Twoim komputerze. Kliknij Dalej aby kontynuować albo Anuluj aby opuścić instalator. </ String > </li></ul><ul><li>     9   < String Id = &quot; WelcomeDlgTitle &quot; Overridable = &quot; yes &quot; > {WixUI_Font_Bigger}Witamy w instalatorze [ProductName] </ String > </li></ul>WixProject3.msi WixProject3.wixproj
  12. 12. Na co pozwala jeszcze? <ul><li>Wykonywanie skryptów sql ( musimy zatroszczyć się o parametry logowania) </li></ul><ul><li>Instalowanie dla aktualnego / wszystkich </li></ul><ul><li>ikony / menu start / skróty pulpitowe </li></ul><ul><li>Instalowanie usług </li></ul><ul><li>Instalowanie witryn w IIS </li></ul><ul><li>Podpinanie własnych akcji ( najlepiej natywnych) </li></ul>
  13. 13. Narzędzia i przydatne adresy <ul><li>Strona domowa http://wix.sourceforge.net ( polecam wersje 3.0) </li></ul><ul><li>Blog autora: http://robmensching.com/blog/ (kiedyś http://blogs.msdn.com/robmen ) </li></ul><ul><li>Orca ( poglądanie .msi tutaj ) </li></ul><ul><li>http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en </li></ul><ul><li>Prezentacja będzie na http://slideshare.net i http://bartekszafko.inc.pl </li></ul>
  14. 14. <ul><li>DZIĘKUJE ZA UWAGĘ </li></ul><ul><li>PYTANIA??? </li></ul>

×