ClickOnce güncelleştirme stratejisi seçme

ClickOnce otomatik uygulama güncelleştirmeleri sağlayabilir. ClickOnce uygulaması, uygulama güncelleştirmelerinin kullanılabilir olup olmadığını görmek için dağıtım bildirim dosyasını düzenli aralıklarla okur. Varsa, uygulamanın yeni sürümü indirilir ve çalıştırılır. Verimlilik için yalnızca değiştirilen dosyalar indirilir.

ClickOnce uygulaması tasarlarken, uygulamanın kullanılabilir güncelleştirmeleri denetlemek için hangi stratejiyi kullanacağını belirlemeniz gerekir. Kullanabileceğiniz üç temel strateji vardır: uygulama başlangıcında güncelleştirmeleri denetleme, uygulama başlangıcından sonra güncelleştirmeleri denetleme (arka plan iş parçacığında çalışıyor) veya güncelleştirmeler için bir kullanıcı arabirimi sağlama.

Ayrıca, uygulamanın güncelleştirmeleri ne sıklıkta denetleyeceğini belirleyebilir ve güncelleştirmeleri gerekli hale getirebilirsiniz.

Uyarı

Uygulama güncelleştirmeleri için ağ bağlantısı gerekir. Ağ bağlantısı yoksa, seçtiğiniz güncelleştirme stratejisi ne olursa olsun, uygulama güncelleştirmeleri denetlemeden çalışır.

Uyarı

.NET Framework 2.0 ve .NET Framework 3.0'da, uygulamanız güncelleştirmeleri her denetlediğinde, başlatmadan önce veya sonra ya da xref:System.Deployment.Application< API'lerini kullanarak >dağıtım bildiriminde ayarlamanız deploymentProvider gerekir. öğesi, deploymentProvider Visual Studio'da Yayımla sekmesinin Güncelleştirmeler iletişim kutusundaki Güncelleştirme konumu alanına karşılık gelir. Bu kural .NET Framework 3.5'te gevşetilir. Daha fazla bilgi için bkz. İstifa Etmeden Test ve Üretim Sunucuları için ClickOnce Uygulamalarını Dağıtma.

Uygulama başlangıcından sonra güncelleştirmeleri denetleme

Uygulama bu stratejiyi kullanarak, uygulama çalışırken arka planda dağıtım bildirimi dosyasını bulmayı ve okumayı dener. Bir güncelleştirme varsa, kullanıcı uygulamayı bir sonraki çalıştırışında güncelleştirmeyi indirmesi ve yüklemesi istenir.

Bu strateji, düşük bant genişliğine sahip ağ bağlantıları veya uzun indirmeler gerektirebilecek daha büyük uygulamalar için en iyi şekilde çalışır.

Bu güncelleştirme stratejisini etkinleştirmek için, Uygulama Güncelleştirmeleri iletişim kutusunun Güncelleştirmeleri ne zaman denetleyeceğini seçin bölümünde Uygulamabaşlatıldıktan sonra'ya tıklayın. Ardından uygulamanın güncelleştirmeleri ne sıklıkta denetlemesi gerektiğini belirtin bölümünde bir güncelleştirme aralığı belirtin.

Bu, dağıtım bildirimindeki Update öğesini aşağıdaki gibi değiştirmekle aynıdır:

<!-- When to check for updates -->
<subscription>
   <update>
      <expiration maximumAge="6" unit="hours" />
   </update>
</subscription>

Uygulama başlamadan önce güncelleştirmeleri denetleme

Varsayılan strateji, uygulama başlamadan önce dağıtım bildirim dosyasını bulmayı ve okumayı denemektir. Bu stratejiyi kullanarak, kullanıcı uygulamayı her başlattığında uygulama dağıtım bildirim dosyasını bulmayı ve okumayı dener. Bir güncelleştirme yoksa, uygulamanın mevcut sürümü başlatılır. Gerekli bir güncelleştirme varsa, indirilip başlatılır. Bir güncelleştirme varsa ancak gerekli değilse, kullanıcıya mevcut sürümü yükseltme veya başlatma seçeneği sunulur.

