2008-12-09 34 views
1

一個CD有誰知道如何創建一個ClickOnce出版物中使用的MSBuild的發佈任務CD?你如何發佈ClickOnce構建與MSBuild的

VS2008具有發佈到CD單選按鈕選項的「發佈嚮導」。它將發佈一次點擊安裝到適合刻錄到CD的本地文件夾。

我們正在按照預定的MSBuild進行後處理步驟,在該步驟中我們將其配置並安裝到給定的環境中,並且我們希望有一種生成ClickOnce輸出CD的腳本化方法。

我已經能夠使一個網絡安裝和文件共享安裝此過程中的工作,但它好像在「發佈嚮導」做了一些隱藏的一步,我不能發現。

我會從我的腦海試圖關聯在發佈對話框中的各種屬性,發佈嚮導,MSBuild的發佈目標,mage.exe和mageui.exe。有些項目具有相同的名稱,對話框和屬性有些不同,有些項目可以設置在一個區域,但不能設置在另一個區域。

我可以看到自動化的ClickOnce可以做,但總體而言,它似乎是一個圖形用戶界面技術,腳本,似乎違背其糧食。

比爾

+0

你能發佈網頁和文件共享發佈命令行嗎? – 2016-10-07 14:29:49

回答

1

我想補充這一點,似乎有事情做與發佈步驟的輸出運行MageUi。

如果我用的MSBuild從命令行發佈,看起來像:

msbuild C:\myapp.vbproj /target:publish ` 
/property:PublishDir=c:\ClickOnce\ ` 
/property:SolutionDir=C:\trunk\myapp\ ` 
/property:TargetZone=LocalIntranet ` 
/property:MapFileExtensions=True ` 
/property:PublisherName='my publisher' ` 
/property:ProductName='myProduct' ` 
/property:BootstrapperEnabled=True ` 
/property:IsWebBootstrapper=False ` 
/property:GenerateManifests=True ` 
/property:ApplicationVersion=1.2.3.4 ` 
/property:Configuration=Debug ` 
/property:UpdateUrl=http://localhost/ClickOnce/ ` 
/property:UpdateEnabled=True ` 
/property:Install=True 

然後,我創建一個文件夾是從CD安裝。

當我操縱配置文件,並將其他進程的額外輸出添加到發佈文件夾,然後使用MageUI重新生成應用程序和部署清單時,我創建了一個基於文件的安裝,實際上是從updateURL安裝的。如果我從互聯網上斷開連接,我得到一個'無法連接到遠程服務器'的異常,所以不僅僅是檢查更新,它還堅持從網絡服務器進行安裝。

1

嗯,我已經回答了我自己的問題。

這是一個Http編碼問題!

當你發佈一個應用程序,你最終像一個文件夾結構: C:\對myApp \應用程序文件\版本1

當你改變了發佈應用程序的內容(如你做的時候你想要替換配置文件),您必須退出應用程序和部署清單。

當你做到這一點,MageUi.exe HttpEncodes的的application.manifest的「位置」。

所以現在部署清單說,你的本地文件路徑應用程序清單是這樣的:申請%20Files \ myApp_version \ MYAPP.EXE。清單

而且,由於這條道路並不存在,其原因據稱基於CD的安裝實際上從HTTP安裝:更新服務器,如果它存在,如果它不

我們的解決辦法是要失敗將「應用程序文件」重命名爲「ApplicationFiles」。

令人難以置信......

+0

您是否瞭解如何自動執行此操作?我遇到過一個類似的情況,即網絡服務器不允許我在其中包含空格的路徑,如果手動更改清單文件,您的解決方案將起作用 – 2009-05-27 15:32:53