
Մեկնարկային (.wxs) ֆայլից վերջնական՝ Windows տեղակայվող ֆայլ (.msi) ստանալու պարզագույն սխեմա
Պարզագույն քայլեր
1.Ընդհանուր հայացք
Ինչպես արդեն նշեցինք WiX ծրագրային գործիքների համախումբը թույլ է տալիս մեկնարկային (.wxs) ֆայլերից ստանալ տեղակայվող բազաներ (.msi տիպի ֆայլեր):
Ֆայլերի այսպիսի ձևափոխության կարելի է հասնել հետևյալ հրամանների օգնությամբ (ենթադրվում է որ Sample.wxs-ը մեկնարկային ֆայլ է)
- candle.exe Sample.wxs - նախագործարկում և կոմպիլացնում է WiX մեկնարկային ֆայլերը, արդյունքում ստանալով միջանկյալ օբյեկտային (Sample.wixobj)ֆայլեր
- light.exe Sample.wixobj – միջանկյալ օբյեկտային (.wixobj)ֆայլերը ձևափոխում է վերջնական Windows տեղակայվող ֆայլերի (Sample.msi)
Այս երկու գործիքները սկզբունքորեն նման են մեզ շատ ծանոթ կոմպիլյատոր և կազմավորիչ զույգին: Դեռ ավելին՝ light գործիքը կատարում է նաև ավարտված տեղակայվող տվյալների բազայի (.msi) ստուգում՝ փորձելով հայտնաբերել հնարավոր բացթողումներ և պրոբլեմներ:
Մեր օրերում, ինչպես սովորաբար, մենք սահմանափակված չենք միայն հրամանային տողով; Microsoft Visual Studio-ի և SharpDevelop-ի նման միջոցները թույլ են տալիս ստեղծել WiX-ի հետ ինտեգրացված միջավայր: Այս դեպքում մենք կարող ենք VS ընդհանուր լուծման մեջ ստեղծել WiX տիպի նախագիծ և ծրագրավորման միջավայրից չկտրվելով կառուցել վերջնական տեղակայվող փաթեթներ:
WiX ծրագրային գործիքների օգնությամբ ստացվող .msi ֆայլերը տեղակայող (կատարվող) ծրագրեր չեն, այլ զուտ տվյալների տեղակայվող փաթեթներ: Նրանք պարունակում են տեղեկություններ՝ թե ինչ ենք մենք սպասում Windows Installer-ից, որ կատարի տեղակայման ընթացքում, ինչպես նաև օգտագործողի հետ առնչվելու ինտերֆեյսը: Իսկ թե ինչպե՞ս տեղակայել աշխատածրագրերն ու այլ ֆայլեր, ինչպե՞ս ձևափոխել կամ գրառում կատարել Windows-ի ռեգիստրում և այլնի մասին ծրագրային տրամաբանությունը պարունակվում է Windows Installer-ի մեջ:
Այս ամենը խոսում է այն մասին, որ WiX մեկնարկային (ելակետային .wxs) ֆայլերը չեն կառուցվում մեր սովորական ծրագրերի նման: Մեր կողմից գրված WiX ծրագրում հրամանների հաջորդական կատարման մասին խոսք անգամ չի կարող լինել: Չի կարելի կարծել, որ WiX-ի ելակետային ծրագրի տեքստի տողերի հրամանները կատարվում են՝ հաջորդելով մեկը մյուսին: WiX-ի մասին պետք է մտածել որպես ֆունկցիոնալ , նկարագրական լեզու, ոչ թե որպես սովորական ծրագրավորման լեզու:
Առավել ֆիզիկական առումով ասած, WiX-ը իրենից ներկայացնում է Windows Installer-ի փաթեթող (wrapper-թաղանթ) , որի հնարավորություններն ու սահմանափակումները թելադրվում են նրա հիմքում ընկած Windows Installer-ի հնարավորություններով:
2.Մեր առաջին WiX նախագիծը
Մեր առաջին WiX տեղակայվող օրինակը պարունակելու է քիչ թվով տեղակայվող մեծություններ: Այն բաղկացած է լինելու՝
- մեկ .exe երևակայական աշխատածրագրից,
- մեկ .dll գրադարանից,
- մեկ օգտագործողի ձեռնարկից
և որի համար մենք կկատարենք հետևյալ քայլերը՝
* WiX միջավայրի տեղակայումը օգտագործողի համակարգչում
- որպես նախապայման WiX-ի տեղակայումը պահանջում է ProjectAggregator.msi–ի տեղակայում օգտագործողի համակարգչում
- այնուհետև տեղակայում ենք WiX-ը ինքը
* Նախագծի ստեղծումը
- MS VS –ի միջավայրում սովորական (File - New - Solution) եղանակով ստեղծում ենք նոր դատարկ լուծում և նրա մեջ ստեղծում ենք երեք նոր նախագծեր՝
- WiX տիպի (SimpleSampleWix)
- Console application տիպի (SimpleSampleApp), այս նախագծին ավելացնում ենք մեկ տեքստային ֆայլ ևս readme.txt
- Class library տիպի (SimpleSampleDll)
Մեր նպատակն է լինելու վերջին երկու նախագծերի ելքային տվյալների համար հավաքել WiX ելակետային նկարագրություն (SimpleSampleWix.wxs) և այնուհետև նրանից ստանալ Windows տեղակայվող տվյալների բազա (SimpleSampleWix.msi), որը թույլ կտա նշված ֆայլերը տեղակայել նպատակային համակարգչի առանձնահատուկ ֆայլապանակում:
Ինչքան էլ մեր ընտրած խնդիրը պարզ է, այնուամենայնիվ Windows Installer-ը մեզ մատուցելու է հոյակապ ծառայություններ՝ ներառյալ մեր ծրագրի ավտոմատ գրառումը Control Panel > Add or Remove Programs ցուցակում: Համոզված լինելու համար, որ Windows Installer-ը մեր ծռագրի մասին տեղեկություն է պահում, մենք նրան կապահովենք որոշակի տվյալներով: Թեև ամեն մի տեղակայվող մեծություն ունի իր առանձնահատուկ անունը, Windows Installer-ը լոկ անունից բացի պահանջում է նաև յուրահատուկ իդենտիֆիկատոր (GUID): GUID-ները ազատ են և կարող ենք ստեղծել այնքան ինչքան կամենանք: Նրանք թույլ կտան իդենտիֆիկացնել՝ նույնացնել տեղակայվող փաթեթների յուրաքանչյուր մասը: GUID-ները առանձնակի են և չեն կրկնվում: Կան GUID-ներ ստեղծելու շատ գուրծիքներ, այդ թվում նաև այս մեկը:
Եթե օգտագործվող գործիքը GUID-ները ստեղծում է փոքրատառերով, ապա նախքան WiX տեղափոխելը հարկավոր է նրանք կոնվերտացնել մեծատառերի:
Նկատենք, որ այստեղ տրվող օրինակներում, բոլոր GUID-ները անվավեր են, ուստի և նախքան օգտագործելը հարկավոր է փոխարինել նորաստեղծներով:
Ամենամինիմալ կառուցվածքը, որ կարող է ունենալ ելակետային .wxs ֆայլը հետևյալն է՝
<?xml version=’1.0′ encoding=’utf-8′?>
<Wix xmlns=’http://schemas.microsoft.com/wix/2006/wi’>
<Product
Id=’NEW-GUID-2FCA-44f9-8C4F-30906EF7DB74}’
Name=’Test Package’
Language=’1033′
Version=’1.0.0.0′
Manufacturer=’My Company’
UpgradeCode=’{NEW-GUID-6CC5-459a-9EE4-017209DCF888}’
>
<Package
Description=’My first Windows installer package’
Comments=’This is my first Windows installer package’
Manufacturer=’My Company’
InstallerVersion=’200′
Compressed=’yes’
/>
</Product>
</Wix>
Ինչպես տեսնում ենք սա դատարկ XML նկարագրության է: Հավասարման նշանների ձախ մասերի բոլոր անունները WiX սքրիպտային լեզվին առանձնահատուկ անուններ են, որոնցից յուրաքանչյուրը պետք է ստանա իր ճշգրիտ արժեքը` հավասարման աջ մասից:
XML նկարագրության այս պատառը կարելի է տեղափոխել WiX նախագծի .wxs ֆայլի մեջ, փոխարինել GUID-ները նորաստեղծներով ևWiX նախագծի վրա մկնիկի աջ կտտոցից բացված կոնտեքստային ցանկից ընտրել Build կամ Rebuild: Նախագծի կառուցումը պետք է որ ընթանա առանց սխալների ևWiX նախագծի ելքում կունենանք SimpleSampleWix.msi Windows տեղակայվող տվյալների բազան: Այն կարելի է գործարկել նպատակային համակարգչի վրա՝ Windows Installer-ը տեսնելով, որ նրա մեջ առանձնակի ոչ մի նկարագրություն չկա, համակարգիչը թողնում անփոփոխ:
Զարգացնելով վերևի XML նկարագրությունը ի օգուտ մեր նպատակի իրականացմանը մենք կարող ենք ունենալ՝
<?xml version=’1.0′ encoding=’utf-8′?>
<Wix xmlns=’http://schemas.microsoft.com/wix/2006/wi’>
<Product
Id=’NEW-GUID -2FCA-44f9-8C4F-30906EF7DB74′
Name=’SimpleSampleWix’
Language=’1033′
Version=’1.0.0.0′
Manufacturer=’My Company’
UpgradeCode=’NEW-GUID -6CC5-459a-9EE4-017209DCF888′
>
<Package
Description=’My first Windows installer package’
Comments=’This is my first Windows installer package’
Manufacturer=’My Company’
InstallerVersion=’200′
Compressed=’yes’
/>
<Media Id=”1″ Cabinet=”media1.cab” EmbedCab=”yes” />
<Directory Id=”TARGETDIR” Name=”SourceDir”>
<Directory Id=”ProgramFilesFolder”>
<Directory Id=”MyCompany” Name=”MyCompany”>
<Directory Id=”SimpleSampleWix” Name=”SimpleSampleWix”>
<Component Id=”SimpleSampleAppexe” Guid=”NEW-GUID -EFF6-428c-A90B-A405384DE4D9″>
<File Id=”SimpleSampleApp.exe” Source=”..\bin\$ (var.SimpleSampleApp.Configuration)\SimpleSampleApp.exe” />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
<Feature Id=”ProductFeature” Title=”SimpleSampleWix.Setup” Level=”1″>
<Feature Id=”SimpleSampleAppexe” Title=”SimpleSampleApp.exe” Description=”SimpleSampleApp.exe.” Level=”1″>
<ComponentRef Id=”SimpleSampleAppexe” />
</Feature>
</Feature>
</Product>
</Wix>
Այո, սա կլինի մեր առաջին իմաստալից WiX ելակետային նկարագրությունը, որը կարելի է տեղափոխել WiX նախագծի ելակետային ֆայլ և փորձարկել:
Ավելացնելով հետևյալ նկարագրությունները ևս՝
<Component Id=”readmetxt” Guid=”NEW-GUID -0995-453a-8D93-7F5AD9AD36AE”>
<File Id=”readme.txt” Source=”..\bin\$ (var.SimpleSampleApp.Configuration)\readme.txt” />
</Component>
<Component Id=”SimpleSampleDlldll” Guid=”NEW-GUID-AF42-4c86-8CC0-EA6297A22B32″>
<File Id=”SimpleSampleDll.dll” Source=”..\bin\$ (var.SimpleSampleDll.Configuration)\SimpleSampleDll.dll” />
</Component>
և
<Feature Id=”readmetxt” Title=”readme.txt” Description=”readme.txt” Level=”1″>
<ComponentRef Id=”readmetxt” />
</Feature>
<Feature Id=”SimpleSampleDlldll” Title=”SimpleSampleDll.dll” Description=”SimpleSampleDll.dll.” Level=”1″>
<ComponentRef Id=”SimpleSampleDlldll” />
</Feature>
կարող ենք վերջնականապես փորձարկել մեր ամբողջական լուծումը:
Նկատենք, որ $ (var.SimpleSampleDll.Configuration) և $ (var.SimpleSampleApp.Configuration) մեծությունների որոշման համար բավական է WiX նախագծի վրա մկնիկի աջ կտտոցից բացված կոնտեքստային ցանկից ընտրել Add Reference հրամանը և բացված պատուհանի օգնությամբ WiX նախագծին ավելացնել հղումներ մյուս երկու նախագծերին (SimpleSampleApp, SimpleSampleDll):
(Շարունակելի)
One Trackback
[...] LinkGard Software Blog in Armenian Skip to content Մեր Մասին « WiX Ծրագրային Գործիքների Համախումբ: Մաս 2 [...]