2009-04-15 63 views
2

我想在每次構建時發佈我的應用程序的測試版,因此用戶可以在常規發行版之前訪問「測試版」並測試功能。如何發佈ClickOnce應用程序的測試版?

我試着通過覆蓋ProductName,同時將其運行到[product] -beta來做到這一點。問題是發佈過程仍然會創建一個[product] .application,並且似乎ClickOnce魔術不知道一個URL上的[product] .application與另一個上的[product] .application之間的區別。

任何想法,我會如何解決這個問題?

回答

4

我遇到了一個非常類似的問題,這裏是我提出的解決方案。

我把我所有的GUI形式放入一個包含主啓動窗體的DLL中。然後我創建了2個引用我的GUI DLL的EXE項目。一個名稱爲Product和另一個ProductBeta。
EXE中的代碼在兩者之間幾乎相同。即Application.Run(new 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)" /> 

這種方法的一個限制是 該項目的引用將不再 工作。使用基於文件的裝配參考, ,它會沒事的。

相關問題