ClickOnce'ın aynı ortamda aynı projeden birden çok yayımlanmış program yüklemesine izin ver (yalnızca .NET Framework sürümleri)
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:
- 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.