Share via


ClickOnce 和應用程式設定

Windows Form 的應用程式設定可讓您輕鬆地在用戶端上建立、儲存及維護自訂應用程式和使用者喜好設定。 以下文件描述應用程式設定檔案在 ClickOnce 應用程式中的運作方式,以及當使用者升級至下一個版本時,ClickOnce 如何移轉設定。

下列資訊僅適用於預設應用程式設定提供者:LocalFileSettingsProvider 類別。 如果您提供自訂提供者,該提供者會決定其儲存資料的方式,以及如何在版本之間升級其設定。 如需應用程式設定提供者的詳細資訊,請參閱應用程式設定架構 (部分機器翻譯)。

應用程式設定檔案

應用程式設定會使用兩個檔案:<app>.exe.configuser.config,其中 app 是 Windows Forms 應用程式的名稱。 user.config 會在應用程式第一次儲存使用者範圍設定時,於用戶端上建立。 相反地,<app>.exe.config 會在部署之前存在 (如果您定義設定的預設值)。 Visual Studio 會在您使用其 Publish 命令時,自動包含此檔案。 如果您使用 Mage.exeMageUI.exe 建立 ClickOnce 應用程式,在您填入應用程式資訊清單時,必須確定此檔案已隨附於應用程式的其他檔案中。

注意

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

在未使用 ClickOnce 部署的 Windows Forms 應用程式中,應用程式的 <app>.exe.config 檔案會儲存在應用程式目錄中,而 user.config 檔案會儲存在使用者的 [文件與設定] 資料夾。 在 ClickOnce 應用程式中,<app>.exe.config 位於 ClickOnce 應用程式快取內的應用程式目錄中,而 user.config 則位於該應用程式的 ClickOnce 資料目錄中。

不論您是如何部署應用程式,應用程式設定可確保對 <app>.exe.config 的安全讀取存取權,以及對 user.config 的安全讀取/寫入存取權。

在 ClickOnce 應用程式中,應用程式設定所使用的設定檔大小會受限於 ClickOnce 快取的大小。 如需詳細資訊,請參閱 ClickOnce 快取概觀 (部分機器翻譯)。

.NET Core 與 .NET 5+

目前,要發佈的 .NET Core 組件必須以強式名稱金鑰檔案進行簽署。 如果不是,ApplicationSettingsBase.Upgrade 方法不會在新 ClickOnce 發佈之後正確複製設定。 您可以在 [組建 > 強式命名] 選項下,於 .NET Core 專案的屬性中具體指定強式名稱的使用。

版本升級

就像 ClickOnce 應用程式的每個版本都與其他所有版本隔離一樣,ClickOnce 應用程式的應用程式設定也會與其他版本的設定隔離。 當您的使用者升級至較新版本的應用程式時,應用程式設定會將最新 (最高編號) 版本的設定與更新版本提供的設定進行比較,並將這些設定合併至一組新的設定檔案中。

下表描述應用程式設定如何決定要複製的設定。

變更類型 升級動作
新增至 <app>.exe.config 的設定 新的設定會合併至目前版本的 <app>.exe.config
<app>.exe.config 移除設定 從目前版本的 <app>.exe.config 中移除舊設定
設定的預設已變更;本機設定仍設為 user.config 中的原始預設 此設定會合併至目前版本的 user.config 中,並使用新的預設來作為值
設定的預設已變更;設定設為 user.config 中的非預設 此設定會合併至目前版本的 user.config 中,並使用保留的非預設值

如果您已建立自己的應用程式設定包裝函式類別,並且想要自訂更新邏輯,可以覆寫 Upgrade 方法。

ClickOnce 與漫遊設定

ClickOnce 無法與漫遊設定搭配使用,漫遊設定可讓您的設定檔案追隨您在網路的各電腦上使用。 如果您需要漫遊設定,必須實作可在網路上儲存設定的應用程式設定提供者,或開發自己的自訂設定類別,以將設定儲存在遠端電腦上。 如需設定提供者的詳細資訊,請參閱應用程式設定架構 (部分機器翻譯)。