Разрешить ClickOnce устанавливать несколько опубликованных программ из одного проекта в одной среде (только для выпусков .NET Framework)
Среда проверки операций
- Visual Studio
-
- Visual Studio 2022
- Платформа .NET Framework
-
- Платформа .NET Framework 4.8
Требуемые среды
- каркас
-
- Windows Forms (платформа .NET Framework) в целом
- WPF (.NET Framework) в целом
Сначала
В этом разделе описано, как установить несколько опубликованных ClickOnce из одного проекта отдельно в одной среде.
О процедуре публикации нескольких копий из одного проекта в разных конфигурациях
Например, даже в том же проекте, если содержимое обработки изменяется в зависимости от конфигурации сборки, может потребоваться публикация в виде отдельной программы. Это возможно в версии .NET (Core), но не в версии .NET Framework со стандартными функциями Visual Studio.
Этот метод кратко описан в следующих советах по использованию пакетной программы. Эти советы объясняются на том основании, что следующее содержимое завершено.
Условия, при которых ClickOnce устанавливается как отдельные приложения
При публикации с помощью пакетной программы, описанной выше, конфигурация сборки изменяется, но обе они рассматриваются как одно и то же приложение, Если вы попытаетесь установить два в одной и той же среде, возникнет конфликт, и установка завершится ошибкой, даже если вы попытаетесь установить позже.
Мне нужно сделать так, чтобы это казалось отдельным приложением, но согласно упомянутой статье, следующие параметры идентифицируют приложение:
- Имя приложения
- Токен открытого ключа
- Культура
- Архитектура процессора (например, x86)
Среди них, я думаю, что нежелательно менять «культуру» и «архитектуру процессора», потому что существует вероятность непреднамеренной обработки результатов.
Я думаю, что есть способ изменить «имя приложения», В принципе, это не рекомендуется, потому что одному проекту может быть дано только одно имя. Существует вероятность того, что несколько определений могут быть сделаны по параметрам конфигурации сборки и условий в содержимом файла проекта, Поскольку в Visual Studio можно задать только один пользовательский интерфейс, это немного опасно, поскольку оно может быть перезаписано в зависимости от операции.
Остальное является «токеном открытого ключа», но этот позволяет создавать несколько сертификатов, Поскольку он может быть указан в качестве параметра во время публикации ClickOnce, я хотел бы идентифицировать приложение с этим временем.
Процедура проверки работы
С момента создания проекта до момента, когда он готов к публикации в виде пакетного файла, это то же самое, что и следующие советы, поэтому, пожалуйста, обратитесь к нему для процедуры до этого момента.
Создание сертификата
На этот раз мы подтвердим это сертификатом теста для образца. Первоначально это должно быть сделано с обычным сертификатом, но поскольку это потребует процедуры, отличной от основного предмета, такого как создание сертификата и подготовка центра сертификации, я исключу объяснение, связанное с сертификатами. В рабочей среде можно заменить файл тестового сертификата рабочим файлом.
После создания проекта и создания пакета для публикации вернитесь в Visual Studio. Откройте свойства проекта и выберите Подпись в меню слева. Есть флажок «Подписать манифест ClickOnce», поэтому проверьте его.
Теперь создайте два сертификата. На этот раз мы создадим его на этом экране, но». pfx", нет проблем с созданием сертификатов другими способами.
В правом нижнем углу есть кнопка «Создать тестовый сертификат», поэтому нажмите на нее.
Вы также можете ввести пароль, но он работает независимо от того, вставляете вы его или нет. Однако, если вы хотите поставить пароль, процедура будет хлопотной, поэтому я не буду ставить ее на этот раз.
Для проекта создан файл сертификата (PFX-файл). Имя файла, сгенерированное здесь, исправлено, но может быть изменено позже. Кстати, срок действия созданного здесь тестового сертификата составляет один год. Через год потребуется воссоздать новый сертификат.
Выполните те же действия, чтобы создать еще один.
На этот раз мы опубликуем в сборках Debug и Release, поэтому изменим имя на понятное.
Пакетная модификация
Откройте созданный пакетный файл (.bat) в текстовом редакторе и добавьте в параметры msbuild следующее:
Требуется | описание | имени параметра |
---|---|---|
Файл ключа манифеста | Имя файла (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.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
Поскольку он был прикреплен, он отображается отдельно в меню «Пуск».
Вы также можете увидеть оба в списке приложений.