ClickOnce Deployment

@ 26 Eylül 2009 tarihinde yazdı. 1 Yorum yapıldı.

Günümüzde web uygulamalarının popüler olmasının en büyük sebeplerinden biri kolay dağıtılabilir olmasıdır. Web uygulamalarında yapılan değişiklikler anında tüm istemciler tarafından kolayca görülebilirken bir windows uygulamasında güncelleme veya değişiklik yaptığımızda bunun istemci bilgisayarda çalışan uygulamaya adapte etmek başlı başına bir iştir. Ama aynı zamanda da web uygulamalarının arayüzleri oldukça zayıftır. Bir windows uygulamalarındaki “sürükle bırak ” , “fare sağ tuş menüsü” gibi uygulamaları biz web uygulamalarında kolay bir şeklide gerçekleştiremiyoruz.

İşte ClickOnce teknolojisi ile, windows uygulamalarının esnekliğini web projelerinin kolay dağıtılabilirliğiyle birleştirip, windows uygulamalarını kolay ve güvenli bir şekilde web üzerinden dağıtılmasını sağlayabiliyoruz.

Clickonce öncesi kullandığımız dağıtım yöntemlerine baktığımızda bize bazı zorunluluklar sunduklarını görüyoruz. Örneğin; .Net Framework ün versiyonları içerisinde windows uygulamalarının http üzerinden dağıtımı, kurulumu ve güncellenmesi için özel seçenekler var. Ama bu yöntemde istemcide .Net Framework ün yüklü olması zorunluluğu var. Ve Uygulamamız exe, destek dll’ ler ve dll’ lerin kaynak dosyalarından oluştuğu için tüm dosyaların istemci bilgisayara indirilmesi gerekiyor bu da performans ve veri iletim problemlerine yol açmaktadır. Ayrıca güncellemeler dosyalar halinde yapıldığı için bir sorun olduğunda tüm güncel dosyaların alındığı garanti değildir.

Bu gibi sorunlarımızı özetleyecek olursak Clickonce öncesi dağıtımlarımızda

v Uygulamalarda yapılan güncellemelerde tüm programı kaldırıp tekrar yükleme zorunluluğu,

v Programların yüklenmesi sırasında kullanıcının “admin” hakkına sahip olma zorunluluğu,

v Yazılan uygulamaları tüm makinaları tek tek yükleme zorunluluğu,

v Güncellemelerin, uygulamalar tarafından algılanma eksikliği,

v Çalışan uygulamaların, yeni uygulamaların yüklenmesinden sonra çalışmama durumu (DLL çakışması),

gibi bir takım sorunlarla karşılaşıyoruz.

İşte ClickOnce Deployment, tüm bu önceki dağıtımlarımızın avantajlarına sahip, dezavantajlarını da ortadan kaldıran ve ek fonksiyonları olan bir teknolojidir.


Uygulamamızı ClickOnce ile deploy ettiğimizde ;

* Uygulamanın ya tamamı güncellenir ya da hiç güncellenmez,

* Uygulama güncellemelerin olup olmadığını belirlenen zamanlarda ya da uygulama her çalıştırıldığında kontrol eder,

* Uygulama Clientlara kurulabildiği gibi makineye kurulum yapmaya gerek olmadan herhangi bir ağ yolundan da çalıştırılabilir,
* Uygulama çevrimdışı çalışır,
* Windows başlangıç menüsünde kısayollar oluşturur,
* ClickOnce beraberinde ek uygulama bileşenlerinin hatta . Net Framework’ün bile indirilmesini sağlayan Win32 “ bootstrapper ” uygulaması ile birlikte geliştirilmiştir. Yani; uygulamamız için gerekli olan programların istemci bilgisayarlarda yüklenmesini sağlayan bir özelliktir.


ClickOnce Deployment ın sağladığı en önemli özelliklerinden biri de “System.Deployment” sınıfıdır. Clickonce kullanarak yaptığımız yükleme ve güncelleme işlemlerini daha esnek ve zengin hale getirmek için System.Deployment sınıfını kullanarak kod yazabiliriz. Bu sınıfta yazacağımız kodlarla; mevcut durumdaki versiyonun alınmasını, uygulamanın güncellenmesini, uygulama ile indirilecek olan dosyaların kontrolünü sağlayabiliriz.

Clickonce ile deploy ettiğimiz uygulamalarda 2 adet XML dosyası bulunur.

