Benarkan ClickOnce memasang berbilang program yang diterbitkan daripada projek yang sama dalam persekitaran yang sama (.NET Framework Editions sahaja)

Laman dikemaskini :
Tarikh penciptaan halaman :

Persekitaran pemeriksaan operasi

Visual Studio
  • Studio Visual 2022
.NET Framework
  • .NET Framework 4.8

Persekitaran yang Diperlukan

Rangka kerja
  • Borang Windows (Rangka Kerja.NET) secara umum
  • WPF (.NET Framework) secara umum

Pada mulanya

Petua ini menerangkan cara memasang berbilang ClickOnce yang diterbitkan daripada projek yang sama secara berasingan dalam persekitaran yang sama.

Perihal prosedur untuk menerbitkan berbilang salinan daripada projek yang sama dalam konfigurasi yang berbeza

Sebagai contoh, walaupun dalam projek yang sama, jika kandungan pemprosesan diubah bergantung pada konfigurasi binaan, anda mungkin mahu menerbitkan sebagai program yang berasingan. Ini boleh dilakukan dalam versi .NET (Core), tetapi tidak dalam versi Rangka Kerja .NET dengan ciri standard Visual Studio.

Kaedah ini diringkaskan dalam petua berikut menggunakan program batch. Petua ini dijelaskan di premis bahawa kandungan berikut selesai.

Syarat di mana ClickOnce dipasang sebagai aplikasi berasingan

Jika anda menerbitkan menggunakan program batch yang diterangkan di atas, konfigurasi binaan diubah, tetapi kedua-duanya dianggap sebagai aplikasi yang sama, Jika anda cuba memasang dua dalam persekitaran yang sama, akan ada konflik, dan pemasangan akan gagal walaupun anda cuba memasang kemudian.

Saya perlu membuat ini seolah-olah menjadi aplikasi yang berasingan, tetapi mengikut artikel yang dirujuk, parameter berikut mengenal pasti aplikasi:

Rujukan: (.NET) Apabila saya melancarkan aplikasi selepas menerbitkan dengan ClickOnce, saya mendapat bahawa "ID peletakan tidak sepadan dengan langganan"

  • Nama Permohonan
  • Token Kekunci Awam
  • Budaya
  • Seni bina pemproses (contohnya, x86)

Di antara ini, saya fikir adalah tidak diingini untuk mengubah "budaya" dan "seni bina pemproses" kerana terdapat kemungkinan hasil pemprosesan yang tidak diingini.

Saya fikir ada cara untuk menukar "nama aplikasi", Pada asasnya, ia tidak disyorkan kerana hanya satu nama yang boleh diberikan kepada satu projek. Terdapat kemungkinan bahawa pelbagai definisi boleh dibuat dengan membina konfigurasi dan parameter keadaan dalam kandungan fail projek, Oleh kerana hanya satu UI yang boleh ditetapkan di Visual Studio, ia agak berbahaya kerana ia mungkin ditimpa bergantung pada operasi.

Selebihnya adalah "token kunci awam", tetapi yang satu ini membolehkan anda membuat pelbagai sijil, Oleh kerana ia boleh ditentukan sebagai parameter pada masa penerbitan ClickOnce, saya ingin mengenal pasti aplikasi dengan masa ini.

Prosedur semakan operasi

Dari sudut membuat projek ke titik di mana ia bersedia untuk diterbitkan sebagai fail batch, ia adalah sama dengan petua berikut, jadi sila rujuk kepadanya untuk prosedur sehingga ke tahap itu.

Mencipta sijil

Kali ini, kami akan mengesahkan dengan sijil ujian untuk sampel. Pada asalnya, ia perlu dilakukan dengan sijil biasa, tetapi kerana ia memerlukan prosedur selain daripada subjek utama seperti penciptaan sijil dan penyediaan kuasa sijil, saya akan mengecualikan penjelasan yang berkaitan dengan sijil. Dalam pengeluaran, adalah OK untuk menggantikan fail sijil ujian dengan fail pengeluaran.

