ClickOnce Tehnologija i VS 2008


Uvod

ClickOnce tehnologija nije novina u VS 2008 ona se pojavila sa prethodnom verzijom,i pobudila je mnogo interesovanja. Općenito, ne može se puno toga uraditi sa ovom tehnologijom, ali ipak napravila je revoluciju u distibuciji i instalaciji “pametnih” klijentskih windows aplikacija na način kako to već egzistira kod web-a. Pored mnogih limitirajućih faktora ClickOnce tehnologija pokušava da riješi tri osnovna problema:

1. Složenost mehanizma instalacije i dogradnje (update) klijentskih aplikacija

2. Instalacija aplikacija po windows korisničkim računima

3. Potrebna administratorska privilegija kod instalacije aplikacije

Iz ličnog iskustva mogu kazati, da su sva tri problema uspješno riješena ClickOne tehnologijom.

Vrste aplikacija koje podržava ClickOnce tehnologija

ClickOnce tehnologija podržava dvije vrste instalacija tj. moguće je realizovati dva načina instalacije aplikacije i to:

· offline – klasična vrsta instalacija koja aplikaciju pohranjuje na lokalni disk, formira prečice (Shortcut) u Start izborniku, i mogućnost deinstalacije

· online – samo formira prečicu aplikacije na lokalnom disku, a prilikom pokretanja aplikacija se kešira u lokalnu radnu memoriju.

U jednoj instalaciji možemo obezbjediti oba načina instalacije.

Distribucija ClickOnce instalacije

ClickOnce instalaciju moguće je postaviti na bilo koji medij ili izvor podataka. Potpuno je nevažno da li ClickOnce instalaciju pohranjujemo na CD/DVD, lokalni ili web server, instalacija se odvija na potpuno isti način.

Zagrijavanje –izrada jednostavne ClickOnce instalacije

Najjednostavnije upoznavanje sa ovom tehnologijom je prolazak kroz jednostavan tutorijal koji će na kraju poprimiti obrise jedne ozbiljne instalacije sa svim svojim osobinama. Pokrenite VS 2008 (bilo koji verziju), a možete je skinuti sa MS stranice. Napravite jednostavnu Windows Forms aplikaciju. Na formi implementirajte labelu kao na sljedećoj slici.

clickonce2007sl1

Nakon testiranja i pokretanja naše jednostavne aplikacije, iz Solution Explorera desnim klikom odaberite projekat, te iz menija izaberite „Properties“, a iz dobijenog prozora izaberite Publish kao na sljedećoj slici.

Napomena: Za ovaj primjer potrebno je da instalirate IIS.

clickonce2007sl2

Na slici su brojevima označene grupe opcija koje koristimo prilikom podešavanja ClickOnce instalacije.

 clickonce2007sl3– Lokacija na kojoj se generiše ClickOnce instalacija, često ova lokacija je Vaš lokalni Developer PC, na kojem instalaciju možete generisati, testirati i debugirati. Možete je pohraniti u lokalnu Mapu (Folder), lokalni web server, ili pak udaljeni mrežni ili internet Server. Klikom na krajnje desno dugme dobijamo dijaloški okvir za podešavanje lokacije na kojoj će biti generisana ClickOnce instalacija. Podesite ovu lokaciju shodno slici.

 clickonce2007sl4– Lokacija s koje će se pokretati instalacija vaše ClickOnce aplikacije. Često puta ova lokacija je različita od prethodne jer prethodna lokacija je developerska na kojoj se testira ClickOnce instalacija, a stvarna instalacija odvija se na ovoj lokaciji.

 clickonce2007sl5– Način na koji će se Vaša aplikacija pokretati na klijentu. Prethodno je opisana.

