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 安全性是以憑證、程式碼存取安全性原則和 ClickOnce 信任提示為基礎。

憑證

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

程式碼存取安全性

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

ClickOnce 信任提示

如果應用程式要求超過區域允許的權限,系統就會提示終端使用者做出信任決策。 終端使用者可以決定是否信任 ClickOnce 應用程式,例如 Windows Forms 應用程式、Windows Presentation Foundation 應用程式、主控台應用程式、XAML 瀏覽器應用程式和 Office 方案來執行。 如需詳細資訊,請參閱 HOW TO:設定 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。 如需詳細資訊,請參閱適用於 .NET 的 ClickOnce

部署 ClickOnce 應用程式

部署資訊清單在建立之後會複製到部署位置。 這可能是 Web 伺服器、網路檔案共用或 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+,這些設定位於發行設定檔中。
專案設計工具、發行頁 產生和編輯 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 版本
Internet Explorer 2.0、3.0、3.5、3.5 SP1、4
Firefox 2.0 SP1、3.5 SP1、4
Chrome 3.5
Microsoft Edge 3.5