Selepas anda mencipta projek dan mencipta kumpulan untuk penerbitan, kembali ke Visual Studio. Buka sifat projek dan pilih Tandatangan daripada menu di sebelah kiri. Terdapat cek untuk "Tandatangani manifes ClickOnce" jadi semak.

Sekarang buat dua sijil. Kali ini kami akan menciptanya pada skrin ini, tetapi ". pfx" format fail, tidak ada masalah dengan membuat sijil dengan cara lain.

Terdapat butang "Buat Sijil Ujian" di sudut kanan bawah, jadi klik padanya.

Anda juga boleh meletakkan kata laluan, tetapi ia berfungsi sama ada anda memasukkannya atau tidak. Walau bagaimanapun, jika anda ingin meletakkan kata laluan, prosedur itu akan menyusahkan, jadi saya tidak akan meletakkannya kali ini.

Fail sijil (.pfx) telah dijana untuk projek anda. Nama fail yang dijana di sini telah ditetapkan tetapi boleh ditukar kemudian. Dengan cara ini, kesahihan sijil ujian yang dibuat di sini adalah satu tahun. Selepas satu tahun, anda perlu mencipta semula sijil baru.

Ikuti langkah yang sama untuk mencipta yang lain.

Kali ini, kami akan menerbitkan dalam binaan Nyahpepijat dan binaan Keluaran, jadi kami akan menukar nama kepada yang jelas.

Pengubahsuaian kumpulan

Buka fail kelompok yang anda cipta (.bat) dalam editor teks dan tambahkan yang berikut kepada parameter msbuild:

perihalan nama parameter diperlukan
ManifestKeyFile Nama fail (.pfx) sijil. Tentukan laluan relatif atau mutlak dari fail projek.
ManifestCertificateThumbprint Cap jari sijil nyata. Nilai yang akan dimasukkan boleh menjadi apa-apa, tetapi ia mesti dimasukkan dengan segala cara.
Productname Nama produk. Ia menjadi nama paparan menu mula atau senarai program.
PublisherName Nama syarikat awam. Ia menjadi nama folder apabila menganjurkan program dalam menu permulaan.

Berdasarkan perkara di atas, ubah suai fail tampalan seperti berikut.

ClickOnceDebug menerbitkan.bat (contoh)

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"

Isu ClickOnceRelease.bat (Contoh)

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 Setiap nilai menentukan fail sijil yang berbeza. ManifestCertificateThumbprint Nilai boleh menjadi apa-apa, tetapi pastikan untuk memasukkannya kerana aplikasi itu tidak dapat dikenal pasti sebagai yang lain jika anda tidak meletakkannya.

Dengan cara ini, kerana dua program dipasang dalam persekitaran yang sama kali ini, parameter telah ditambah supaya ProductName mereka dapat dibezakan. PublisherName mengikut keinginan anda.

Isu

Selepas input, laksanakan setiap fail batch dan terbitkannya.

Jika xxxx.application berada dalam fail yang anda terbitkan, bukanya dalam editor teks dan pastikan ia mempunyaipublicKeyToken nilai yang berbeza.

Memasang

Selepas menyalin fail yang diterbitkan ke folder awam, jalankan untuk memasangnya setup.exe .

Jika anda memasukkan sijil pada masa pengeluaran, skrin berikut akan dipaparkan pada masa pemasangan. Jika ia adalah sijil ujian, penerbit tidak boleh disahkan, jadi pasangkannya seperti itu.

Program pertama dipasang dan dilancarkan.

Saya akan cuba memasang yang lain.

Yang lain juga dipasang dan dilancarkan.

Sudah tentu, kedua-duanya bekerja pada masa yang sama.

ProductName Oleh kerana ia dilampirkan, ia dipaparkan secara berasingan dalam menu permulaan.

Anda juga boleh melihat kedua-duanya dalam senarai apl.