ClickOnce'ın aynı ortamda aynı projeden birden çok yayımlanmış program yüklemesine izin ver (yalnızca .NET Framework sürümleri)

Sayfa güncel :
Sayfa oluşturma tarihi :

Operasyon kontrol ortamı

Görsel Stüdyo
  • Visual Studio 2022 (İngilizce)
.NET Framework
  • .NET Framework 4.8

Gerekli Ortamlar

Framework
  • Genel olarak Windows Forms (.NET Framework)
  • Genel olarak WPF (.NET Framework)

İlk başta

Bu İpuçları, aynı projeden birden çok yayımlanmış ClickOnce'ın aynı ortamda ayrı ayrı nasıl yükleneceğini açıklar.

Aynı projeden birden çok kopyayı farklı yapılandırmalarda yayımlama yordamı hakkında

Örneğin, aynı projede bile, işleme içeriği yapı yapılandırmasına bağlı olarak değiştirilirse, ayrı bir program olarak yayımlamak isteyebilirsiniz. Bu, .NET (Core) sürümünde mümkündür, ancak Visual Studio'nun standart özelliklerine sahip .NET Framework sürümünde mümkün değildir.

Bu yöntem, bir toplu iş programı kullanılarak aşağıdaki ipuçlarında özetlenmiştir. Bu İpuçları, aşağıdaki içeriklerin tamamlandığı öncülünde açıklanmaktadır.

ClickOnce'ın ayrı uygulamalar olarak yüklendiği koşullar

Yukarıda açıklanan toplu iş programını kullanarak yayımlarsanız, yapı yapılandırması değiştirilir, ancak her ikisi de aynı uygulama olarak kabul edilir, Aynı ortama iki tane yüklemeye çalışırsanız, bir çakışma olur ve daha sonra yüklemeye çalışsanız bile yükleme başarısız olur.

Bunun ayrı bir uygulama gibi görünmesini sağlamam gerekiyor, ancak atıfta bulunulan makaleye göre, aşağıdaki parametreler uygulamayı tanımlıyor:

Referans: (.NET) ClickOnce ile yayınladıktan sonra uygulamayı başlattığımda, "yerleşim kimliğinin abonelikle eşleşmediğini" görüyorum

  • Uygulama Adı
  • Ortak Anahtar Belirteci
  • Kültür
  • İşlemci mimarisi (örneğin, x86)

Bunlar arasında "kültür" ve "işlemci mimarisi"nin değiştirilmesinin istenmediğini düşünüyorum çünkü istenmeyen işleme sonuçları olasılığı var.

"Uygulama adını" değiştirmenin bir yolu olduğunu düşünüyorum, Temel olarak, bir projeye yalnızca bir ad verilebileceği için önerilmez. Proje dosyasının içeriğinde yapı yapılandırması ve koşul parametreleri ile birden fazla tanım yapılabilme olasılığı vardır, Visual Studio'da yalnızca bir kullanıcı arabirimi ayarlanabildiğinden, işleme bağlı olarak üzerine yazılabileceğinden biraz tehlikelidir.

Gerisi bir "ortak anahtar belirteci" dir, ancak bu birden fazla sertifika oluşturmanıza olanak tanır, ClickOnce yayımlama sırasında parametre olarak belirtilebildiğinden, uygulamayı bu sefer tanımlamak istiyorum.

Operasyon kontrol prosedürü

Projeyi oluşturma noktasından, toplu iş dosyası olarak yayımlamaya hazır olduğu noktaya kadar, aşağıdaki ipuçlarıyla aynıdır, bu nedenle lütfen bu noktaya kadar olan yordam için buna bakın.

Sertifika oluşturma

Bu kez, örnek için bir test sertifikası ile onaylayacağız. Aslında normal bir sertifika ile yapılmalıdır ancak sertifika oluşturma ve sertifika yetkilisi hazırlama gibi ana konu dışında bir prosedür gerektireceği için sertifikalarla ilgili açıklamayı hariç tutacağım. Üretimde, test sertifikası dosyasını üretim dosyasıyla değiştirmek uygundur.

Projeyi oluşturduktan ve yayımlamak üzere toplu işlemi oluşturduktan sonra Visual Studio'ya dönün. Proje özelliklerini açın ve soldaki menüden İmzala'yı seçin. "ClickOnce bildirimini imzala" için bir kontrol vardır, bu yüzden kontrol edin.

