共用方式為


ClickOnce 部署和安全性

ClickOnce 是一種部署技術,可讓您建立可自行更新的 Windows 應用程式,這些程式可以在只需最少用戶互動的情況下安裝和執行。 如果您已使用 Visual Basic 和 Visual C# 開發專案,Visual Studio 提供發佈和更新使用 ClickOnce 技術部署的應用程式的完整支援。 如需部署 Visual C++ 應用程式的相關信息,請參閱 Visual C++ 應用程式的 ClickOnce 部署

ClickOnce 部署克服了部署中的三個主要問題:

  • 更新應用程式的困難。 使用Microsoft Windows Installer 部署時,每當應用程式更新時,使用者就可以安裝更新、msp 檔案,並將它套用至已安裝的產品;使用 ClickOnce 部署,您可以自動提供更新。 只有已變更的應用程式部分會下載,然後從新的並存資料夾重新安裝完整更新的應用程式。

  • 對使用者計算機的影響。 使用 Windows Installer 部署時,應用程式通常會依賴共用元件,並有可能發生版本設定衝突:使用 ClickOnce 部署,每個應用程式都是獨立的,而且無法干擾其他應用程式。

  • 安全性許可權。 Windows Installer 部署需要系統管理許可權,且只允許有限的用戶安裝;ClickOnce 部署可讓非系統管理使用者只安裝並授與應用程式所需的程式代碼存取安全性許可權。

    在過去,這些問題有時會導致開發人員決定建立 Web 應用程式,而不是以 Windows 為基礎的應用程式,犧牲豐富的使用者介面,以方便安裝。 藉由使用 ClickOnce 部署的應用程式,您可以擁有這兩種技術的最佳功能。

什麼是 ClickOnce 應用程式?

ClickOnce 應用程式是任何使用 ClickOnce 技術發佈的 Windows Presentation Foundation(.xbap)、Windows Forms(.exe)、控制台應用程式(.exe)或 Office 解決方案(.dll)。 您可以透過三種不同的方式發佈 ClickOnce 應用程式:從網頁、從網路檔案共用,或從 CD-ROM 等舊版媒體發佈。 ClickOnce 應用程式可以安裝在終端用戶的電腦上,即使計算機離線,也可以在本機執行,也可以以僅限在線模式執行,而不需要在終端用戶的計算機上永久安裝任何專案。 如需詳細資訊,請參閱 選擇 ClickOnce 部署策略

ClickOnce 應用程式可以自行更新,它們可以在有新版本可用時檢查並自動取代任何更新的檔案。 開發人員可以指定更新行為;網路管理員也可以控制更新策略,例如,將更新標示為必要。 用戶或系統管理員也可以將更新復原回舊版。 如需詳細資訊,請參閱 選擇 ClickOnce 更新策略

由於 ClickOnce 應用程式是隔離的,因此安裝或執行 ClickOnce 應用程式無法中斷現有的應用程式。 ClickOnce 應用程式是自包含的,安裝到每位使用者、每個應用程式的快取中,並從中安全地執行。 ClickOnce 應用程式會在因特網或內部網路安全性區域中執行。 如有必要,應用程式可以要求提高的安全性許可權。 如需詳細資訊,請參閱 保護 ClickOnce 應用程式

ClickOnce 安全性的運作方式

核心 ClickOnce 安全性是以憑證、程式代碼存取安全策略和 ClickOnce 信任提示為基礎。

證書

Authenticode 憑證可用來驗證應用程序發行者的真實性。 ClickOnce 藉由使用 Authenticode 進行應用程式部署,有助於防止有害程式將自己描繪成來自已建立且可信任來源的合法程式。 或者,憑證也可以用來簽署應用程式和部署指令清單,以證明檔案尚未遭到竄改。 如需詳細資訊,請參閱 ClickOnce 和 Authenticode。 憑證也可以用來設定用戶端計算機,以擁有受信任的發行者清單。 如果應用程式來自受信任的發行者,則不需要任何用戶互動即可安裝該應用程式。 如需詳細資訊,請參閱 信任的應用程式部署概觀。

