Установка приложения ClickOnce из двух разных мест - PullRequest
5 голосов
/ 15 марта 2011

У меня есть приложение Windows Forms, разработанное с использованием C # в .NET Framework 3.5, пакет обновления 1. Приложение может быть опубликовано на основе базы данных разработки, а также рабочей базы данных. Я использую задачи сообщества MSBuild для публикации своего приложения. У меня нет проблем при публикации приложения в другом месте, а именно в месте разработки и в месте производства.

Проблема:

  1. После установки приложения для разработки на мой компьютер я не могу установить производственное приложение. Это дает мне ошибку, говоря:

    Вы не можете запустить приложение TEST из этого места потому что он уже установлен из другого места

  2. Вопрос: Как аппарат понимает, что я пытаюсь установить то же приложение? Я предполагаю, что у него есть какой-то идентификатор приложения. Если это так, я могу переопределить соответствующее значение в зависимости от местоположения. (DEV или PROD)

    Текущий код при публикации в файле проекта моего приложения:

    <Choose>
        <When Condition=" '$(BuildEnvironment)' == 'DEV' ">
          <PropertyGroup>
            <PublishDir>\\A\B\development\</PublishDir>
            <BaseConnection>Data Source=SQL-DEV.company.com; Database=TEST;Uid=XYZ;Pwd=ABC;</BaseConnection>
    
          </PropertyGroup>
        </When>
    
        <When Condition=" '$(BuildEnvironment)' == 'PROD' ">
          <PropertyGroup>
            <PublishDir>\\A\B\production\</PublishDir>
            <BaseConnection>Data Source=SQL-PROD.company.com;; Database=TEST;Uid=XYZ;Pwd=ABC;</BaseConnection>
    
          </PropertyGroup>
        </When>
    </Choose>
    

    Публикация приложения работает как шарм и указывает на соответствующую базу данных. Все, что я хочу сейчас сделать - это установить приложение разработки, а также производственное приложение на одном компьютере без ошибок.

  3. Вопрос: Чем отличается одно нажатие приложения один раз от другого?

Ответы [ 4 ]

5 голосов
/ 16 марта 2011

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

После добавления атрибута поставщика развертывания элемента развертывания в манифест приложения я смог установить свое приложение из разных мест. Но проблема здесь заключалась в том, что он переопределял ранее установленное приложение. Для этой проблемы я следовал этому руководству , чтобы отличить мое приложение для разработки от производственного приложения.

Теперь все отлично работает. :)

1 голос
/ 25 марта 2011

У меня есть продукт под названием ClickOnceMore (www.clickoncemore.net), который разработан для этого типа использования.Его основное использование заключается в автоматизации части ClickOnce вашей сборки.

Он имеет полную поддержку расширений макросов, позволяя вам определять, например, версии DEV и PROD.Когда вы создаете, вы можете определить, для какой среды вы создаете, и тогда имя приложения будет отражать это.Проверьте это, если у вас есть шанс.

0 голосов
/ 03 января 2017

Я знаю, что это старая ветка, но у меня была такая же ошибка с WPF при попытке обновить и более старую версию программы.Мне пришлось удалить старую версию и перезапустить программу установки один раз, тогда она работала нормально.

Я думал, что выложу ее здесь.

0 голосов
/ 15 марта 2011

Первое, что я попробую, это перейти к свойствам вашего проекта Windows Forms.На вкладке «Публикация» нажмите кнопку «Параметры» и измените «Имя продукта» на YourProductName _Test или что-то подобное и посмотрите, позволит ли это установить две версии рядом.

Iникогда не пробовал, но я думаю, что приложения ClickOnce однозначно идентифицируются сочетанием значений «Имя издателя» и «Имя продукта», и в этом случае это может решить вашу проблему ... Дайте ей шанс ...

...