Şimdi iki sertifika oluşturun. Bu sefer bu ekranda oluşturacağız, ama ". pfx" dosya biçiminde, başka yollarla sertifika oluşturmada sorun yoktur.

Sağ alt köşede bir "Test Sertifikası Oluştur" düğmesi vardır, bu yüzden tıklayın.

Ayrıca bir şifre de koyabilirsiniz, ancak koysanız da koymasanız da çalışır. Ancak, bir şifre koymak istiyorsanız, prosedür zahmetli olacaktır, bu yüzden bu sefer koymayacağım.

Projeniz için bir sertifika (.pfx) dosyası oluşturuldu. Burada oluşturulan dosya adı sabittir ancak daha sonra değiştirilebilir. Bu arada, burada oluşturulan test sertifikasının geçerliliği bir yıldır. Bir yıl sonra yeni bir sertifika oluşturmanız gerekir.

Başka bir tane oluşturmak için aynı adımları izleyin.

Bu kez, Hata Ayıklama derlemesinde ve Sürüm yapısında yayımlayacağız, bu nedenle adı net bir adla değiştireceğiz.

Toplu modifikasyon

Oluşturduğunuz toplu iş dosyasını (.bat) bir metin düzenleyicisinde açın ve msbuild parametrelerine aşağıdakileri ekleyin:

parametre adı açıklaması gerekli
ManifestKeyFile Sertifikanın dosya adı (.pfx). Proje dosyasına göre veya proje dosyasından mutlak bir yol belirtin.
ManifestCertificateParmak İzi Bildirim sertifikasının parmak izi. Konulacak değer herhangi bir şey olabilir, ancak her şekilde konulmalıdır.
Ürün Adı Ürün adı. Başlat menüsünün veya program listesinin görünen adı haline gelir.
Yayıncı Adı Halka açık şirket adı. Başlat menüsünde programları düzenlerken klasör adı haline gelir.

Yukarıdakilere dayanarak, yama dosyasını aşağıdaki gibi değiştirin.

ClickOnceDebug yayımlar.bat (örnek)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\" /p:ManifestKeyFile="ClickOnceMultipleInstallDebug.pfx" /p:ManifestCertificateThumbprint="Debug" /p:ProductName="CliclOnce テスト Debug システム" /p:PublisherName="Sorceryforce"

ClickOnceRelease Sorunu.bat (Örnek)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\" /p:ManifestKeyFile="ClickOnceMultipleInstallRelease.pfx" /p:ManifestCertificateThumbprint="Release" /p:ProductName="CliclOnce テスト Release システム" /p:PublisherName="Sorceryforce"

ManifestKeyFile Her değer farklı bir sertifika dosyası belirtir. ManifestCertificateThumbprint Değeri herhangi bir şey olabilir, ancak eklemediğinizden emin olun, çünkü koymazsanız uygulama başka bir uygulama olarak tanımlanamaz.

Bu arada, bu kez aynı ortamda iki program kurulduğundan ProductName , ayırt edilebilmeleri için parametreler eklenmiştir. PublisherName beğeninize göre.

sorun

Girişten sonra, her toplu iş dosyasını yürütün ve yayımlayın.

Yayımladığınız dosyada xxxx.application varsa, dosyayı bir metin düzenleyicisinde açın ve farklı bir değere sahippublicKeyToken olduğundan emin olun.

yüklemek

Yayımlanan dosyaları ortak klasöre kopyaladıktan sonra, yüklemek setup.exe için çalıştırın.

Sertifikayı verme sırasında girerseniz, yükleme sırasında aşağıdaki ekran görüntülenir. Bu bir sınama sertifikasıysa, yayımcı onaylanamaz, bu nedenle olduğu gibi yükleyin.

İlk program kuruldu ve başlatıldı.

Diğerini yüklemeyi deneyeceğim.

Diğeri de kuruldu ve başlatıldı.

Tabii ki, her ikisi de aynı anda çalışıyor.

ProductName Eklendiğinden, başlat menüsünde ayrı olarak görüntülenir.

Her ikisini de uygulamalar listesinde görebilirsiniz.