代碼存取安全性

程式代碼存取安全性有助於限制程式代碼對受保護資源的存取。 在大部分情況下,您可以選擇因特網或近端內部網路區域來限制許可權。 使用 [項目設計工具] 中的 [安全性] 頁面,要求應用程式適用的區域。 您也可以對具有受限許可權的應用程式進行偵錯,以模擬用戶體驗。 如需詳細資訊,請參閱 ClickOnce 應用程式的程式代碼存取安全性

注意

在適用於 .NET Core 和 .NET 5 或更新版本的 ClickOnce 中,不支援程式代碼存取安全性。 在 .NET Framework 中,使用程式代碼存取安全性不是最佳做法,不建議使用。

ClickOnce 信任提示

如果應用程式要求的許可權超過區域允許的許可權,系統就會提示終端使用者做出信任決策。 終端使用者可以決定是否信任 ClickOnce 應用程式,例如 Windows Forms 應用程式、Windows Presentation Foundation 應用程式、控制台應用程式、XAML 瀏覽器應用程式和 Office 解決方案來執行。 如需詳細資訊,請參閱 如何:設定 ClickOnce 信任提示行為

ClickOnce 部署的運作方式

核心 ClickOnce 部署架構是以兩個 XML 指令清單檔案為基礎:應用程式指令清單和部署指令清單。 這些檔案可用來描述 ClickOnce 應用程式的安裝位置、更新方式,以及更新時間。

發佈 ClickOnce 應用程式

應用程式指令清單描述應用程式本身。 這包括元件、構成應用程式的相依性和檔案、必要的許可權,以及更新可供使用的位置。 應用程式開發人員使用 Visual Studio 中的 [發佈精靈] 來撰寫應用程式指令清單(適用於 .NET Core 和 .NET 5+的發佈工具)或 Windows 軟體開發工具包 (SDK) 中的指令清單產生和編輯工具 (Mage.exe)。 如需詳細資訊,請參閱:

部署指令清單描述如何部署應用程式。 這包括應用程式指令清單的位置,以及客戶端應該執行的應用程式版本。

注意

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

部署 ClickOnce 應用程式

建立之後,部署指令清單會複製到部署位置。 這可以是網頁伺服器、網路檔案共享或舊版媒體,例如CD。 應用程式指令清單和所有應用程式檔也會複製到部署指令清單中指定的部署位置。 這可以和部署位置相同,也可以是不同的位置。 在 Visual Studio 中使用 [發佈精靈 ] 時,會自動執行複製作業。

安裝 ClickOnce 應用程式

部署至部署位置之後,使用者可以按下代表網頁或資料夾中部署指令清單檔案的圖示來下載並安裝應用程式。 在大部分情況下,使用者會看到一個簡單的對話框,要求使用者確認安裝,之後安裝會繼續進行,而且應用程式會啟動,而不需要額外的介入。 如果應用程式需要提高的許可權,或者如果應用程式不是由受信任的憑證簽署,對話方塊也會要求使用者授與許可權,然後才能繼續安裝。 雖然 ClickOnce 安裝是針對每個使用者的,但如果有需要系統管理員權限的必要條件,可能需要權限提升。 如需提高許可權的詳細資訊,請參閱 保護 ClickOnce 應用程式

憑證可以在計算機或企業層級受到信任,因此使用受信任憑證簽署的 ClickOnce 應用程式可以無訊息方式安裝。 如需受信任憑證的詳細資訊,請參閱 信任的應用程式部署概觀

應用程式可以新增至使用者的 [開始] 功能表,以及 [控制面板] 中的 [新增或移除程式] 群組。 不同於其他部署技術,不會將任何專案新增至 Program Files 資料夾或登錄,而且不需要安裝任何系統管理許可權