clickonce2007sl6– grupa opcija pomoću kojih podešavamo ClickOnce instalaciju. Prvim dugmetom izabiramo koje datoteke čine instalaciju. ClickOnce tehnologija „kupi“ sve vaše datoteke iz Output direktorija, ali tu postoji kvaka, koja će detaljnije biti opisana kada se bude govorilo o popratnim datotekama koje instaliramo tokom distribucije aplikacije. ClickOnce takodjer pokupi i sve datoteke koje ste koristili kao biblioteke trećih lica koje ste importovali u vidu „Add Reference“ u svoje projekte. Izgled prozora vidi se na sljedećoj slici:

clickonce2007sl7

Obzirom da se naša aplikacija sastoji od samo jedne datoteke otud i prethodna slika izgleda na način kako izgleda. Datoteke koje čine ClickOnce instalaciju poredane su u grupe, sa „Publish“ statusom.

Ako se klikne na Check dugme „Showall files“, dobićemo još jednu datoteku koja nije uključena u instalaciju, odnosno ta datoteka ima Publish status – Exclude.

Publish status može poprimiti i sljedeće vrijednosti:

1. Include – datoteka je sastavni dio aplikacije

2. Exclude – datoteka ne čini instalaciju

3. Prerequisite – ova datoteka mora biti instalirana na klijentu da bi aplikacije nesmetano radila

4. Data File – datoteka koja je čini sastavni dio instalacije. Uglavnom je to datoteka baze podataka, ili neka report datoteka.

Napomena:Data File“ status je interesantan ako uz aplikaciju instaliramo i bazu podataka (*.mdf, *.ldf *.xml). One automatski poprimaju ovaj status. Takodjer, je vrlo važno znati da se prilikom update-a aplikacije ove datoteke pohranjuju u DataDirektory, koji igra posebnu ulogu, i u kojem se pohranjuju ovakve vrste datoteka. Više informacija možete dobiti iz referenci koje se nalaze na kraju ovog članka.

Dugme Prerequisite – otvara dijaloški okvir kojim se zahtjevaju preinstalirane komponente prije same instalacije. Takodjer, uz ClickOnce aplikaciju mogu se zakačiti komponente koje je potrebno prethodno instalirati, kao i opcije sa koje adrese da se instalacija komponenti izvrši.

Dugme Updates – najinteresantnije ali i najjednostavnija grupa opcija za podešavanje ClickOnce instalacije. Dijaloški okvir koji se pojavljuje nakon klika govori sam za sebe. Napravimo izmjene kao što su prikazane.

clickonce2007sl8

Važno je napomenuti da prilikom provjere novih verzija aplikacija provjerava sljedeće po redu lokacije:

1. Update Lokaciju – određenu ovim dijalogom

2. Instalacijsku Lokaciju

3. Lokaciju sa koje je objavljena (Publish Location).

Dugme options – omogućava podešavanje osnovnih postavki aplikacije, Firma,naziv aplikacije, URL web podrška, i još dodatnih opcija prilikom generisanja instalacije. Ovdje se takodjer podešavaju parametri ako aplikacija ima više jezičnu upotrebu i lokalizaciju.

clickonce2007sl9

Dugme Publish Wizard tzv. Step by step konfiguracija instalacije, sa prethodno opisanim pojmovima.

Nakon klika na dugme Publish i ako vam je Default Browser Firefox, pojavljuje se sljedeći prozor:

clickonce2007sl10

Ovo je jedno od poboljšanja koje su došle sa VS 2008, da se ClickOnce aplikacije mogu pokretati preko Firefoxa. Klikom na dugme Install počinje proces instalacije aplikacije.

Napomena: Često puta nastupe problemi oko ClickOnce instalacije, ali su oni do konfiguracije IIS, a ne do nje. I zato ako prvi puta neuspijete, otvorite IIS manager i podesite ga pravilno, shodno instrukcijama koje vam OS daje.

Struktura datoteka ClickOnce instalacije

Nakon završetka formiranja instalacije folder na C:/InterPub/wwwroot/ClickOncePrimjer sadržisljedeće slikom prikazane datoteke.

clickonce2007sl11

