2009-04-15 2 views
2

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

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

Любая идея о том, как я обойду это?

ответ

4

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

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

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

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

1

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

Детали из 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)" /> 

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