Bu strateji en iyi yüksek bant genişliğine sahip ağ bağlantıları için çalışır; uygulamanın başlatılmasındaki gecikme, düşük bant genişliğine bağlı bağlantılarda kabul edilemez uzunlukta olabilir.

Bu güncelleştirme stratejisini etkinleştirmek için, Uygulama Güncelleştirmeleri iletişim kutusunun Güncelleştirmeleri ne zaman denetleyeceğini seçin bölümünde Uygulamabaşlamadan önce'ye tıklayın.

Bu, dağıtım bildirimindeki Update öğesini aşağıdaki gibi değiştirmekle aynıdır:

<!-- When to check for updates -->
<subscription>
   <update>
      <beforeApplicationStartup />
   </update>
</subscription>

Uyarı

.NET Core 3.1 ve .NET 5 ve daha yeni uygulamalar için güncelleştirmeleri uygulama başlamadan önce denetlemek desteklenen tek güncelleştirme seçeneğidir.

Güncelleştirmeleri gerekli hale getirme

Kullanıcıların uygulamanızın güncelleştirilmiş bir sürümünü çalıştırmasını istemek istediğiniz durumlar olabilir. Örneğin, uygulamanızın önceki sürümünün düzgün çalışmasını engelleyecek bir Web hizmeti gibi dış kaynakta değişiklik yapabilirsiniz. Bu durumda, güncelleştirmenizi gerekli olarak işaretlemek ve kullanıcıların önceki sürümü çalıştırmasını engellemek istersiniz.

Uyarı

Diğer güncelleştirme stratejilerini kullanarak güncelleştirme gerektirebilmenize rağmen, uygulama başlamadan önce'yi denetlemek eski bir sürümün çalıştırılamayacağını garanti etmenin tek yoludur. Başlangıçta zorunlu güncelleştirme algılandığında, kullanıcının güncelleştirmeyi kabul etmesi veya uygulamayı kapatması gerekir.

Bir güncelleştirmeyi gerekli olarak işaretlemek için, Uygulama Güncelleştirmeleri iletişim kutusunda Bu uygulama için gereken en düşük sürümü belirtin'e tıklayın ve ardından yüklenebilen uygulamanın en düşük sürüm numarasını belirten yayımlama sürümünü (Birincil, İkincil, Derleme, Düzeltme) belirtin.

Bu, dağıtım bildirimindeki Deployment öğesinin minimumRequiredVersion özniteliğini ayarlamakla aynıdır; mesela:

<deployment install="true" minimumRequiredVersion="1.0.0.0">

Güncelleştirme aralıklarını belirtme

Uygulamanın güncelleştirmeleri ne sıklıkta denetleyeceğini de belirtebilirsiniz. Bunu yapmak için, bu konunun önceki bölümlerinde yer alan "Uygulama Başlangıcından Sonra Güncelleştirmeleri Denetleme" başlığında açıklandığı gibi uygulamanın başlatmadan sonra güncelleştirmeleri denetlemesini belirtin.

Güncelleştirme aralığını belirtmek için, Uygulama Güncelleştirmeleri iletişim kutusunda Uygulamanın güncelleştirme özelliklerini ne sıklıkta denetlemesi gerektiğini belirtin.

Bu, dağıtım bildirimindeki Update öğesinin maximumAge ve birim özniteliklerini ayarlamakla aynıdır.

Örneğin, uygulama her çalıştığında veya haftada bir kez veya ayda bir kez denetlemek isteyebilirsiniz. Belirtilen zamanda bir ağ bağlantısı yoksa, uygulamanın bir sonraki çalıştırılışında güncelleştirme denetimi gerçekleştirilir.

Uyarı

.NET Core ve .NET 5 veya üzeri için ClickOnce'da bu özellik desteklenmez. Daha fazla bilgi için bkz. .NET için ClickOnce.

