Несколько установок ClickOnce с разными идентификаторами развертывания, но одинаковыми идентификаторами приложений - PullRequest
26 голосов
/ 30 июля 2009

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

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

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

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

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

Ответы [ 5 ]

18 голосов
/ 21 августа 2009

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

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

3 голосов
/ 27 апреля 2012

В итоге я использовал опцию -u -Update , чтобы создать новое развертывание для QA на основе Production.

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

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

cd "$ (TargetDir)"

"$ (ProjectDir) mage.exe" -Новое приложение -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 не будет обрабатывать каталоги и пути к файлам правильно, когда я дал ему пути с пробелами, которые заключены в двойные кавычки. Чтобы обойти это, я установил в текущем каталоге папку, из которой создаются файлы.

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

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

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

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

1 голос
/ 07 декабря 2009

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

1 голос
/ 31 июля 2009

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

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

0 голосов
/ 04 июня 2013

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

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

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

...