Na root-u ovog folder nalaze se datoteke ClickOnce aplikacije, a u folderu Application Files se nalaze datoteke aplikacije, grupirane u folderima po verzijama. Ova struktura je potpuno izmjenjena u odnosu na VS 2005, u kojoj su datoteke bile grupirane na različit način.

Najvažnija datoteka ClickOnce instalacije je Application manifest File u kojoj su pohranjene informacije o instalaciji. Više informacije možete naći u korištenoj literaturi na kraju članka.

Pokretanje ClickOnce instalacije

ClickOnce instalaciju pokrećemo pokretanjem Application Manifest File datoteke, ili preko korespodentne htm datoteke definisane prilikom formiranje ClickOnce instalacije. Poslije za kratko dobijamo dijalog koji učitava pomenutu datoteku, a igleda slično kao na slici:

clickonce2007sl12

Nakon toga pojavljuje se dijaloški okvira za instalaciju aplikacije.

clickonce2007sl13

Klikom na dugme Install, naša aplikacije se instalira.

Napomena: U slučaju da smo odabrali modul da se aplikacija pokreće samo online, aplikacija se učitava u radnu memoriju.

Kada instalacija završi naša aplikacija se pokreće i izgleda slično kao na sljedećoj slici:

clickonce2007sl14

Ako izaberemo Start-> All Programs -> ClickOncePrimjer – vidomo da naša aplikacija ima instalirane standardne prečice. Takodjer ako pogledamo Add/Remove Program – možemo je uredno i deinstalirati.

Napomena: Ako je aplikacija izvršila nedogradnji sa novim verzijama deinstalacija aplikaije daje mogućnost deinstaliranje cijele aplikacije kao i deinstalaciju zadnje nadogradjene verzije.

clickonce2007sl15

Gdje su instalirane datoteke?

Vidjeli smo prethodno da naša instalirana aplikacija ima uredne standardne prečice u Startnom Izborniku, kao i da je možemo deinstalirati. Logična pomisao je ta da su i datoteke aplikacije pohranjene u folder Program Files, medjutim to nije tako (Ako nevjerujete sami se uvjerite).

Na početku smo kazali da ClickOnce tehnologija rješava problem Windows Korisničkih računa i dozvola (problem br. 2 naveden na početku članka). To znači da ClickOnce instalaciju može napraviti bilo koji winodws korsnik čak i sa najmanjih privilagijama koje npr. ima Gost, što nije slučaj sa klasičnim instalacijama. ClickOnce instalacija se instalira u prostor u kojem dotični windows korisnik ima privilegije, a to je njegov prostor npr: C:\Documents and Settings\Guest\Local Settings za Windows XP, dok je kod Windows Viste malo drugčija forma npr: C:\Users\Guest\AppData\Local\Apps\2.0\ .

clickonce2007sl16

Medjutim to nije sve: ako smo u instalaciji imali podatkovne datoteke (bazu podataka, konfiguracijske datoteke, i sl.) koje smo spominjali, koji se po Defaultu nalaze u DataDirectory. Ovaj folder se nalazi na drugoj lokaciji. Za Windows Vista to je: C:\Users\[Ime Korisnika]\AppData\Local\Apps\2.0\Data, a za Windows XP to je C:\Documents and Settings\Guest\Local Settings\Application Data.

ClickOnce i Update – proces nadogradnje instalirane aplikacije

Ništa jednostavnije ne postoji za Update-ovanje aplikacije od ClickOnce tehnologije. Kod klasičnih instalacija kada je jednom aplikacija instalirana vaši problemi tek tada počinju. Vaš klijent konstantno zahtjeva određene izmjene, a vi konstantno implementirate proces nadogradnje postojeće instalacije. ClickOnce ima moćan alat za nadgradnju aplikacije, preko dijaloga koji smo spomenuli ranije. Samo u nekoliko poteza miša, definiše se način na koji će se aplikacija nadograđivati. ClickOnce tehnologija ima sljedeće načine implementacije update-a.

· Da aplikacija upoće ima mogućnost provjere novih verzija

