|
ZaΦßteΦnφk |
PokroΦil² |
Profesionßl |
|||||
|
|
|
||||||
DistribuΦnφ
jednotky /1. dφl Jak se tvo°φ distribuΦnφ jednotky aplikacφ |
||||||||
|
|
Budete pot°ebovat
p°ibli₧n∞ 80 minut |
|
OperaΦnφ systΘm
pou₧it² v p°φsp∞vku: Windows 2000 V²vojovΘ nßstroje:
Visual Studio .NET |
||||
|
Milφ Φtenß°i,
zcela urΦit∞ nenφ pochyb o tom, ₧e proces rozmφs¥ovßnφ aplikacφ, resp. tvorby pokroΦil²ch distribuΦnφch jednotek aplikacφ, mß ve v²voji softwaru svΘ nezastupitelnΘ mφsto. I kdy₧ aplikace spolehliv∞ plnφ vÜechny svΘ funkce, prßv∞ od zp∙sobu rozmφs¥ovßnφ a poslΘze samotnΘ instalace zßvisφ do znaΦnΘ mφry skuteΦnost, zdali bude mφt u finßlnφho u₧ivatele ·sp∞ch, Φi nikoliv. Jestli₧e pozorn∞ sledujete naÜφ programßtorskou rubriku o Visual Basicu, jist∞ vφte, ₧e problematice tvorby jednoduchΘ distribuΦnφ jednotky jsme se ji₧ v∞novali. V dneÜnφ lekci ovÜem p∙jdeme mnohem dßl a ukß₧eme si, jakΘ pokroΦilΘ mo₧nosti nßm Visual Basic .NET nabφzφ prßv∞ v oblasti tvorby a nßslednΘ konfigurace instalaΦnφch projekt∙.
Obsah |
Tvorba
testovacφ aplikace a zßkladnφho instalaΦnφho projektu |
Ukßzka
zßkladnφch konfiguraΦnφch mo₧nostφ instalaΦnφho projektu |
Rychl² zaΦßtek aneb p°φkaz
XCOPY v praxi
Ne, nebojte se, nebudeme si demonstrovat pou₧itφ tohoto p°φkazu v prost°edφ operaΦnφho systΘmu MS-DOS, i kdy₧ poΦßtky vzniku p°φkazu XCOPY sahajφ do prßv∞ zmφn∞nΘho prost°edφ. SkuteΦnostφ ovÜem je, ₧e stejnojmenn² p°φkaz se dostal takΘ do p°φkazovΘ °ßdky Visual Studia .NET. V²znam a aplikace p°φkazu ve verzi .NET naproti vÜemu z∙stßvß podobnß: Pomocφ p°φkazu XCOPY m∙₧ete snadno uskuteΦnit kopφrovacφ proces, p°i kterΘm dojde k vytvo°enφ kopie zdrojov²ch dat (tedy dat, kterΘ se nachßzejφ v jistΘ slo₧ce, p°φpadn∞ takΘ ve vno°en²ch podslo₧kßch). P°esto₧e jde o nejjednoduÜÜφ cestu, jak p°emφstit zdrojovΘ ·daje do slo₧ky cφlovΘho poΦφtaΦe, je tato cesta pln∞ funkΦnφ.
Uve∩me si ihned mal² p°φklad, abyste vid∞li, jak lze p°φkaz XCOPY pou₧φt v praxi. Pov∞zme, ₧e mßme vÜechny pot°ebnΘ soubory, kterΘ tvo°φ komplexnφ skeleton aplikace, sdru₧eny v jednΘ slo₧ce s nßzvem Moje_Aplikace na disku C. Aby bylo mo₧nΘ p°ekopφrovat obsah uvedenΘ slo₧ky nap°φklad do stejnojmennΘ slo₧ky, ovÜem na disk D, ud∞lejte toto:
Obr. 1 û SpuÜt∞nφ p°φkazovΘ °ßdky Visual Studia .NET
Obr. 2 û Zadßnφ p°φkazu XCOPY
v p°φkazovΘ °ßdce
Vysv∞tleme si podrobn∞ji cel² zßpis p°φkazu. Za jmΘnem p°φkazu je specifikovßna cesta ke zdrojovΘ slo₧ce, resp. k slo₧ce, kterß obsahuje vÜechny pot°ebnΘ zdrojovΘ soubory. Aby p°φkaz mohl sprßvn∞ pracovat, je ovÜem nutnΘ dodat i cestu k cφlovΘ slo₧ce (v naÜem p°φpad∞ mß tato cesta podobu d:\Moje_Aplikace). Nakonec je zadßn takΘ p°φznak /s, jen₧ zabezpeΦφ, aby byly p°emφst∞ny vÜechny pod°φzenΘ slo₧ky hlavnφ slo₧ky.
Obr. 3 û UrΦenφ formy ulo₧enφ
cφlov²ch dat
Obr. 4 û Po ukonΦenφ
kopφrovacφho procesu je zobrazena informace o poΦtu p°emφst∞n²ch soubor∙
|
Krom∞ p°φznaku /s disponuje p°φkaz XCOPY takΘ spoustou
jin²ch a velmi u₧iteΦn²ch modifikßtor∙. Pokud si je chcete prohlΘdnout,
zadejte do p°φkazovΘ °ßdky p°φkaz HELP XCOPY. |
Pravd∞podobn∞ budete souhlasit, kdy₧ °eknu, ₧e pou₧itφ p°φkazu XCOPY je opravdu trivißlnφ. I kdy₧ se jednß bezesporu o snad nejrychlejÜφ metodu rozmφs¥ovßnφ aplikacφ, je d∙le₧itΘ mφt na pam∞ti n∞kolik skuteΦnostφ, kterΘ se s tφmto p°φkazem p°φmo vß₧ou. Tak p°edevÜφm, p°φkaz XCOPY m∙₧ete pou₧φt jenom na poΦφtaΦi s nainstalovan²m prost°edφm .NET Framework. Tento po₧adavek je patrn∞ nejvφc palΦiv², ovÜem nenφ mo₧nΘ jej jakkoliv obejφt, a proto je nutnΘ ho respektovat. Druh² nßrok souvisφ se souborovou strukturou zdrojovΘ slo₧ky (pokud tedy budete chtφt kopφrovat obsah slo₧ky a ne samotn² soubor pochopiteln∞). Zdrojovß slo₧ka musφ obsahovat vÜechny pot°ebnΘ soubory, kterΘ bude aplikace b∞hem svΘ Φinnosti vy₧adovat. Do mno₧iny p°φpustn²ch soubor∙ lze za°adit spustitelnΘ (.EXE) soubory, soubory s k≤dem dynamicky linkovan²ch knihoven (.DLL), zdrojovΘ soubory a jakΘkoliv dalÜφ nevyhnutnΘ soubory. Z uvedenΘho jasn∞ vypl²vß, ₧e distribuce aplikacφ pomocφ p°φkazu XCOPY je vhodnß jenom pro aplikace, kterΘ si vÜechna pot°ebnß data ävezou s sebouô. Pou₧itφ p°φkazu XCOPY nenφ proto jist∞ namφst∞ v p°φpad∞, kdy je aplikace zßvislß od °ady externφch a dynamicky se vyvφjejφcφch faktor∙ (nap°. dostupnost databßze nebo sdφlen²ch komponent, o nich₧ v okam₧iku pou₧itφ p°φkazu XCOPY nevφme °φci, zdali budou v budoucnu k dispozici a pod.).
Tvorba testovacφ aplikace a zßkladnφho instalaΦnφho projektu
Dßle budeme pokraΦovat vytvo°enφm jednoduchΘ testovacφ aplikace pro Windows, kterß bude otevφrat a zobrazovat grafickΘ obrßzky ve formßtu PNG. Po vytvo°enφ nezbytnΘ aplikaΦnφ logiky p°idßme do vygenerovanΘho °eÜenφ instalaΦnφ projekt a ukß₧eme si, jakΘ mo₧nosti rozÜφ°enφ a pokroΦilΘ konfigurace nßm nabφzφ IDE Visual Basicu .NET.
Zde je postup:
Vlastnost |
Hodnota |
Name |
frmProhlφ₧eΦ |
FormBorderStyle |
FixedSingle |
StartPosition |
CenterScreen |
Text |
Prohlφ₧eΦ obrßzk∙
(verze 1.0) |
á
|
Proto₧e jste zm∞nili hodnotu vlastnosti Name formulß°e, bude
pot°ebnΘ, abyste modifikovali takΘ spouÜt∞cφ formulß°. V okn∞ Solution
Explorer klepn∞te na nßzev testovacφ aplikace prav²m tlaΦφtkem a
z kontextovΘ nabφdky vyberte polo₧ku Properties. V dialogovΘm
okn∞ Property Pages se ujist∞te, ₧e je otev°ena slo₧ka Common
Properties a aktivovßna polo₧ka General. PotΘ z otevφracφho
seznamu Startup object vyberte polo₧ku se zm∞n∞n²m nßzvem formulß°e (frmProhlφ₧eΦ).
ááá |
Vlastnost |
Hodnota |
BorderStyle |
FixedSingle |
Name |
pctProhlφ₧eΦ |
SizeMode |
StretchImage |
|
Vlastnost SizeMode ovlßdacφho prvku PictureBox
determinuje zp∙sob zobrazenφ obrßzk∙ po jejich naΦtenφ. Hodnota StretchImage
°φkß, aby byl obrßzek po naΦtenφ rozta₧en na celou plochu ovlßdacφho prvku.
Je patrnΘ, ₧e takto dojde k jistΘ degradaci obrazu, nakolik formßt
obrßzku se musφ p°izp∙sobit formßtu zobrazovacφ plochy ovlßdacφho prvku.
Proto₧e ale chceme vytvo°it pouze jednoduchou testovacφ aplikaci, kterß nßm
bude slou₧it jenom jako äpodkladô pro tvorbu distribuΦnφ jednotky, budeme od
tΘto a podobn²ch skuteΦnostφ abstrahovat. |
Po°adφ instancφ |
Vlastnost |
Hodnota |
1. |
Name |
btnNaΦφst |
Text |
NaΦφst |
|
2. |
Name |
btnSmazat |
Text |
Smazat |
Nynφ by vßÜ formulß° mohl vypadat jako ten na obr. 5.
Obr. 5 û Vzhled testovacφ
aplikace v re₧imu nßvrhu
Implementace aplikaΦnφ logiky
V tΘto kapitole se zam∞°φme na napsßnφ aplikaΦnφ logiky. Proto₧e nechceme vyvφjet profesionßlnφ aplikaci pro zpracovßnφ obrßzk∙ r∙zn²ch grafick²ch formßt∙, bude pot°ebnΘ oÜet°it jenom dv∞ udßlosti:
JeÜt∞ p°edtφm, ne₧ budeme moci naΦφst obrßzek na plochu ovlßdacφho prvku, musφme v∞d∞t, jak² obrßzek se mß naΦφst. ╪eΦeno jin²mi slovy, budeme pot°ebovat cestu k vybranΘmu souboru s obrßzkem, nap°φklad v podob∞ c:\MojeAplikace\Obrßzky\Obrßzek1.PNG. Cestu k souboru m∙₧eme zφskat prost°ednictvφm komponenty, kterß se naz²vß OpenFileDialog.
|
P°ichßzφte-li z Visual Basicu verze 6, zanedlouho zjistφte, ₧e
komponenta OpenFileDialog je co do funkΦnosti a stylu prßce velmi
podobnß komponent∞ CommonDialog.áá
|
Vyhledejte proto ikonu tΘto komponenty v souprav∞ nßstroj∙ (Toolbox) a poklepejte na nφ. Vzßp∞tφ se instance komponenty (standardn∞ pojmenovanß jako OpenFileDialog1) p°idß na podnos komponent (Component Tray). Poklepejte na tlaΦφtko s textem NaΦφst a vypl≥te jeho udßlostnφ proceduru Click nφ₧e uveden²m k≤dem:
ááááááá With
OpenFileDialog1
ááááááááááá .Filter = "GrafickΘ
soubory (*.PNG)|*.PNG"
ááááááááááá .ShowDialog()
ááááááá End
With
ááááááá If
Len(OpenFileDialog1.FileName) <> 0 Then
ááááááááááá Dim
obr As New
Bitmap(OpenFileDialog1.FileName)
ááááááááááá pctProhlφ₧eΦ.Image = obr
ááááááá Else
ááááááá End
If
V bloku With-End With je nastavena vlastnost Filter instance komponenty. Tato vlastnost urΦuje, jakΘ typy soubor∙ se budou zobrazovat v dialogovΘm okn∞ pro vyhledßnφ grafick²ch soubor∙. Dßle je volßna metoda ShowDialog, kterß mß na starosti zobrazenφ ji₧ vzpomφnanΘho dialogovΘho okna. V dalÜφm kroku je pr∙b∞h aplikace p°enesen na u₧ivatele, kter² mß mo₧nost prochßzet vÜechny disky a jejich slo₧ky a nalΘzt ten grafick² soubor, jen₧ chce otev°φt. Kdy₧ u₧ivatel oznaΦφ k²₧en² soubor a klepne na tlaΦφtko Otev°φt, je cesta k tomuto souboru ulo₧ena do vlastnosti FileName instance komponenty OpenFileDialog1. Kdy₧ se nßvratovß hodnota funkce Len nerovnß nule, znamenß to, ₧e u₧ivatel vybral jist² grafick² soubor. Dßle je vytvo°en objekt obr t°φdy Bitmap na zßklad∞ cesty k souboru (textov² °et∞zec urΦujφcφ cestu k souboru p°edstavuje argument, jen₧ je p°edßn konstruktoru t°φdy Bitmap). Odkaz na zrozen² grafick² objekt je ulo₧en do vlastnosti Image ovlßdacφho prvku pctProhlφ₧eΦ, na co₧ se data grafickΘho souboru zobrazφ na ploÜe tohoto prvku.
Udßlostnφ proceduru Click tlaΦφtka btnSmazat upravte takto:
ááááááá pctProhlφ₧eΦ.Image = Nothing
ááááááá OpenFileDialog1.FileName = ""á áááá
Obrßzek z plochy ovlßdacφho prvku pctProhlφ₧eΦ odstranφme tak, ₧e do vlastnosti Image tohoto prvku p°i°adφme hodnotu Nothing. PotΘ tedy vlastnost Image nebude obsahovat odkaz na ₧ßdn² objekt. Druh²m krokem je äresetô vlastnosti FileName komponenty OpenFileDialog1.
Budete-li chtφt, m∙₧ete projekt sestavit a vyzkouÜet jeho funkΦnost. Po vybrßnφ souboru s obrßzkem by se tento m∞l objevit na ploÜe ovlßdacφho prvku. V²born∞, p°idßnφ aplikaΦnφ logiky jste zvlßdli, m∙₧eme popojet zase o krok dßl.
Za°azenφ instalaΦnφho projektu
V tomto okam₧iku p°idßme do stßvajφcφho °eÜenφ instalaΦnφ projekt a zadßme zßkladnφ informace pro sestavenφ pln∞ funkΦnφ distribuΦnφ jednotky. Postupujte podle t∞chto instrukcφ:
Kostra instalaΦnφho projektu je tφmto pßdem ·sp∞Ün∞ vytvo°ena. Na obrazovce poΦφtaΦe byste m∞li v tuto chvφli vid∞t otev°enΘ okno editoru s nßzvem File System (obr. 6).
Obr. 6 û Otev°en² editor File
System
Charakteristika editoru File System
Jak si m∙₧ete na obrßzku vÜimnout, editor File System je rozd∞len do dvou polφ. V levΘm poli je zobrazena struktura adresß°∙ na cφlovΘm poΦφtaΦi. Zde m∙₧ete vid∞t t°i slo₧ky:
Klepnete-li
na slo₧ku Application Folder, v pravΘm poli se objevφ obsah tΘto slo₧ky (nachßzφ se zde jenom
jedna polo₧ka, kterß reprezentuje spustiteln² soubor testovacφ aplikace). Klepn∞te
na tento soubor prav²m tlaΦφtkem myÜi a z kontextovΘho menu vyberte p°φkaz
Create
Shortcut to Primary output from Prohlφ₧eΦObrßzk∙ (Active). Visual Basic .NET vytvo°φ zßstupce,
kterΘho pojmenujte jako Zßstupce aplikace. Zßstupce potΘ m∙₧ete p°etßhnout do jednΘ ze
slo₧ek User┤s
Desktop a User┤s Programs Menu, je₧ se nachßzejφ v levΘm poli.
á
|
Pokud budete chtφt umφstit zßstupce do obou slo₧ek, budete muset
vytvo°it jeÜt∞ jednoho zßstupce, a to podobn²m zp∙sobem, jak²m jste vytvo°ili
prvnφho zßstupce (tedy klepnutφm prav²m tlaΦφtkem myÜi na ikonu Primary
output from Prohlφ₧eΦObrßzk∙ (Active) a zvolenφm p°φkazu Create
Shortcut to ...).áá |
Nejste-li spokojeni se vzhledem standardnφ ikony pro zßstupce, m∙₧ete ji zm∞nit. Jak na to si ukß₧eme v dalÜφ kapitole.
Tvorba u₧ivatelskΘ ikony pro zßstupce aplikace
V okn∞ Solution Explorer klepn∞te na nßzev testovacφ aplikace prav²m tlaΦφtkem myÜi a z kontextußlnφ nabφdky vyberte polo₧ku Add a potΘ Add New Item.
V dialogovΘm okn∞ Add New Item vyhledejte polo₧ku, kterß p°edstavuje soubor s ikonou podle specifikacφ Win32 (obr. 7). Vytvß°en² soubor s ikonou pojmenujte jako IkonaProZßstupce.
Obr. 7 û P°idßnφ souboru
s ikonou do projektu testovacφ aplikace
Soubor s ikonou je okam₧it∞ otev°en v IDE, tak₧e m∙₧ete neprodlen∞ zaΦφt s nßvrhem vzhledu ikony. K dispozici jsou vßm podp∙rnΘ nßstroje pro v²b∞r a modifikaci r∙zn²ch grafick²ch element∙. P°edpoklßdejme, ₧e jste ji₧ ikonu nakreslili. Dßle pokraΦujte takto:
Prove∩te kompilaci instalaΦnφho projektu (Build > Build MojeInstalace) a vygenerujte platnΘ instalaΦnφ soubory.
|
Pokud je to nutnΘ,
m∙₧ete uskuteΦnit takΘ kompilaci testovacφ aplikace. |
Spus¥te instalaci klepnutφm na soubor Setup.exe a testovacφ aplikaci nainstalujte. Uvidφte, ₧e po ukonΦenφ instalace se na ploÜe (p°φpadn∞ v nabφdce Programs) objevφ vßmi navr₧enß ikona zßstupce aplikace. á
DialogovΘ okno Solution Explorer pod drobnohledem
Podφvejme se blφ₧e na okno Solution Explorer (obr. 8):
Obr. 8 û Okno Solution Explorer pod drobnohledem
Samotnou testovacφ aplikaci si te∩ p°φliÜ nevÜφmejte, rad∞ji zam∞°te svou pozornost na instalaΦnφ projekt s nßzvem MojeInstalace. V stromovΘ struktu°e instalaΦnφho projektu se nachßzφ uzel Detected Dependencies. Ten obsahuje reference na externφ souΦßsti, od kter²ch je instalaΦnφ projekt vφce Φi mΘn∞ zßvisl². V naÜem p°φpad∞ se zde nachßzφ jenom jeden odkaz (dotnetfxredinst_x86_enu.msm), kter² äukazujeô na instalaΦnφ soubory .NET Frameworku. Tyto soubory jsou implicitn∞ vyΦlen∞ny z instalaΦnφho projektu, nakolik jsou znaΦn∞ nßroΦnΘ na diskovou kapacitu. Jestli₧e ovÜem nebudete mφt jistotu, ₧e na cφlovΘm poΦφtaΦi je .NET Framework nainstalovßn, m∞li byste tuto referenci do instalaΦnφho projektu zahrnout. V tom p°φpad∞ ale bu∩te p°ipraveni na skuteΦnost, ₧e se markantn∞ zv²Üφ kapacitnφ nßroΦnost instalaΦnφch soubor∙.
Soubory .NET Frameworku p°idßte do projektu takto:
Krom∞ uzlu Detected Dependencies m∙₧eme v rßmci instalaΦnφho
projektu pozorovat dalÜφ dv∞ polo₧ky; jedna z nich pat°φ p°φmo
spustitelnΘmu (.EXE) souboru aplikace a druhß reprezentuje u₧ivatelskou ikonu
pro zßstupce aplikace.
Ukßzka zßkladnφch konfiguraΦnφch mo₧nostφ instalaΦnφho projektu
á
Na zßv∞r si jeÜt∞ probereme n∞kterΘ zajφmavΘ vlastnosti, kterΘ m∙₧ete v zßjmu zlepÜenφ u₧ivatelskΘ p°φv∞tivosti a atraktivnosti instalaΦnφho projektu zm∞nit. Seznam vÜech vlastnostφ se zp°φstupnφ v okn∞ Properties Window po klepnutφ na ikonu instalaΦnφho projektu v okn∞ Solution Explorer. P°ehled n∞kter²ch u₧iteΦn²ch vlastnostφ i s komentß°em m∙₧ete nalΘzt v nßsledujφcφ tabulce:
Nßzev vlastnosti |
Charakteristika |
AddRemoveProgramsIcon |
Specifikuje ikonu,
kterß se bude zobrazovat v dialogovΘm okn∞ pro p°idßnφ resp. odebrßnφ
programov²ch souΦßstφ. |
Author |
Sdru₧uje informace o
autorovi aplikace. |
Description |
Nabφzφ vhodn²
prostor pro struΦn² popis prßce a ·Φelu aplikace. |
Manufacturer |
Podßvß informace o
v²robci aplikace. Zde uvedenΘ informace jsou ve v∞tÜin∞ p°φpad∙ toto₧nΘ
s informace uveden²mi ve vlastnosti Author.
|
ManufacturerURL |
Determinuje adresu
webov²ch strßnek v²robce. |
ProductName |
Obsahuje jmΘno
softwarovΘho produktu. |
RemovePreviousVersion |
Na°izuje, zdali mß
instalßtor p°i instalaci odstranit p°edchßzejφcφ verzi softwarovΘho produktu
(jestli₧e je tato verze detekovßna).á |
SupportPhone |
Specifikuje
telefonnφ Φφslo technickΘ podpory softwaru. |
SupportURL |
Obsahuje webovou
adresu, na kterΘ m∙₧ou u₧ivatelΘ najφt dodateΦnΘ informace technickΘho
charakteru, nebo zodpov∞zenΘ nejΦast∞ji kladenΘ dotazy. |
Title |
Textov² °et∞zec,
jen₧ zobrazuje instalßtor. |
Jßn Hanßk