Как опубликовать бета-версию приложения ClickOnce? - PullRequest
2 голосов
/ 15 апреля 2009

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

Я попытался сделать это, переопределив ProductName при запуске его на [product] -бета. Проблема заключается в том, что процесс публикации по-прежнему создает приложение [product] .application, и похоже, что магия ClickOnce не знает разницы между приложением [product] .application на одном URL и приложением [product] .application на другом.

Есть идеи, как мне обойти это?

Ответы [ 2 ]

4 голосов
/ 15 апреля 2009

Я столкнулся с очень похожей проблемой, и вот решение, которое я нашел.

Я поместил все свои формы GUI в DLL, включая основную форму запуска. Затем я создал 2 EXE-проекта, которые ссылаются на мой графический интерфейс. Один имеет название Product, а другой ProductBeta.
Код в EXE-файле практически одинаков между ними. А именно Application.Run (новый MainForm ()).

Затем я настроил их на публикацию в подкаталогах того же ресурса.

Это раздражает и имеет некоторые накладные расходы, но результаты работают очень хорошо.

1 голос
/ 15 апреля 2009

Как вы обнаружили, изменение названия продукта недостаточно. Вам нужно изменить имя сборки.

Подробности от http://weblogs.asp.net/sweinstein/archive/2008/08/24/top-5-secrets-of-net-desktop-deployment-wizards.aspx

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

Исправление относительно просто - вам нужно предоставить другое имя развертывания для каждого строить. Вот так -

<MSBuild 
   Projects="ClickOnce.csproj"
   Targets="Publish"
   Properties="
            MinimumRequiredVersion=$(MinimumRequiredVersion);
            ApplicationVersion=$(ApplicationVersion);
            ApplicationRevision=$(ApplicationRevision);
            CodeBranch=$(CodeBranch);
            DeployEnv=$(DeployEnv)
            AssemblyName=ClickOnce.$(DeployEnv);
            PublishUrl=$(PublishUrl);
            ProductName=ClickOnce $(CodeBranch) $(DeployEnv)" />

Единственное ограничение этого подхода что ссылки на проекты больше не будут Работа. Используйте ссылки на сборку на основе файлов, и все будет хорошо.

...