
Mellékelt példa megnyitása előtt szükséges egy WebSample nevű virtuális könyvtár létrehozása, mely a példa mappájában található WebSample alkönyvtárra mutat. Ehhez nyissa meg a mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
A Visual Studio.NET rendszerben az alkalmazások hordozhatóságát biztosító lehetőségek a 6.0-ás verziójához képest eltérő stratégiát követnek. A korábbi rendszerekben csak Windows-os alkalmazások telepítésére alkalmas Windows Installer projektek létrehozására volt lehetőség, vagy a modulok összefésülésére. Manapság azonban szükség van arra, hogy akár minden egyes számítógépre feltelepítsük alkalmazásainkat egy többrétegű megoldásban.
Itt kell megjegyezni, hogy a Visual Studio 6.0 verziójával készített Windows Installer projektek állományai (.wip), melyek a Visual Studio Installer add-in for Visual Studio 6.0 eszközzel készültek, nem nyithatók meg a Visual Studio.NET segítségével.
A VS.NET külön csoportot szentelt a telepítőprogramok létrehozását segítő Template-eknek. A Setup and Deployment Projects projektcsoportban 4 projekttípus segítségével készíthetünk ilyen alkalmazásokat. Ezek a következők: Merge Module Project, Setup Project, Web Setup Project, és Cab Project. Ezek sora kiegészül még egy típussal, melyben egy varázsló segít bennünket a kiválasztott projekt lépésről-lépésre történő elkészítésében. Ennek neve Setup Wizard. A 4 korábban említett projekttípus a következő típusú programok telepítésére használható:
| Projekttípus |
Jellemző |
| Merge Module Project |
Egy csomagban tárol összetett alkalmazásokban, vagy több alkalmazás által megosztva használt komponenseket. |
| Setup Project |
Windows-os alkalmazások telepítésére. |
| Web Setup Project |
Webes alkalmazások telepítésére. |
| Cab project |
Kabinet fájlok létrehozása a böngészőkbe való letöltéshez. |
A Merge Module csomagok lehetővé teszik, hogy komponenseket, vagy fájlokat helyezzünk el egy önálló csomagban, előmozdítva az alkalmazások közötti megosztását az adott alkotóknak. Az eredmény egy .msm kiterjesztésű állomány, mely már tetszőleges típusú telepítő projektjében elhelyezhető.
A Cab projektek segítségével képesek vagyunk arra, hogy egy tetszőleges ActiveX alkalmazás állományait egy .cab kiterjesztésű állományba csomagoljuk, és a Web szerverről a böngészőnkbe letöltve ott működtessük.
A Setup projektek a telepítendő állományokat alapértelmezésben – amíg meg nem változtatjuk a telepítés célhelyét -, a Program Files mappában helyezik el egy HOME alkönyvtárban.
A Web Setup projektek a Webes alkalmazásokat a számítógépen futó IIS egy megadott nevű virtuális könyvtárában helyezik el.
A Setup Wizard projekt segítségével meg kell adnunk, hogy milyen típusú telepítő alkalmazást kívánunk létrehozni, majd a project függvényében megválaszthatjuk a telepítendő állományok körét.
A cikk további részében bemutatjuk a mellékelt példában létrehozott telepítő alkalmazásokat. A példa WinSample nevű projektje egy egyszerű Windows-os alkalmazás, melyet a WinSetup telepítővel helyezhetünk el a merevlemez egy tetszőleges helyén, tetszőleges számítógépen.
A WebSample projekt egy Webes alkalmazás. Az alkalmazás állományait tartalmazó virtuális könyvtárat a WebSetup alkalmazás segítségével hozhatjuk létre. A telepítő elhelyezi a virtuális mappa fizikai mappájában az alkalmazás futtatásához szükséges állományokat.
A SharedClass mappában egy osztálykönyvtár kódja található, melynek példányait mind a Windows-os, mind pedig a Webes alkalmazás használja.
A WSetup projekt egy Merge Module kódját tartalmazza, melybe a SharedClass projekt által generált DLL-t csomagoltuk, így átadható a telepítő alkalmazások valamelyikének.
WinSetup project
A Windows-os alkalmazások telepítésére alkalmas projektek a Microsoft Windows Installer technológiára épülnek. A technológia a Windows 95 óta elérhető. A Windows Installer technológia alapja egy adat-vezérelt modell, melyben a programok, alkalmazások által használt állományokat, modulokat és telepítési információkat egyetlen csomagba gyúrták.
A hagyományos „script” telepítő alkalmazások az úgynevezett procedurális modellre épültek. Alapvető különbség a két módszer között, hogy míg a script-alapú telepítők a telepítés „hogyan”-jára koncentráltak, addig a Windows Installer telepítők a telepítés tárgyát képező alkotókra helyezték a hangsúlyt („mit”).
A Windows Installer használatával minden számítógép rendelkezik egy saját adatbázissal, mely tartalmazza a telepítendő alkalmazások információit, a telepítendő fájlokat, a regisztrációs adatbázisba írandó kulcsokat és a komponenseket. Mikor az alkalmazás eltávolításra kerül, akkor az adatbázis ellenőrzi, hogy a program által használt állományokat (például DLL-eket) használja-e más, a rendszerben telepített alkalmazás. Ez lehetővé teszi, hogy megelőzzük más programok által használt állományok eltávolítását, mely a programok összeomlását okozza.
A Windows Installer technológia támogatja az „önjavítás” lehetőségét is, amely automatikusan újratelepíti a felhasználó által véletlenül törölt állományokat.
A Windows Installer segítségével lehetőség nyílik arra is, hogy a telepítés folyamatát – adatbázisok témaköréből ismert kifejezéssel élve - úgymond visszagörgessük (rollback). Például, ha egy alkalmazás telepítésekor szükséges egy adatbázis, mely nincs a számítógépen telepítve, akkor a telepítés leállítható, és az adatbázis telepítése után a folyamat folytatható.
A WinSetup mappában található kód lefordítása után generálódik néhány állomány, melyek közül a WinSetup.msi a legfontosabb. Ennek elindításával indítható el a telepítés folyamata. Lássuk, milyen alkotók kerültek a projekt kódjába.
A Dected Dependencies almappába kerülnek a futtatáshoz esetlegesen szükséges DLL-ek, valamint a Merge Module komponensek, melyek szintén a működéshez szükségesek. A Primary Output menüpontra kattintva az egér jobb gombjával feltárul egy menü, melyből 3 pont választható:
- Dependencies (függőségek): a megjelenő ablakban tekinthetők meg a futáshoz szükséges állományok nevei, valamint a névterek.
- ExcludeFilter: a projektből ideiglenesen eltávolított állományok listája.
- Outputs: az állomány futtatható állománya elérési útvonallal.
A projekt esetén megadhatók még információk a telepítésre vonatkozóan. Beállíthatjuk például, hogy legyen-e kérdés arra vonatkozóan, hogy a futtatható állományra mutató ikon jelenjen-e meg a Start menüben, vagy az Asztalon.
WebSetup projekt
Az ilyen alkalmazás tehát a Webes alkalmazásaink telepítéséért felelősek. Elvégezhetők a regisztrációs folyamatok csakúgy, mint a Windows-os alkalmazások telepítői esetén. A Webes alkalmazás elkészülte után elegendő egy Web Setup projektet elkészíteni, a generált .msi állományt a Web szervert futtató számítógépre másolni, és elindítani azt.
Itt kell megemlíteni, hogy a telepítéshez a számítógépen Adminisztrátor jogosultságra van szükség.
Természetesen lehetőség van arra is, hogy egy tetszőleges Windows-os alkalmazás telepítőjét publikáljuk a Webes alkalmazás egy oldalán. Ekkor annak Setup programját kell a kimeneti programcsoportban elhelyezni a Web Setup projektben.
Ahogy a Windows-os telepítőknél, itt is találunk egy Dected Dependencies almappát, melybe szintén a futtatáshoz esetlegesen szükséges DLL-ek, valamint a Merge Module komponensek kerülnek.
A Content Files csoportban kell megadnunk a Webes alkalmazás konfigurációs állományait, a Global.asax állományt, valamint ASP.NET alkalmazások esetén a WebForm-ok állományait. A csoport felbukkanó menüjében az Outputs menüpontot kiválasztva meg is nézhetjük ezeket.
A Primary Outputs csoportban a felbukkanó menüjében az Outputs almenüpontra kattintva láthatjuk a Web-alkalmazás futtatását lehetővé tevő DLL-t, jelen példában a WebSample.dll állományt.
WSetup projekt
A Merge Modul projektek lehetővé teszik újrafelhasználható telepítő komponensek létrehozását. Működésük hasonló a DLL-ek funkcionalitására. Ezek a dinamikus könyvtárak kódokat osztanak meg alkalmazások között. Az említett modulok pedig a telepítéshez szükséges kódokat osztják meg a Windows-os alkalmazásokat telepítő programok között.
Az .msm kiterjesztésű állomány tartalmazza a telepítendő állományokat, a telepítő logikát, valamint a regisztrációs bejegyzéseket. Egyedül nem installálható, azonban komponensek installálása esetén meg kell adnunk ezt az állományt a telepítő programok számára.
A komponensek korrekt verziókövetése érhető el a modul felhasználásával. Az elkészített modul módosítására nincs szükség, hiszen az új verziójú komponens telepítéséhez egyszerűen egy új modult kell létrehozni, mely a helyes információkat tartalmazza. Az eltérő verziókból adódó inkompatibilitást elkerülendő, mindig ajánlatos a modult használni olyan esetekben, amikor a komponenst több alkalmazás használhatja egyszerre.
A mellékelt példában csak azt mutatjuk be, hogy miként hozható létre egy Merge Modul. A modul Detected Dependencies alkönyvtárában láthatjuk, hogy a SharedClass projekt fordítása után generálódó SharedClass.dll állományt tartalmazza, mint több alkalmazás által használt állományt.
Amennyiben az adott, a modul által hivatkozott erőforrást több alkalmazás is használhatja egy időben, akkor is elegendő az egyik alkalmazás telepítőprogramjában megadni a modul .msm állományát.
Az ilyen modulokat összevetve a Windows Installer alkalmazásokkal azt tapasztalhatjuk, hogy a két telepítő rendszer között a leglényegesebb különbség a célközönség. Ugyanis minden olyan erőforrás (HTML oldal, futtatható állomány, dokumentumok), amit a felhasználók használnak fel, a Windows Installer alkalmazás által telepítendő, amit pedig a fejlesztők használnak elsősorban, azt a Merge Modul segítségével legyen telepítve. Amit persze a fejlesztők, hogy a végfelhasználóhoz eljuttassák, szintén Installer-be csomagolnak.