共用方式為


逐步解說:手動部署 ClickOnce 應用程式

如果您無法使用 Visual Studio 來部署 ClickOnce 應用程式,或需要使用進階部署功能,例如信任的應用程式部署,您應該使用 Mage.exe 命令行工具來建立 ClickOnce 指令清單。 本逐步解說說明如何使用命令行版本 (Mage.exe) 或指令清單產生和編輯工具的圖形化版本 (MageUI.exe) 來建立 ClickOnce 部署。

備註

在適用於 .NET Core 3.1 和 .NET 5 或更新版本的 ClickOnce 中,使用 dotnet-mage.exe ,而不是 Mage.exe。 如需詳細資訊,請參閱 ClickOnce for .NET

先決條件

在開始建置部署方案之前,本指南介紹若干必要條件和可供選擇的選項。

  • 安裝 Mage.exeMageUI.exe

    Mage.exeMageUI.exe 是 Windows 軟體開發工具套件 (SDK) 的一部分。 您必須安裝 Windows SDK 或 Visual Studio 隨附的 Windows SDK 版本。

  • 提供要部署的應用程式。

    本逐步解說假設您已準備好部署 Windows 應用程式。 此應用程式將稱為AppToDeploy。

  • 決定部署的分配方式。

    散發選項包括:Web、檔案共用或CD。 如需詳細資訊,請參閱 ClickOnce 安全性和部署

  • 判斷應用程式是否需要更高的信任層級。

    如果您的應用程式需要完全信任,例如要對用戶系統擁有完整存取權,您可以使用 -TrustLevel 的選項 Mage.exe 來設定此要求。 如果您想要定義應用程式的自訂許可權集合,您可以從另一個指令清單複製因特網或內部網路許可權區段、修改它以符合您的需求,並使用文本編輯器或 MageUI.exe將它新增至應用程式指令清單。 如需詳細資訊,請參閱 信任的應用程式部署概觀

  • 取得 Authenticode 憑證。

    您應該使用 Authenticode 憑證簽署部署。 您可以使用 Visual Studio、 MageUI.exe、 或 MakeCert.exePvk2Pfx.exe 工具來產生測試憑證,也可以從證書頒發機構單位 (CA) 取得憑證。 如果您選擇使用信任的應用程式部署,您也必須在所有用戶端電腦上執行憑證的一次性安裝。 如需詳細資訊,請參閱 信任的應用程式部署概觀

    備註

    您也可以使用從證書頒發機構取得的 CNG 憑證對您的部署進行簽署。

  • 請確定應用程式沒有具有UAC資訊的指令清單。

    您必須判斷應用程式是否包含具有用戶帳戶控制 (UAC) 資訊的指令清單,例如 <dependentAssembly> 元素。 若要檢查應用程式指令清單,您可以使用 Windows Sysinternals Sigcheck 公用程式。

    如果您的應用程式包含有 UAC 詳細資料的指令清單,您必須重新建置應用程式,並且移除 UAC 資訊。 針對 Visual Studio 中的 C# 專案,開啟專案屬性,然後選取 [應用程式] 索引標籤。在 [ 指令清單 ] 下拉式清單中,選取 [ 建立沒有指令清單的應用程式]。 針對 Visual Studio 中的 Visual Basic 專案,開啟專案屬性,選取 [應用程式] 索引標籤,然後按兩下 [ 檢視 UAC 設定]。 在開啟的清單檔案中,移除單一 <asmv1:assembly> 元素內的所有元素。

  • 判斷應用程式是否需要用戶端計算機的必要條件。

    從 Visual Studio 部署的 ClickOnce 應用程式可以包含一個必要條件安裝啟動載入器(setup.exe),作為部署的一部分。 本操作指南會建立 ClickOnce 部署所需的兩個清單檔案。 您可以使用 GenerateBootstrapper 指令來建立前置需求啟動載入器。