· Da provjera nove verzije ide svaki puta kad se aplikacija starta

· Da provjerava nove verzije poslije startanja aplikacije

· Da se periodično provjeravaju nove verzije

· Implementacija programirane provjere novih verzija (kasnije u ovom članku)

Da bi simulirali proces nadogradnje i pokazali kako se to radi na ClickOnce tehnologiji naš prethodni primjer ćemo izmjeniti i formirati novu verziju aplikacije. Modifikacija primjera se sastoji od dodavanja nove labele u Formi kao na slici:

clickonce2007sl17

Nakon ove implementacije otvorimo Publish opciju projekta i pokrenimo formiranje instalacije klikom na dugme Publish. Kada je završen proces formiranja nove instalacije aplikacije, pokrenimo prethodno instaliranu aplikaciju preko Start Izbornika. Nakon nekoliko sekundi pojavljuje se dijaloga sa informacijama o novoj verziji aplikacije. Klikom na dugme OK, instaliramo novu verziju nakon čega se automatski pokreće nova verzija aplikacije. Sa ovim je cjelokupan proces nadogradnje završen.

Naravno, ovdje smo koristili opciju da aplikacija provjerava novu verziju prije samog startanja. Postoji opcija da se nova verzija traži nakon što se aplikacija podigne. Ovaj slučaj ćemo koristiti ako je naša instalacija velika, a konekcija na server slaba. U tom slučaju aplikacija će paralelno dok radi skidati novu verziju, i instalirati je nakon novog pokretanja. Postoji i treći slučaj kada periodično postavljamo provjeru za novim verzijama, koju definišemo po želji.

clickonce2007sl18

Postoji i zadnja opcija za provjeru nove verzija po zahtjevu korisnika odnosno implementacija preko same aplikacije koji ćemo pokazati nešto kasnije.

Nakon klika na dugme OK pojavljuje se nova verzija našeg primjera:

clickonce2007sl19

Podešavanje Klijenta i Servera za korištenje ClickOnce tehnologije

Na dva prethodna primjera koristili smo lokalni web server. Takodjer smo vidjeli da se aplikacija može instalirati kako Windowsovim internet pretraživačem tako i Firefoxom. Ovo su nova poboljšanja ClickOnce tehnologije koja dolaze sa VS 2008. Obzirom da se aplikacija pokreće preko udaljenih servera pogledajmo koji su to zahtjevi sa strane klijenta, a koj isa strane Servera da bi ClickOnce nstalacija uspješno radila. Kada se tiče klijenta jedini zahtjev je da ima instaliran Microsoftow ili Mozillin pretraživač interneta. Kod severa je nešto drugčija situacija. Jedna od najznačajnijij je da se na web serveru moraju registrovati MIME tipovi, koje koristi ClickOnce tehnologija.

MIME tipovi koje je potrebno registrovati su:

Ekstenzija Tip datoteke

.application application/x-ms-application

.manifest application/x-ms-manifest

.deploy application/octet-stream

Više informacija o ovome možete naći na http://msdn2.microsoft.com/en-us/library/ms228998.aspx.

Programiranje ClickOnce Instalacija

ClickOnce tehnologija dozvoljava implementaciju određenih poboljšanja i u sami source code aplikacije. Kroz ovaj naslov vidjet ćemo kako se implemtira traženje novih verzija po zahtjevu korisnika i na koji način formirati shortcut ikonu na desktopu. Prije same implementacije ClickOnce u aplikacijama je potrebno dodati referencu na System.Deployment . Takodjer, u *.cs datotekama u kojima se implementiraju „stvari“ oko ClickOnce dodajte using System.Deployment.Application.

1. Implementacija Shortcut ikone na desktop

Naredna slika prikazuje pojednostavljenu verziju implementacije ikone da desktop.

Napomena: Važno je napomenuti da se na početku svake implementacije za ClickOnce postavlja uslov da li je aplikacija instalirana na klijentu, jer se taj dio koda nemože pokernuti prilikom razvijanja aplikacije.

