Aracılığıyla paylaş


ClickOnce dağıtımlarında güvenlik, sürüm ve bildirim sorunları

ClickOnce güvenliği, uygulama sürümü oluşturma ve bildirim söz dizimi ve semantiğiyle ilgili bir ClickOnce dağıtımının başarılı olmamasıyla ilgili çeşitli sorunlar vardır.

ClickOnce ve Windows Kullanıcı Hesabı Denetimi

Windows Vista ve Windows'un sonraki sürümlerinde, geçerli kullanıcı yönetici izinlerine sahip bir hesapla oturum açmış olsa bile uygulamalar varsayılan olarak standart kullanıcı olarak çalışır. Bir uygulamanın yönetici izinleri gerektiren bir eylem gerçekleştirmesi gerekiyorsa, işletim sistemine bildirir ve ardından kullanıcıdan yönetici kimlik bilgilerini girmesini ister. Kullanıcı Hesabı Denetimi (UAC) olarak adlandırılan bu özellik, uygulamaların kullanıcının açık onayı olmadan tüm işletim sistemini etkileyebilecek değişiklikler yapmasını engeller. Windows uygulamaları, uygulama bildiriminin requestedExecutionLevel bölümünde özniteliğini belirterek bu izin yükseltmesine trustInfo ihtiyaç duyduklarını bildirir.

Uygulamaları güvenlik yükseltme saldırılarına maruz bırakma riski nedeniyle, istemci için UAC etkinse ClickOnce uygulamaları izin yükseltme isteğinde bulunamaz. Özniteliğini requestedExecutionLevel requireAdministrator olarak ayarlamaya çalışan veya Windows Vista ve highestAvailable sonraki sürümlerde yüklenmeyecek herhangi bir ClickOnce uygulaması.

Bazı durumlarda, ClickOnce uygulamanız Windows'daki yükleyici algılama mantığı nedeniyle yönetici izinleriyle çalışmaya çalışabilir. Bu durumda, uygulama bildirimindeki özniteliğini requestedExecutionLevel olarak asInvokerayarlayabilirsiniz. Bu, uygulamanın kendisinin yükseltme olmadan çalışmasına neden olur. Visual Studio bu özniteliği tüm uygulama bildirimlerine otomatik olarak ekler.

Uygulamanın tüm ömrü boyunca yönetici izinleri gerektiren bir uygulama geliştiriyorsanız, bunun yerine Windows Installer (MSI) teknolojisini kullanarak uygulamayı dağıtmayı düşünmelisiniz. Daha fazla bilgi için bkz . Windows Installer temel bilgileri.

Çevrimiçi uygulama kotaları ve kısmi güven uygulamaları

ClickOnce uygulamanız bir yükleme yerine çevrimiçi çalışıyorsa, çevrimiçi uygulamalar için ayrılan kotaya sığması gerekir. Ayrıca, kısıtlı bir güvenlik izinleri kümesi gibi kısmi güven içinde çalışan bir ağ uygulaması kota boyutunun yarısından büyük olamaz.

Çevrimiçi uygulama kotasını değiştirme hakkında daha fazla bilgi ve yönergeler için bkz . ClickOnce önbelleğine genel bakış.

Sürüm oluşturma sorunları

Derlemenize tanımlayıcı adlar atarsanız ve derleme sürüm numarasını bir uygulama güncelleştirmesini yansıtacak şekilde artırırsanız sorunlarla karşılaşabilirsiniz. Tanımlayıcı adlandırılmış bir derlemeye başvuruyla derlenen tüm derlemelerin yeniden derlenmiş olması gerekir, aksi takdirde derleme eski sürüme başvurmaya çalışır. Derleme bağlama isteğinde eski sürüm değerini kullandığından derleme bunu dener.

Örneğin, kendi projesinde 1.0.0.0 sürümüne sahip tanımlayıcı adlı bir derlemeniz olduğunu varsayalım. Derlemeyi derledikten sonra, ana uygulamanızı içeren projeye başvuru olarak eklersiniz. Derlemeyi güncelleştirir, sürümü 1.0.0.1'e artırır ve uygulamayı yeniden derlemeden dağıtmaya çalışırsanız, uygulama derlemeyi çalışma zamanında yükleyemez.

Bu hata yalnızca ClickOnce bildirimlerinizi el ile düzenliyorsanız oluşabilir; Dağıtımınızı Visual Studio kullanarak oluşturursanız bu hatayla karşılaşmamalısınız.

Bildirimde tek tek .NET Framework derlemeleri belirtme

