Walkthrough: Manually deploy a ClickOnce application (逐步解說:手動部署 ClickOnce 應用程式)

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

注意

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

必要條件

本逐步解說在建置部署之前,您需要選擇的一些必要條件和選項。

  • 安裝 Mage.exe 和 [MageUI.exe]

    Mage.exeMageUI.exe 是 Windows 軟體開發套件 (SDK) 的一部分。 您必須安裝 Windows SDK 或 Visual Studio 隨附的 Windows SDK 版本。 如需詳細資訊,請參閱 MSDN 上的 Windows SDK

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

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

  • 判斷部署的散發方式。

    散發選項包括:Web、檔案共用或持續部署。 如需詳細資訊,請參閱 ClickOnce Security and Deployment

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

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

  • 取得 Authenticode 憑證。

    您應該使用 Authenticode 憑證簽署部署。 您可以使用 Visual Studio、MageUI.exeMakeCert.exePvk2Pfx.exe 工具產生測試憑證,也可以從憑證授權單位 (CA) 取得憑證。 如果您選擇使用信任的應用程式部署,您也必須在所有用戶端電腦上執行憑證的單次安裝。 如需詳細資訊,請參閱 Trusted Application Deployment Overview

    注意

    您也可以使用可從憑證授權單位取得的 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 開始,此 SDK 會隨 Visual Studio 和 Windows SDK 一起發佈,mage.exe 會使用 CNG 以及 Authenticode 憑證簽署資訊清單。 使用與 Authenticode 憑證相同的命令列參數。

  7. 變更為部署目錄的根目錄。

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

    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 部署至 AppToDeploy 目錄中的 http://webserver01/,則完整的 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. 選取 [描述] 索引標籤,然後指定 [發行者] 和 [產品] 的值。 (當您的應用程式在用戶端電腦上安裝以供離線使用時,[產品] 是 Windows 開始功能表上提供給應用程式的名稱。)

  19. 選取 [部署選項] 索引標籤,然後在 [開始位置] 文字方塊中,指定網頁伺服器或共用上應用程式資訊清單的位置。 例如,\\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 部署至 AppToDeploy 目錄中的 http://webserver01/,則完整的 URL 路徑會是 http://webserver01/AppToDeploy/AppToDeploy.application

下一步

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