注意

您也可以防止應用程式新增至 [ 開始 ] 功能表和 [新增或移除程式 ] 群組,實際上讓它的行為就像 Web 應用程式一樣。 如需詳細資訊,請參閱 選擇 ClickOnce 部署策略

更新 ClickOnce 應用程式

當應用程式開發人員建立應用程式的更新版本時,它們會產生新的應用程式指令清單,並將檔案複製到部署位置,通常是原始應用程式部署資料夾的同層級資料夾。 系統管理員會更新部署指令清單,以指向新版應用程式的位置。

注意

Visual Studio 中的 [發佈精靈 ] 可用來執行這些步驟。 針對 .NET Core 和 .NET 5+,發佈工具會提供這些步驟。

除了部署位置之外,部署指令清單也包含更新位置(網頁或網路檔案共用),其中應用程式會檢查更新的版本。 ClickOnce Publish 屬性可用來指定應用程式檢查更新的時機和頻率。 更新行為可以在部署指令清單中指定,也可以透過 ClickOnce API 在應用程式的使用者介面中顯示為用戶選擇。 此外,可以使用 Publish 屬性來強制更新或回復至舊版。 如需詳細資訊,請參閱 選擇 ClickOnce 更新策略

第三方安裝程式

您可以自定義 ClickOnce 安裝程式,以安裝第三方元件以及您的應用程式。 您必須擁有可轉散發套件(.exe 或 .msi 檔案),並使用語言中性產品指令清單和語言特定的套件指令清單來描述套件。 如需詳細資訊,請參閱 建立啟動載入器套件

ClickOnce 工具

下表顯示可用來產生、編輯、簽署及重新簽署應用程式和部署指令清單的工具。 針對 .NET Core 和 .NET 5+,會使用發佈配置檔來設定與 MSBuild 屬性類似的選項。

工具 描述
安全性頁面、項目設計工具 簽署應用程式和部署指令清單。 針對 .NET Core 和 .NET 5+,這些設定位於發佈配置檔中。
指定 ClickOnce 發佈屬性 產生和編輯 Visual Basic 和 Visual C# 應用程式的應用程式和部署指令清單。 針對 .NET Core 和 .NET 5+,這些設定位於發佈配置檔中。
Mage.exe (清單生成及編輯工具) 產生 Visual Basic、Visual C# 和 Visual C++ 應用程式的應用程式和部署指令清單。

簽署並重新簽署應用程式和部署指令清單。

可以從批次腳本和命令提示字元執行。
dotnetmage.exe (清單產生和編輯工具) 為 .NET 5+ C# 和 Visual Basic 應用程式產生應用程式和部署指令清單。 使用方式相當於 Mage.exe

簽署並重新簽署應用程式和部署指令清單。

可以從批次腳本和命令提示字元執行。
MageUI.exe (指令清單產生和編輯工具,圖形化用戶端) 產生和編輯應用程式和部署指令清單。

簽署並重新簽署應用程式和部署指令清單。
GenerateApplicationManifest 任務 產生應用程式指令清單。

可以從 MSBuild 執行。 如需詳細資訊,請參閱 MSBuild 參考
GenerateDeploymentManifest 任務 產生部署指令清單。

可以從 MSBuild 執行。 如需詳細資訊,請參閱 MSBuild 參考
SignFile 工作 簽署應用程式和部署指令清單。

可以從 MSBuild 執行。 如需詳細資訊,請參閱 MSBuild 參考
Microsoft.Build.Tasks.Deployment.ManifestUtilities 開發您自己的應用程式以產生應用程式和部署指令清單。

下表顯示在這些瀏覽器中支援 ClickOnce 應用程式所需的 .NET Framework 版本。

瀏覽器 .NET Framework 版本
火狐瀏覽器 2.0 SP1、3.5 SP1、4
3.5
Microsoft Edge 3.5