Bir ClickOnce dağıtımını .NET Framework derlemesinin eski bir sürümüne başvurmak üzere el ile düzenlediyseniz uygulamanız yüklenemeyecek. Örneğin, bildirimde belirtilen sürümden önceki bir .NET Framework sürümü için System.Net derlemesine bir başvuru eklediyseniz bir hata oluşur. Genel olarak, uygulamanızın çalıştığı .NET Framework sürümü uygulama bildiriminde bir bağımlılık olarak belirtildiğinden, tek tek .NET Framework derlemelerine başvuru belirtmeye çalışmamalısınız.

Bildirim ayrıştırma sorunları

ClickOnce tarafından kullanılan bildirim dosyaları XML dosyalarıdır ve hem iyi biçimlendirilmiş hem de geçerli olmalıdır: XML söz dizimi kurallarına uymalı ve yalnızca ilgili XML şemasında tanımlanan öğeleri ve öznitelikleri kullanmalıdır.

Bildirim dosyasında sorunlara neden olabilecek bir şey, uygulamanız için tek veya çift tırnak işareti gibi özel bir karakter içeren bir ad seçmektir. Uygulamanın adı ClickOnce kimliğinin bir parçasıdır. ClickOnce şu anda özel karakterler içeren kimlikleri ayrıştırmıyor. Uygulamanız etkinleştiremezse, ad için yalnızca alfabetik ve sayısal karakterler kullandığınızdan emin olun ve yeniden dağıtmayı deneyin.

Dağıtım veya uygulama bildirimlerinizi el ile düzenlediyseniz, bunları istemeden bozmuş olabilirsiniz. Bozuk bildirim doğru clickOnce yüklemesini engeller. ClickOnce Hatası iletişim kutusunda Ayrıntılar'a tıklayıp günlükteki hata iletisini okuyarak çalışma zamanında bu tür hataların hatalarını ayıklayabilirsiniz. Günlük aşağıdaki iletilerden birini listeler:

  • Söz dizimi hatasının açıklaması ve hatanın oluştuğu satır numarası ve karakter konumu.

  • Bildirimin şemasını ihlal eden bir öğenin veya özniteliğin adı. Bildirimlerinize el ile XML eklediyseniz, eklemelerinizi bildirim şemalarına karşılaştırmanız gerekir. Daha fazla bilgi için bkz . ClickOnce dağıtım bildirimi ve ClickOnce uygulama bildirimi.

  • Kimlik çakışması. Dağıtım ve uygulama bildirimlerindeki bağımlılık başvuruları hem kendi name publicKeyToken hem de özniteliklerinde benzersiz olmalıdır. Her iki öznitelik de bildirim içindeki iki öğe arasında eşleşiyorsa bildirim ayrıştırma başarılı olmaz.

Bildirimleri veya uygulamaları el ile değiştirirken alınacak önlemler

Bir uygulama bildirimini güncelleştirdiğinizde, hem uygulama bildirimini hem de dağıtım bildirimini yeniden imzalamanız gerekir. Dağıtım bildirimi, bu dosyanın karması ve dijital imzasını içeren uygulama bildirimine bir başvuru içerir.

Dağıtım sağlayıcısı kullanımıyla ilgili önlemler

ClickOnce dağıtım bildirimi, uygulamanın yüklenmesi ve hizmet verilmesi gereken konumun tam yolunu gösteren bir deploymentProvider özelliğe sahiptir:

<deploymentProvider codebase="http://myserver/myapp.application" />

Bu yol ClickOnce uygulamayı oluşturduğunda ayarlanır ve yüklü uygulamalar için zorunludur. Yol, ClickOnce yükleyicisinin uygulamayı yükleyip güncelleştirmeleri arayacağı standart konumu gösterir. ClickOnce uygulamasını farklı bir konuma kopyalamak için xcopy komutunu kullanır ancak özelliğini değiştirmezsenizdeploymentProvider, ClickOnce uygulamayı indirmeye çalıştığında özgün konuma geri döner.

Bir uygulamayı taşımak veya kopyalamak istiyorsanız, istemcinin gerçekten yeni konumdan deploymentProvider yüklenmesi için yolu da güncelleştirmeniz gerekir. Uygulamaları yüklediyseniz bu yolun güncelleştirilmesi çoğunlukla sorun oluşturur. Her zaman özgün URL aracılığıyla başlatılan çevrimiçi uygulamalar için ayarı deploymentProvider isteğe bağlıdır. Ayarlanırsa deploymentProvider kabul edilir; aksi takdirde, uygulamayı başlatmak için kullanılan URL, uygulama dosyalarını indirmek için temel URL olarak kullanılır.

Not

Bildirimi her güncelleştirdiğinizde yeniden de imzalamanız gerekir.

ClickOnce dağıtımlarıylailgili sorunları giderme Güvenli ClickOnce uygulamalarıClickOnce dağıtım stratejisi seçme