WiX Ծրագրային Գործիքների Համախումբ: Մաս 2

Նախորդ Հաջորդ

.wsx -> candle -> .wixobj -> light -> .msi

Մեկնարկային (.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) եղանակով ստեղծում ենք նոր դատարկ լուծում և նրա մեջ ստեղծում ենք երեք նոր նախագծեր՝
  1. WiX տիպի (SimpleSampleWix)
  2. Console application տիպի (SimpleSampleApp), այս նախագծին ավելացնում ենք մեկ տեքստային ֆայլ ևս readme.txt
  3. 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):

(Շարունակելի)


This entry was posted in Ծրագրերի Տեղակայում and tagged , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

One Trackback

  1. [...] LinkGard Software Blog in Armenian Skip to content Մեր Մասին « WiX Ծրագրային Գործիքների Համախումբ: Մաս 2 [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>