Windows Installer Windows Installer XML Andrea Číková Martin Osovský Windows Installer • Pôvodne Microsoft Installer (MSI) • Štandard pre inštalovanie desktopových aplikácií na OS Windows • Inštalácia sa deje pomocou tzv. inštalačných balíčkov (MSI balíčky) • MSI balíčky sú vlastne relačné databázy obsahujúce všetky informácie, ktoré Windows Installer potrebuje k nainštalovaniu a odinštalovaniu aplikácie Štruktúra MSI balíčka Fázy inštalácie • User interface fáza – užívateľ má možnosť prispôsobiť si inštaláciu pre svoje potreby • Execute fáza – samotná inštalácia - Immediate mode – vytvorenie vnútorného skriptu - Deferred mode – vykonanie skriptu v kontexte privilegovanej Windows Installer služby • Rollback fáza - pre každú operáciu je vygenerovaná protioperácia, ktorá odstráni vykonanú zmenu v systéme. Windows Installer XML (WiX) • Sada nástrojov pre vytváranie MSI balíčkov z XML dokumentov • 2004 Rob Mensching a spol. • V súčasnosti stabilná verzia 3.0 • Open source, free, download • Nástroje WiXu a ich vzájomná spolupráca Keď použijete WiX... • Všetky spustiteľné súbory budú zabalené v jednom balíčku, čo uľahčí distribúciu aplikácie. • Software bude automaticky registrovaný v Add/Remove Programs. • Windows sa pri odinštalovaní postará o odstránenie všetkých komponent, z ktorých je váš produkt utvorený. • Ak sú niektoré súbory náhodou odstránené, bude ich možné obnoviť voľbou Repair po kliknutí pravým tlačítkom na MSI balíček. • Bude možné vytvoriť rôzne verzie inštalačných programov a zistiť, ktorá verzia bola nainštalovaná. • Bude možné vytvoriť patch na aktualizáciu len časti aplikácie. • Ak počas inštalácie dôjde k niečomu neočakávanému, bude možné vrátiť systém do predchádzajúceho stavu. • Bude môžné vytvoriť Sprievodcu inštaláciou. Práca s WiXom • Vytvorte .wxs súbor v obyčajnom textovom editore (napr. Notepad) a následne pomocou príkazov príkazového riadku ho skompilujte a zlinkujte do výsledného .msi súboru. • Použite Votive – dodatok k Visual Studiu (VS 2005 a 2008), ktorý poskytuje WiX IntelliSense, zvýrazňovanie syntaxe a šablóny WiX projektov. • Použite produkty vytvorené priamo pre WiX (napr. WixEdit). XML elementy Každý WiX projekt musí obsahovať nasledujúce elementy: • XML deklaráciu • element Wix, ktorý slúži ako koreňový element • element Product, ktorý je následníkom elementu WiX a všetky ostatné elementy sú jeho potomkovia • element Package • element Media • aspoň jeden element Directory s aspoň jedným elementom Component ako potomkom • element Feature XML deklarácia a element Wix • element Wix môže obsahovať atribút RequiredVersion - .wxs projekt nebude môcť byť skompilovaný, pokiaľ na cieľovom počítači nebude nainštalovaná požadovaná, príp. vyššia verzia WiXu Element Product • Je vnorený do elementu Wix • Obsahuje charakteristiku inštalovaného softwaru (meno, jazyk, výrobcu, verziu,...) • Atribút Id reprezentuje tzv. ProductCode – GUID jednoznačne identifikujúci váš software; Id=“*” – pri každom preklade vytvorený nový GUID • Atribút Language • Atribút Version vo formáte [MajorVersion].[MinorVersion].[Build].[Revision] Element Package • Je vnorený do elementu Product • Popisuje samotný inštalačný program • Atribút Compressed=“yes” – všetky MSI zdroje budú zabalené do CAB súboru • Atribút InstallerVersion – verzia nutná k inštalácií Element Media • Je popri elemente Package vnorený do elementu Product • Tento element umožňuje rozdeliť balíček na viac častí, alebo nechať všetko v jednom • Pre každý element Media bude vytvorený samostatný CAB súbor Element Directory • Najjednoduchšie je vnoriť váš adresár do niektorého z preddeklarovaných adresárov • Hierarchiu Directory elementov musíte vždy začať s elementom s TARGETDIR ako Id atribútom a SourceDir ako Name atribútom • Pri vytváraní vlastného adresára musíte uviesť atribút Name, podľa ktorého bude pomenovaný • Do adresára môžete niečo uložiť priamo cez element Component, alebo nepriamo použitím elementu DirectoryRef (atr. Id určuje požadovaný adresár) Element Directory - priame vloženie Element Directory - nepriame vloženie Element Component • Každý súbor musí byť pred inštaláciou zabalený v nejakom komponente • Komponenty, identifikované GUIDom, umožňujú nájsť každý nainštalovaný súbor – informácie o nich sú pri inštalácií ukladané do registra • Komponent obsahuje súbory, kľúče a hodnoty registra,... • Komponent by mal obsahovať maximálne jeden súbor – súvislosť s atr. KeyPath • Komponent sa inštaluje aj odinštalováva ako jeden celok! Element File • Reprezentuje akýkoľvek súbor • Vždy by mal obsahovať atr. Id, Source a KeyPath • Ak nešpecifikujete atr. Name, súbor bude pomenovaný tak, ako je uvedené v atr. Source • Nastavenie atribútu KeyPath na hodnotu yes zabezpečuje prípradnú možnosť opravy Vytvorenie prázdneho priečinku Element Feature • Feature je skupina komponentov, ktoré sa majú nainštalovať naraz • Vo všeobecnosti by v jednej Feature mali byť komponenty, ktoré na sebe závisia, prípadne vytvárajú jeden spoločný celok • Jednotlivé komponenty sú do elementu Feature pridávané pomocou elementu ComponentRef, ktorý má atribút Id korešpendujúci s Id elementu Component Ďalšie možnosti • Element InstallUISequence • Element InstallExecuteSequence (ScheduleReboot,...) • Element Upgrade • … Použité zdroje • Nick Ramirez: WiX: A Developer's Guide to Windows Installer XML, October 2010 Otázky? Ďakujem za pozornosť