使用指令行工具 Mage.exe 部署應用程式

  1. 建立將儲存 ClickOnce 部署檔案的目錄。

  2. 在您剛才建立的部署目錄中,建立版本子目錄。 如果這是您第一次部署應用程式,請將版本子目錄命名為 1.0.0.0

    備註

    您的部署版本可以與應用程式版本不同。

  3. 將所有應用程式檔複製到版本子目錄,包括可執行檔、元件、資源和數據檔。 如有必要,您可以建立包含其他檔案的其他子目錄。

  4. 開啟 Windows SDK 或 Visual Studio 命令提示字元,並變更為版本子目錄。

  5. 建立應用程式指令清單,並呼叫 Mage.exe。 下列語句會建立應用程式指令清單,以供編譯以在 Intel x86 處理器上執行的程式代碼。

    mage -New Application -Processor x86 -ToFile AppToDeploy.exe.manifest -name "My App" -Version 1.0.0.0 -FromDirectory .
    

    備註

    請務必在 選項後面 -FromDirectory 包含點 (.),指出目前目錄。 如果您沒有加入點,您必須指定應用程式檔案的路徑。

  6. 使用您的 Authenticode 憑證簽署應用程式指令清單。 將 mycert.pfx 替換為憑證檔案的路徑。 以憑證檔案的密碼取代 passwd

    mage -Sign AppToDeploy.exe.manifest -CertFile mycert.pfx -Password passwd
    

    自 .NET Framework 4.6.2 SDK 開始(隨 Visual Studio 和 Windows SDK 一同發行),mage.exe 使用 CNG 以及 Authenticode 憑證對指令清單進行簽署。 使用與 Authenticode 憑證相同的命令行參數。

  7. 切換到部署目錄的根目錄。

  8. 透過呼叫 Mage.exe 產生部署指令清單。 根據預設, Mage.exe 會將 ClickOnce 部署標示為已安裝的應用程式,以便在線和離線執行。 若要只在用戶上線時才能使用應用程式,請使用 -Install 選項搭配 值 false。 如果您使用預設值,且使用者會從網站或檔案共用安裝您的應用程式,請確定選項的值 -ProviderUrl 會指向 Web 伺服器上或共用的應用程式指令清單位置。

    mage -New Deployment -Processor x86 -Install true -Publisher "My Co." -ProviderUrl "\\myServer\myShare\AppToDeploy.application" -AppManifest 1.0.0.0\AppToDeploy.exe.manifest -ToFile AppToDeploy.application
    
  9. 使用您的 Authenticode 或 CNG 憑證簽署部署指令清單。

    mage -Sign AppToDeploy.application -CertFile mycert.pfx -Password passwd
    
  10. 將部署目錄中的所有檔案複製到部署目的地或媒體。 這可能是網站或 FTP 網站、檔案共用或 CD-ROM 上的資料夾。

  11. 為使用者提供安裝應用程式所需的 URL、UNC 或實體媒體。 如果您提供 URL 或 UNC,您必須為使用者提供部署指令清單的完整路徑。 例如,如果 AppToDeploy 部署至 http://webserver01/ AppToDeploy 目錄中,則完整的 URL 路徑會是 http://webserver01/AppToDeploy/AppToDeploy.application

