Подтвердить что ты не робот

Множественные установки ClickOnce с разным идентификатором развертывания, но с тем же идентификатором приложения

У нас есть несколько развертываний одних и тех же сборок с разными конфигурационными файлами для разных сред. Мы упаковываем их для разделения развертываний ClickOnce с различными идентификаторами развертывания (Program_ENV1, Program_ENV2 и т.д.).

Идентификатор приложения - Program.exe для всех из них, потому что у нас есть сторонний компонент, который требует, чтобы исполняемый файл использовал его с тем же именем, что и для него.

Если мы хотим иметь несколько установок одного и того же номера версии на одном компьютере (для тестирования), мы получаем сообщение об ошибке при установке, что уже существует тот же идентификатор приложения.

Мы не хотим создавать отдельные сборки с новыми номерами версий для каждого развертывания (QA подписывается на сборках версии X.X.X.45, а не версии X.X.X.46).

Есть ли другой способ решения этой проблемы?

4b9b3361

Ответ 1

Чтобы запускать параллельные версии приложения ClickOnce, вы должны изменить AssemblyName, и оно также рекомендовало вам изменить ProductName в свойствах публикации, поэтому вы можете указать в стартовом меню, какой именно.

Нажмите здесь, чтобы посмотреть, как установить несколько версий одновременно

Ответ 2

В результате я использовал параметр -u -Update для создания нового развертывания для QA на основе Production.

Вот шаги, которые я сделал для проверки проверки

  • создать простое приложение WPF
  • скопировать файл mage.exe в проект, так как Visual Studio не может его решить во время сборки
  • Добавлен текст ниже в текст публикации проекта

cd "$ (TargetDir)"

"$ (ProjectDir) mage.exe" -New Application -Name $(ProjectName) -p msil -TrustLevel FullTrust -Version 1.0.0.0 -FromDirectory. -ToFile ".\$(TargetFileName).manifest"

"$ (ProjectDir) mage.exe" -New Deployment -Install false -Name $(ProjectName) -p msil -Version 1.0.0.0 -AppManifest ".\$(TargetFileName).manifest" -ToFile ".\$(Имя_целевого_объект).Application"

"$ (ProjectDir) mage.exe" -Update ".\$(TargetName).application" -Install false -Name $(ProjectName).QA -p msil -Version 1.0.0.0 -AppManifest ".\$( TargetFileName).manifest" -ToFile ".\$(TargetName).QA.application"

Мне нужно было перейти на "$ (TargetDir)" через cd "$ (TargetDir)" , потому что mage правильно перетащить каталоги процессов и файловые пути, когда я дал им пути с пробелами, заключенными в двойные кавычки. Чтобы обойти это, я устанавливаю текущую директорию в местоположение, где созданы файлы.

Вторая строка создает файл манифеста

Третья строка создает файл развертывания Production.

4-я строка создает файл развертывания QA из файла развертывания Production. ( ПРИМЕЧАНИЕ: Я добавляю QA к файлу развертывания и имени приложения.)

4-я строка вызывает создание 2-го файла приложения. Когда оба приложения запускаются, они будут иметь одинаковые двоичные файлы, но ApplicationDeployment.UpdateLocation будут разными для каждого. У одного будет имя файла $(TargetName).application, а у другого будет имя файла $(TargetName).QA.application. В моем коде я могу использовать это, чтобы определить, какая "версия" приложения была запущена (QA или Производство)

Ответ 3

Попробуйте использовать MageUI. Откройте манифест развертывания (тот, у которого расширение .application). Выберите "Имя" в списке слева и отредактируйте текстовое поле "Имя". Затем выберите "Описание" из списка и отредактируйте поле "Продукт". Таким образом, вы сможете различать разные установки в меню "Пуск" и в программах добавления/удаления.

Сохраните изменения, перепишите манифест, и вам должно быть хорошо идти.

Ответ 4

Karg, если вы используете MageUI, вы можете изменить ApplicationIdentity и запустить сразу несколько опубликованных версий одного и того же приложения.

Ответ 5

Для каждой среды сохраните отдельные имена сборок и имена продуктов с постфиксным именем среды. Кроме того, создайте GUID для каждой среды и добавьте его в AssemblyInfo.cs, например:

[assembly: GuidAttribute("FA380FBE-11B0-406E-88D3-AF40BE93F7D6")]

Затем это позволяет запускать одно и то же приложение с отдельных сайтов ClickOnce, каждый из которых имеет короткий разрез, соответствующий названию продукта.