Güncelleştirmeler için kullanıcı arabirimi sağlama

Bu stratejiyi kullanırken, uygulama geliştiricisi kullanıcının güncelleştirmeleri ne zaman veya ne sıklıkta denetleyeceğini seçmesini sağlayan bir kullanıcı arabirimi sağlar. Örneğin, "Güncelleştirmeleri Şimdi Denetle" komutu veya farklı güncelleştirme aralıkları için seçenekler içeren bir "Güncelleştirme Ayarları" iletişim kutusu sağlayabilirsiniz. ClickOnce dağıtım API'leri kendi güncelleştirme kullanıcı arabiriminizi programlamak için bir çerçeve sağlar. Daha fazla bilgi için System.Deployment.Application ad alanına bakın.

Uyarı

ApplicationDeployment Ad alanı içindeki System.Deployment.Application sınıf ve API'ler .NET Core ve .NET 5 ve sonraki sürümlerde desteklenmez. .NET 7'de, uygulama dağıtım özelliklerine erişmek için yeni bir yöntem desteklenir. Daha fazla bilgi için bkz. .NET'te ClickOnce dağıtım özelliklerine erişme. .NET 7, ApplicationDeployment yöntemlerinin eşdeğerini desteklemez.

Uygulamanız kendi güncelleştirme mantığını denetlemek için dağıtım API'leri kullanıyorsa, aşağıdaki bölümdeki "Güncelleştirme Denetimini Engelleme" bölümünde açıklandığı gibi güncelleştirme denetimini engellemeniz gerekir.

Bu strateji, farklı kullanıcılar için farklı güncelleştirme stratejilerine ihtiyacınız olduğunda en iyi şekilde çalışır.

Güncelleştirme denetimini engelle

Uygulamanızın güncelleştirmeleri denetlemesini engellemek de mümkündür. Örneğin, hiçbir zaman güncelleştirilmeyecek basit bir uygulamanız olabilir, ancak ClickOnce dağıtımı tarafından sunulan yükleme kolaylığından yararlanmak isteyebilirsiniz.

Ayrıca uygulamanızın kendi güncelleştirmelerini gerçekleştirmek için dağıtım API'leri kullanıp kullanmaması güncelleştirme denetimini engellemelisiniz; Bu konunun önceki bölümlerinde yer alan "Güncelleştirmeler için kullanıcı arabirimi sağlama" konusuna bakın.

Güncelleştirme denetimini engellemek için Uygulamanın güncelleştirmeleri denetlemesi gerektiğini belirten onay kutusunu Uygulama Güncelleştirmeleri İletişim Kutusunda temizleyin.

Ayrıca, etiketi dağıtım bildiriminden kaldırarak <Subscription> güncelleştirme denetimini engelleyebilirsiniz.

İzin yükseltmesi ve güncelleştirmeleri

ClickOnce uygulamasının yeni bir sürümünün çalışması için önceki sürümden daha yüksek bir güven düzeyi gerekiyorsa, ClickOnce kullanıcıya sorar ve uygulamaya bu daha yüksek düzeyde güven verilmesini isteyip istemediğini sorar. Kullanıcı daha yüksek güven düzeyi vermek için reddederse güncelleştirme yüklenmez. ClickOnce, kullanıcıdan uygulamayı bir sonraki yeniden başlatıldığında yeniden yüklemesini ister. Kullanıcı bu noktada daha yüksek güven düzeyi vermek için reddeder ve güncelleştirme gerekli olarak işaretlenmezse uygulamanın eski sürümü çalışır. Ancak, güncelleştirme gerekliyse, kullanıcı daha yüksek güven düzeyini kabul edene kadar uygulama yeniden çalışmaz.

Güvenilen Uygulama Dağıtımı kullanıyorsanız, güven düzeyi onayı istenmez. Daha fazla bilgi için bkz . Güvenilen uygulama dağıtımına genel bakış.