2008-10-06 71 views
9

我在網絡驅動器的發佈文件夾中有一個ClickOnce包的集合,並且需要將它們全部移到另一個服務器(我們的DR計算機)。如何移動ClickOnce部署包

後拷貝/粘貼整個目錄和新的機器,我得到一個錯誤消息,指出它找不到舊的路徑上運行的設置:有一次,我改變安裝URL在指向

Activation of ...MyClickOnceApp.application resulted in exception. Following failure messages were detected:

+ Downloading file://oldMachine/c$/MyClickOnceApp.application did not succeed.

+ Could not find a part of the path '\\oldMachine\c$\MyClickOnceApp.application'.

我新機器,我得到另一個錯誤:

Manifest XML signature is not valid.

+ The digital signature of the object did not verify.

我使用MageUI.exe,修改的部署URL嘗試,但它要求的證書,這是我所沒有的。

我在做什麼錯,我如何成功移動已發佈的ClickOnce軟件包?

回答

10

我找到了一個解決方案:

首先,利用MageUI,我改變了「開始位置」下的「部署選項」。在保存時,它促使我用我在那裏創建的一個密鑰簽名。然後我運行了setup.exe文件,它的工作沒有失敗。

在檢查哪些文件發生了變化後,我意識到它只是一個文件:應用程序清單文件(myAppName.application)。該文件中唯一改變的是在部署提供簽名(這是我在MageUI改變)。

一旦我意識到如何做到這一點,我使用了SDK附帶的名爲Mage.exe的MageUI命令行版本。

下面是批處理文件,我創建做這一切的命令行:

REM Set the enviroment
call "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"

REM Update the deployment provider URL
mage -Update %1.application -pu %2

REM Sign the manifest with our key
mage -Sign %1.application -CertFile C:\AppKey.pfx -Password myPw

我現在可以使用這個在快速簡便的方法對我的所有發佈的應用程序運行。我希望這有幫助。

1

我相信你有證書。您需要一個來創建ClickOnce部署。 Visual Studio可能爲你自動創建了一個自簽名的文件。我對這個過程並不是很熟悉,希望有更明確的答案的人會參與其中。另外,你是否嘗試過使用MageUI工具,或許它會更明顯地需要使用GUI來做什麼。

3

我希望有做到以下幾點:

  • 複製當前文件夾的內容到新的位置
  • 對於每一個應用程序: -
    • 更改「的安裝文件夾」到新的位置
    • 作爲新版本發佈
    • 將「發佈文件夾」更改爲新位置
    • 發佈爲新版本

新設置運行在新的文件夾應該工作和現有的更新應該在正確的地方去尋找。

這一切是未經測試,但我敢肯定,這就是我以前一樣...

編輯:

很明顯,你必須運行這些並行一定量的時間,但因爲它是一個內部應用程序,當您最終切換到新位置時會發生最糟糕的情況,那就是您必須通知用戶新位置以獲取「固定」應用程序

+0

這可以工作,但我發現它更明確地更改「更新路徑」,然後發佈文件夾。 – bouvard 2008-10-27 15:28:29

8

不要進入很詳細,這應該讓你去。

出於安全原因,ClickOnce清單必須使用證書進行簽名。您可以購買代碼簽名證書或生成一個測試代碼。測試證書的主要缺點是您的應用程序發佈者將顯示爲「未知」而不是您公司的名稱。

在Visual Studio中,打開項目的屬性並轉到「簽名」選項卡,選擇「簽署ClickOnce清單」和「創建測試證書」。接下來,點擊「更多詳細信息」打開一個對話框,然後點擊「安裝證書」。這將通過嚮導運行,以便在商店中獲得測試證書。確保你把它放在「個人」商店。

現在您可以使用MageUI來編輯您的清單。任何時候你保存它都會提示你簽署清單,但你現在應該能夠選擇你剛存儲的測試證書。在編輯/簽署部署清單之前,始終編輯/簽署應用程序清單。這是令人困惑的,因爲應用程序清單不是擴展名爲.application的文件。

祝你好運!