使用 MageUI.exe 圖形化工具部署應用程式

  1. 建立將儲存 ClickOnce 部署檔案的目錄。

  2. 在您剛才建立的部署目錄中,建立版本子目錄。 如果這是您第一次部署應用程式,請將版本子目錄命名為 1.0.0.0

    備註

    部署的版本可能與應用程式版本不同。

  3. 將所有應用程式檔複製到版本子目錄,包括可執行檔、元件、資源和數據檔。 如有必要,您可以建立包含其他檔案的其他子目錄。

  4. 啟動MageUI.exe圖形化工具。

    MageUI.exe
    
  5. 從功能表中選取 [ 檔案]、[ 新增]、[應用程式指令清單],以建立新的 應用程式指令清單

  6. 在 [預設 名稱] 索引標籤上,輸入此部署的名稱和版本號碼。 也指定應用程式建置的 處理器 ,例如 x86。

  7. 選取 [檔案] 索引標籤,然後選取 [應用程式目錄] 文字框旁邊的省略號 (...) 按鈕。 [ 瀏覽資料夾] 對話框隨即出現。

  8. 選取包含應用程式檔的版本子目錄,然後選取 [ 確定]。

  9. 如果您要從 Internet Information Services (IIS) 部署,請選取 [在填入時將 .deploy 副檔名新增至尚未擁有該副檔名的任何檔案] 複選框。

  10. 移至 [ 填入] 按鈕,將所有應用程式檔案新增至檔案清單。 如果您的應用程式包含多個可執行檔,請從 [檔案類型] 下拉式清單中選取 [進入點],將此部署的主要可執行檔案標示為啟動應用程式。 (如果您的應用程式只包含一個可執行檔, MageUI.exe 將會為您標示它。

  11. 選取需要許可權索引標籤,然後選取您需要應用程式聲明的信任層級。 默認值為 FullTrust,適用於大部分的應用程式。

  12. 從功能表中選取[檔案][另存新檔]。 [簽署選項] 對話框隨即出現,提示您簽署應用程式指令清單。

  13. 如果您的憑證儲存為文件系統上的檔案,請使用 [ 使用憑證檔案簽署 ] 選項,並使用省略號 (...) 按鈕從文件系統選取憑證。 然後輸入您的憑證密碼。

    -或-

    如果您的憑證保留在可從計算機存取的證書存儲中,請選取 [ 使用預存憑證 簽署] 選項,然後從提供的清單中選取憑證。

  14. 選取 [確定 ] 以簽署您的應用程式指令清單。 [另存新檔] 對話方塊隨即出現。

  15. 在 [ 另存新檔 ] 對話框中,指定版本目錄,然後選取 [ 儲存]。

  16. 從功能表中選取 [ 檔案]、[ 新增]、[ 部署指令清單 ],以建立您的部署指令清單。

  17. 在 [ 名稱] 索引標籤上,指定此部署的名稱和版本號碼(在此範例中為 1.0.0.0 )。 也指定應用程式建置的 處理器 ,例如 x86。

  18. 選取 [ 描述] 索引標籤,然後指定 PublisherProduct 的值。 (Product 是當您的應用程式安裝在用戶端電腦上用於離線使用時,在 Windows 開始功能表上顯示的名稱。)

  19. 選取 [ 部署選項] 索引標籤,然後在 [ 開始位置] 文本框中,指定 Web 伺服器或共用上應用程式指令清單的位置。 例如, \\myServer\myShare\AppToDeploy.application

  20. 如果您在上一個步驟中新增副檔名 .deploy,請在這裡選取 使用 .deploy 副檔名

  21. 選取 [ 更新選項] 索引標籤,並指定您希望此應用程式更新的頻率。 如果您的應用程式使用 UpdateCheckInfo 來檢查更新本身,請清除 [此應用程式應該檢查更新 ] 複選框。

  22. 選取 應用程式參考 索引標籤,然後移至 選取清單 按鈕。 隨即出現開啟的對話框。

  23. 選取您稍早建立的應用程式指令清單,然後選取 [ 開啟]。

  24. 從功能表中選取[檔案][另存新檔]。 [ 簽署選項 ] 對話框隨即出現,提示您簽署部署指令清單。

  25. 如果您的憑證儲存為文件系統上的檔案,請使用 [ 使用憑證檔案簽署 ] 選項,並使用省略號 (...) 按鈕從文件系統選取憑證。 然後輸入您的憑證密碼。

    -或-

    如果您的憑證保留在可從計算機存取的證書存儲中,請選取 [ 使用預存憑證 簽署] 選項,然後從提供的清單中選取憑證。

  26. 移至 [確定 ] 以簽署您的部署指令清單。 [另存新檔] 對話方塊隨即出現。

  27. 在 [ 另存新檔 ] 對話框中,將一個目錄移至部署的根目錄,然後選取 [ 儲存]。

  28. 將部署目錄中的所有檔案複製到部署目的地或媒體。 這可能是網站或 FTP 網站、檔案共用或 CD-ROM 上的資料夾。

  29. 為使用者提供安裝應用程式所需的 URL、UNC 或實體媒體。 如果您提供 URL 或 UNC,您必須為使用者提供部署指令清單的完整路徑。 例如,如果 AppToDeploy 部署至 http://webserver01/ AppToDeploy 目錄中,則完整的 URL 路徑會是 http://webserver01/AppToDeploy/AppToDeploy.application

後續步驟

當您需要部署新版本的應用程式時,請建立以新版本命名的新目錄,例如 1.0.0.1,並將新的應用程式檔複製到新的目錄。 接下來,您必須遵循先前的步驟來建立和簽署新的應用程式指令清單,並更新並簽署部署指令清單。 請在 Mage.exe-New 以及 -Update 這兩個呼叫中指定相同的較高版本,因為 ClickOnce 只會更新較高版本,且最左邊的整數最具有重要性。 如果您使用 MageUI.exe,您可以開啟部署指令清單、選取 [ 應用程式參考 ] 索引標籤、移至 [ 選取指令 清單] 按鈕,然後選取更新的應用程式指令清單。