1- Application Manifests : Uygulama ile ilgili dosyaların , gerekli izinlerin ve güncelleştirme ayarlarının tutulduğu dosyadır.

2- Deployment Manifests : Uygulamanın nasıl deploy edileceği bilgisinin çalışacağı en düşük versiyon bilgisinin referans olduğu kütüphanelerin tanımlandığı dosyadır.

Bu dosyaları uygulamamızı publish edererek oluşturabiliriz.

Özet olarak; ClickOnce ile birlikte geliştirdiğimiz uygulama sürülmenmiş halde web sunucusunda bulunur. İstemci, istekte bulunduğu zaman program otomatik olarak oluşan bu XML dosyalarımızdan yeni uygulamaların hangi klasörde olduğunu anlar ve klasöre yönelir. Burada bulunan XML dosyası aracılığıyla hangi izinlerin var olduğuna bakar, böylece sürümün her değişiminde onunla iletişim kurarak, program kendini yeniler.

ClickOnce Deployment

Ve uygulamamızın dağıtımını ,

** Web – URL adresi
** Network ya da dosya paylaşımı
** CD ya da DVD

bu yollarla gerçekleştirebiliriz.

Hepinize kolay gelsin.

İnci BİLGİN

YORUMLAR

C.O

İnci hanım, clickonce konusunda çok farklı kaynaklar yok. Sitelerde hep aynı bilgiler dolaşıyor. Belki de ihtiyaç yok çünkü 3-4 adımda publish işlemi tamamlanıyor.

Karşılaşılan sorunlar hakkında yeterli kaynak bulamıyoruz maalesef. Örneğin; bir uygulamamız var ve hiç sorun çıkarmadan publish, install ve update işlemleri gerçekleşiyordu. Bazı zorunluluklardan dolayı hosting firmamızı değiştirip uygulamayı başka server’a taşıdık. Sitede gereken tüm izinler verildi, MIME Type’lar eksikti eklendi, FrontPage Extentions yüklü vs. vs. fakat günlerdir uğraşmamıza rağmen kullanıcının indirdiği setup.exe uygulaması siteye bağlanıp programı yüklemiyor.

“Launching Application” başlıklı ilk ekran, 3-4 dakika kadar bekleyip/çalışıp/zorlayıp, (ne derseniz artık..) sanki installation URL de belirttiğimiz site hiç yokmuş gibi TimeOut hatası verip kapanıyor. Interneti alt-üst ettik tabii ki ama halen çözüm bulabilmiş değiliz. Konuyla ilgili fikriniz yada önereceğiniz adres varsa yararlanmak isteriz.

iyi çalışmalar..

Hata sonunda oluşan log’u da ekliyorum.. Dikkat etmediğimiz bir nokta varsa belki siz görürsünüz

PLATFORM VERSION INFO
Windows : 5.2.3790.131072 (Win32NT)
Common Language Runtime : 2.0.50727.3607
System.Deployment.dll : 2.0.50727.3053 (netfxsp.050727-3000)
mscorwks.dll : 2.0.50727.3607 (GDR.050727-3600)
dfdll.dll : 2.0.50727.3053 (netfxsp.050727-3000)
dfshim.dll : 4.0.20506.1 (Beta1.020506-0100)

SOURCES
Deployment url : http://www.site.com/app/PROGRAM.application

ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of http://www.site.com/app/PROGRAM.application resulted in exception. Following failure messages were detected:
+ Downloading http://www.site.com/app/PROGRAM.application did not succeed.
+ The operation has timed out

COMPONENT STORE TRANSACTION FAILURE SUMMARY
No transaction error was detected.

WARNINGS
There were no warnings during this operation.

OPERATION PROGRESS STATUS
* [01.04.2010 02:22:57] : Activation of http://www.site.com/app/PROGRAM.application has started.

ERROR DETAILS
Following errors were detected during this operation.
* [01.04.2010 02:24:37] System.Deployment.Application.DeploymentDownloadException (Unknown subtype)
- Downloading http://www.site.com/app/PROGRAM.application did not succeed.
- Source: System.Deployment
- Stack trace:
at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles()
at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState)
at System.Deployment.Application.DownloadManager.DownloadManifestAsRawFile(Uri& sourceUri, String targetPath, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation)
at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation)
at System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options)
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
— Inner Exception —
System.Net.WebException
- The operation has timed out
- Source: System
- Stack trace:
at System.Net.HttpWebRequest.GetResponse()
at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)

COMPONENT STORE TRANSACTION DETAILS
No transaction information is available.