Дозволити ClickOnce встановлювати кілька опублікованих програм з одного проекту в одному середовищі (лише випуски фреймворку .NET)

Сторінка оновлюється :
Дата створення сторінки :

Середовище перевірки роботи

Візуальна студія
  • Візуальна студія 2022
.NET Фреймворк
  • .NET Framework 4.8

Необхідні середовища

Рамках
  • Форми Windows (.NET Framework) загалом
  • WPF (.NET Framework) в цілому

На перших порах

У цій пораді описано, як інсталювати кілька опублікованих ClickOnce з одного проекту окремо в одному середовищі.

Про порядок публікації декількох копій з одного проекту в різних конфігураціях

Наприклад, навіть в тому ж проекті, якщо вміст обробки змінюється в залежності від конфігурації збірки, можливо, ви захочете опублікувати у вигляді окремої програми. Це можливо у версії .NET (Core), але не у версії .NET Framework зі стандартними функціями Visual Studio.

Цей спосіб підсумовується в наступних радах за допомогою пакетної програми. Ця порада пояснюється на підставі того, що наступний вміст завершено.

Умови, за яких ClickOnce встановлює як окремі програми

Якщо ви публікуєте за допомогою пакетної програми, описаної вище, конфігурація збірки змінюється, але обидві розглядаються як одне і те ж додаток, Якщо ви спробуєте встановити два в одному середовищі, виникне конфлікт, і установка не вдасться, навіть якщо ви спробуєте встановити пізніше.

Мені потрібно зробити так, щоб це здавалося окремим додатком, але згідно з цитованою статтею, додаток ідентифікують такі параметри:

Посилання: (.NET) Коли я запускаю програму після публікації за допомогою ClickOnce, я отримую, що "ідентифікатор розміщення не відповідає підписці"

  • Назва програми
  • Токен відкритого ключа
  • Культура
  • Архітектура процесора (наприклад, x86)

Серед них, на мою думку, небажано змінювати "культуру" та "архітектуру процесора", оскільки є ймовірність ненавмисної обробки результатів.

Думаю, що є спосіб змінити «ім'я програми», В основному, це не рекомендується, тому що одному проекту можна дати тільки одне ім'я. Є ймовірність, що кілька визначень можна зробити за параметрами конфігурації збірки і умов у вмісті файлу проекту, Оскільки у Visual Studio можна встановити лише один інтерфейс користувача, це трохи небезпечно, оскільки він може бути перезаписаний залежно від операції.

Решта - це «токен відкритого ключа», але цей дозволяє створювати кілька сертифікатів, Оскільки він може бути вказаний як параметр на момент публікації ClickOnce, я хотів би ідентифікувати додаток з цим часом.

Порядок перевірки операції

Від моменту створення проекту до того моменту, коли він готовий до публікації у вигляді пакетного файлу, це те ж саме, що і наступні поради, тому, будь ласка, зверніться до нього для процедури до цього моменту.

Створення сертифіката

На цей раз ми підтвердимо тестовим сертифікатом на зразок. Спочатку це слід робити зі звичайним сертифікатом, але оскільки це вимагатиме процедури, відмінної від основного предмета, такого як створення сертифікатів та підготовка центру сертифікації, я виключу пояснення, пов'язані з сертифікатами. У виробництві можна замінити файл сертифіката тесту на виробничий файл.

Створивши проект і створивши пакет для публікації, поверніться до Visual Studio. Відкрийте властивості проекту та виберіть «Підписати» в меню ліворуч. Існує перевірка на "Підписати маніфест ClickOnce", тому перевірте його.

Тепер створіть два сертифікати. Цього разу ми створимо його на цьому екрані, але ». формат файлу pfx", немає проблем зі створенням сертифікатів іншими способами.

У правому нижньому кутку є кнопка "Створити тестовий сертифікат", тому натисніть її.

Ви також можете поставити пароль, але він працює, вводите ви його чи ні. Однак, якщо ви хочете поставити пароль, процедура буде клопіткою, тому цього разу ставити не буду.

Для вашого проекту створено файл сертифіката (PFX). Ім'я файлу, згенероване тут, виправлено, але може бути змінено пізніше. До речі, термін дії створеного тут тестового сертифіката становить один рік. Через один рік потрібно буде відтворити новий сертифікат.

Виконайте ті ж дії, щоб створити ще один.

Цього разу ми опублікуємо в збірці Debug і збірці Release, тому змінимо назву на чітку.

пакетна модифікація

Відкрийте створений вами пакетний файл (.bat) в текстовому редакторі і додайте до параметрів msbuild наступне:

обов'язковий опис імені параметра
ManifestKeyFile Ім'я файлу (PFX) сертифіката. Вкажіть шлях відносно або абсолютний з файлу проекту.
МаніфестСертифікатТумбпринт Відбиток пальця сертифіката маніфесту. Цінність, яку потрібно вкласти, може бути будь-якою, але її потрібно вкласти неодмінно.
Назва_продукту Назва продукту. Він стає коротким ім'ям меню пуск або списку програм.
Ім'я_видавця Публічна назва компанії. Він стає ім'ям папки при організації програм в меню пуск.

Виходячи з вищесказаного, модифікуйте файл патча наступним чином.

ClickOnceDebug публікує.bat (приклад)

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 Issue.bat (приклад)

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 Кожне значення визначає інший файл сертифіката. ManifestCertificateThumbprint Значення може бути будь-яким, але обов'язково включіть його, оскільки додаток не можна ідентифікувати як інший, якщо ви його не поставите.

До речі, так як в одному середовищі на цей раз встановлені дві програми, додані параметри, ProductName щоб їх можна було розрізнити. PublisherName на свій смак.

випуск

Після введення виконайте кожен пакетний файл і опублікуйте його.

Якщо в опублікованому вами файлі є xxxx.application, відкрийте його в текстовому редакторі і переконайтеся, що маєpublicKeyToken інше значення.

інсталювати

Після копіювання опублікованих файлів до спільної папки запустіть їх, щоб встановити .setup.exe

Якщо ви введете сертифікат під час видачі, на момент встановлення відобразиться наступний екран. Якщо це тестовий сертифікат, видавця підтвердити не можна, тому встановіть його як є.

Перша програма була встановлена і запущена.

Спробую встановити інший.

Інший також був встановлений і запущений.

Звичайно, обидва працюють одночасно.

ProductName Так як він був прикріплений, то відображається окремо в меню пуск.

Ви також можете побачити обидва в списку програм.