如果您無法使用 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.exe
和 MageUI.exe。Mage.exe
和MageUI.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.exe
和Pvk2Pfx.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 部署應用程式
建立將儲存 ClickOnce 部署檔案的目錄。
在您剛才建立的部署目錄中,建立版本子目錄。 如果這是您第一次部署應用程式,請將版本子目錄命名為 1.0.0.0。
備註
您的部署版本可以與應用程式版本不同。
將所有應用程式檔複製到版本子目錄,包括可執行檔、元件、資源和數據檔。 如有必要,您可以建立包含其他檔案的其他子目錄。
開啟 Windows SDK 或 Visual Studio 命令提示字元,並變更為版本子目錄。
建立應用程式指令清單,並呼叫 Mage.exe。 下列語句會建立應用程式指令清單,以供編譯以在 Intel x86 處理器上執行的程式代碼。
mage -New Application -Processor x86 -ToFile AppToDeploy.exe.manifest -name "My App" -Version 1.0.0.0 -FromDirectory .
備註
請務必在 選項後面
-FromDirectory
包含點 (.),指出目前目錄。 如果您沒有加入點,您必須指定應用程式檔案的路徑。使用您的 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 憑證相同的命令行參數。切換到部署目錄的根目錄。
透過呼叫
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
使用您的 Authenticode 或 CNG 憑證簽署部署指令清單。
mage -Sign AppToDeploy.application -CertFile mycert.pfx -Password passwd
將部署目錄中的所有檔案複製到部署目的地或媒體。 這可能是網站或 FTP 網站、檔案共用或 CD-ROM 上的資料夾。
為使用者提供安裝應用程式所需的 URL、UNC 或實體媒體。 如果您提供 URL 或 UNC,您必須為使用者提供部署指令清單的完整路徑。 例如,如果 AppToDeploy 部署至
http://webserver01/
AppToDeploy 目錄中,則完整的 URL 路徑會是http://webserver01/AppToDeploy/AppToDeploy.application
。
使用 MageUI.exe 圖形化工具部署應用程式
建立將儲存 ClickOnce 部署檔案的目錄。
在您剛才建立的部署目錄中,建立版本子目錄。 如果這是您第一次部署應用程式,請將版本子目錄命名為 1.0.0.0。
備註
部署的版本可能與應用程式版本不同。
將所有應用程式檔複製到版本子目錄,包括可執行檔、元件、資源和數據檔。 如有必要,您可以建立包含其他檔案的其他子目錄。
啟動
MageUI.exe
圖形化工具。MageUI.exe
從功能表中選取 [ 檔案]、[ 新增]、[應用程式指令清單],以建立新的 應用程式指令清單 。
在 [預設 名稱] 索引標籤上,輸入此部署的名稱和版本號碼。 也指定應用程式建置的 處理器 ,例如 x86。
選取 [檔案] 索引標籤,然後選取 [應用程式目錄] 文字框旁邊的省略號 (...) 按鈕。 [ 瀏覽資料夾] 對話框隨即出現。
選取包含應用程式檔的版本子目錄,然後選取 [ 確定]。
如果您要從 Internet Information Services (IIS) 部署,請選取 [在填入時將 .deploy 副檔名新增至尚未擁有該副檔名的任何檔案] 複選框。
移至 [ 填入] 按鈕,將所有應用程式檔案新增至檔案清單。 如果您的應用程式包含多個可執行檔,請從 [檔案類型] 下拉式清單中選取 [進入點],將此部署的主要可執行檔案標示為啟動應用程式。 (如果您的應用程式只包含一個可執行檔,
MageUI.exe
將會為您標示它。選取需要許可權索引標籤,然後選取您需要應用程式聲明的信任層級。 默認值為 FullTrust,適用於大部分的應用程式。
從功能表中選取[檔案],[另存新檔]。 [簽署選項] 對話框隨即出現,提示您簽署應用程式指令清單。
如果您的憑證儲存為文件系統上的檔案,請使用 [ 使用憑證檔案簽署 ] 選項,並使用省略號 (...) 按鈕從文件系統選取憑證。 然後輸入您的憑證密碼。
-或-
如果您的憑證保留在可從計算機存取的證書存儲中,請選取 [ 使用預存憑證 簽署] 選項,然後從提供的清單中選取憑證。
選取 [確定 ] 以簽署您的應用程式指令清單。 [另存新檔] 對話方塊隨即出現。
在 [ 另存新檔 ] 對話框中,指定版本目錄,然後選取 [ 儲存]。
從功能表中選取 [ 檔案]、[ 新增]、[ 部署指令清單 ],以建立您的部署指令清單。
在 [ 名稱] 索引標籤上,指定此部署的名稱和版本號碼(在此範例中為 1.0.0.0 )。 也指定應用程式建置的 處理器 ,例如 x86。
選取 [ 描述] 索引標籤,然後指定 Publisher 和 Product 的值。 (Product 是當您的應用程式安裝在用戶端電腦上用於離線使用時,在 Windows 開始功能表上顯示的名稱。)
選取 [ 部署選項] 索引標籤,然後在 [ 開始位置] 文本框中,指定 Web 伺服器或共用上應用程式指令清單的位置。 例如, \\myServer\myShare\AppToDeploy.application。
如果您在上一個步驟中新增副檔名
.deploy
,請在這裡選取 使用 .deploy 副檔名。選取 [ 更新選項] 索引標籤,並指定您希望此應用程式更新的頻率。 如果您的應用程式使用 UpdateCheckInfo 來檢查更新本身,請清除 [此應用程式應該檢查更新 ] 複選框。
選取 應用程式參考 索引標籤,然後移至 選取清單 按鈕。 隨即出現開啟的對話框。
選取您稍早建立的應用程式指令清單,然後選取 [ 開啟]。
從功能表中選取[檔案],[另存新檔]。 [ 簽署選項 ] 對話框隨即出現,提示您簽署部署指令清單。
如果您的憑證儲存為文件系統上的檔案,請使用 [ 使用憑證檔案簽署 ] 選項,並使用省略號 (...) 按鈕從文件系統選取憑證。 然後輸入您的憑證密碼。
-或-
如果您的憑證保留在可從計算機存取的證書存儲中,請選取 [ 使用預存憑證 簽署] 選項,然後從提供的清單中選取憑證。
移至 [確定 ] 以簽署您的部署指令清單。 [另存新檔] 對話方塊隨即出現。
在 [ 另存新檔 ] 對話框中,將一個目錄移至部署的根目錄,然後選取 [ 儲存]。
將部署目錄中的所有檔案複製到部署目的地或媒體。 這可能是網站或 FTP 網站、檔案共用或 CD-ROM 上的資料夾。
為使用者提供安裝應用程式所需的 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,您可以開啟部署指令清單、選取 [ 應用程式參考 ] 索引標籤、移至 [ 選取指令 清單] 按鈕,然後選取更新的應用程式指令清單。