Pa onda kako debugirati source code za ClickOnce? Odgovor „nikako“ u development modu. Ali kada instaliramo aplikaciju možemo pokrenuti externi Just In Time debuger, kojim možemo dokučiti o kojim se pogreškama u programu radi.

clickonce2007sl20

2. Implementacija programiranog provjeravanja novih verzija

Kako je na početku kazano ClickOnce tehnologija ima puno limitirajućih faktora, a jedan od njih je da kada jednom odustanemo od instalacije nove verzije sljedeći put aplikacija ne prihvata novu verziju koju smo prethodno otkazali. Ovdje se postavlja praktično pitanje što ako sam slučajno pogriješio pa umjesto OK klikno na Skip dugme? Isto tako ako jednom deinstaliramo verziju koju smo nadogradili ne možemo je ponovo instalirati jer aplikacija je smatra odbačenom. U tom pogledu potreno je implementirati programirano traženje novih verzija, a samim ti ćemo i dobiti verziju koju smo prethodno odbacili ili deinstalirali. Programirano traženje novih verzija aplikacije dobro je imati i iz nekih drugih razloga.

Naredna slika prikazuje najjednostavniju verziju programiranog traženja novih verzija. U Form1 implementirajte Dugme, te ga dvaputa kliknite, da se pojavi implementacija dogadjaja ButtonClick, čija je implementacija prikazana na slici:

clickonce2007sl21

Napravite ClickOnce implementaciju shodno prethodnim primjerima. Iz Startnog Izbornika pokrenite aplikaciju, te kliknite na Skip dugme da automatski ne nadogradite aplikaciju. Kada se aplikacija pojavi klikom na dugme „Update“ koje je implementirano aplikacija će se nadograditi i restartovati. Tim je programirana nadogradnja završena. Ovo je najednostavniji primjer koji nedozvoljava da bilo što radite dok se skida nova verzija. Naravno bolje rješenja su implementacije programiranog traženja novih verzija asihrono, kada proces traženja novih verzija stavimo u posebnu nit, dok glavna nit aplikacije ostaje slobodna za rad.

Pono primjera možete pronaći na internetu, samo malo guglajte.

Šta se ne može sa ClickOnce

Mnogo stvari se ne može implementirati Clickonce tehnologijom, a što se čini vrlo jednostavnim. Npr:

1. Sa ClickOnce tehnologijom se nemože registrovati dll u GAC. Ako vaša aplikacija zahtjeva da se pojedini asembliji egistruju u globalnom asebmlijskom kešu to se nemože postići.

2. Kroz ClickOnce instalaciju nemože se pridruživati tzv. Merge moduli, koji bi se prilikom instalacije instalirali na klijent. Sve preinstalacije potrebno je radii prije instalacija aplikacije.

3. Ako vaša aplikacija zahtjeva registraciju nekih CM komponenti npr. ActiveX, oni se rade posebnom MS izolacijskom tehnologijom i ne registruju se klasicnim regsvr32 .

4. Skrpite, aplikacije ili bilo što pokretati nakon ili prije instalacije se takodjer se ne može raditi.

Šta nije spomenuto u ovom članku

· ClickOnce sigurnost.

· Manipulacija registrijem, lokalnim bazama podataka datotekama i sl.

· Web i winodws servisi

i ostalo

Reference

1. Use ClickOnce to Deploy Windows Applications,Wei-Meng Lee, O’Reilly,2006

2. http://en.wikipedia.org/wiki/ClickOnce

3. http://msdn2.microsoft.com/en-us/library/t71a733d(VS.80).aspx

Izvorni kod za ovaj članak možete skinuti ovdje.

About Bahrudin Hrnjica

PhD in Mechanical Engineering, Microsoft MVP for .NET. Likes .NET, Math, Mechanical Engineering, Evolutionary Algorithms, Blogging.

Posted on 18/01/2008, in .NET, C# and tagged , , . Bookmark the permalink. 2 Comments.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s