2010-10-13 3 views
1

У меня 2 сервера. Один из них - серверы производства и тестирования.clickonce установка вопрос

Теперь у меня есть приложение WPF, которое находится на обоих серверах производства и тестирования. Как я могу установить приложение WPF на моем локальном компьютере с сервера производства и тестирования? Я получаю сообщение об ошибке, когда была установлена ​​одна и та же подпись.

благодарит

ответ

3

Вам нужен отдельный пакет ClickOnce для каждой среды. У каждого пакета должно быть другое имя_соединения. Просмотрите файл манифеста развертывания (* .application) для элемента assemblyIdentity. Атрибут name этого элемента должен быть разным для каждой среды. Это будет выглядеть примерно так:

<assemblyIdentity 
    name="Product_TEST" 
    version="2.5.44.19347" 
    publicKeyToken="82e7b44bd73eeecd" 
    language="neutral" 
    processorArchitecture="msil" 
    xmlns="urn:schemas-microsoft-com:asm.v1" /> 

Мы используем имена, как: Product_TEST, Product_UAT, Product_PROD различать каждый экземпляр ClickOnce. Используя этот метод, мы можем установить несколько экземпляров продукта рядом друг с другом на клиентском ПК.

Это означает, что вам необходимо создать отдельный пакет ClickOnce для каждой среды. Манифест развертывания будет различным для каждого, поэтому каждый пакет будет иметь разные подписи подписи (если вы используете подписанные пакеты). Мы использовали целевые объекты msbuild ClickOnce для создания отдельных пакетов для всех наших сред, но недавно изменили их на создание одного универсального пакета и создали настраиваемый инструмент настройки, который при необходимости выполняет переупаковку ClickOnce. Вы также можете использовать Маг.

+0

Я не могу понять, как изменить атрибут имени. Я использую msbuild с/t: publish –

+0

Если вы используете/t: Публикуете встроенную цель, вам нужно будет отредактировать это имя через Свойства проекта в VisualStudio. Откройте свойства проекта, откройте вкладку «Опубликовать» и нажмите «Параметры». Я использую цели GenerateApplicationManifest и GenerateDeploymentManifest msbuild непосредственно в сценариях сборки, поэтому я могу установить свойства по мере необходимости. – Glenn

+0

Возможно, это изменилось, но я не вижу, как это сделать. Во всем моем тестировании все, что я смог выполнить, - это получить идентификационное имя, установленное из AssemblyName, но оно все равно производит неправильное значение. –

Смежные вопросы