Files
thinkyu/報到系統客戶端/CONFIG_PATH_GUIDE.md
T
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

2.1 KiB

設定檔位置說明

問題背景

報到系統客戶端安裝在 Program Files 資料夾時,由於 Windows 安全限制,應用程式在執行期間無法修改 Program Files 目錄下的檔案(包括 App.config)。

解決方案

設定檔已改為存儲在用戶的 AppData 資料夾中,具有完整的寫入權限。

設定檔位置

用戶設定檔(可寫入)

%LOCALAPPDATA%\報到系統客戶端\AppSettings.config

展開後的實際路徑示例:

C:\Users\[用戶名]\AppData\Local\報到系統客戶端\AppSettings.config

預設設定檔(唯讀)

[應用程式安裝目錄]\報到系統客戶端.exe.config

如何運作

  1. 首次運行

    • 應用程式檢查用戶 AppData 資料夾中是否存在 AppSettings.config
    • 如果不存在,系統會自動建立並初始化預設設定
  2. 讀取設定

    • 優先從用戶 AppData 資料夾中的 AppSettings.config 讀取
    • 如果失敗,回退到 App.config 中的預設值
  3. 寫入設定

    • 所有設定變更都會保存到用戶 AppData 資料夾中的 AppSettings.config
    • 不會修改 Program Files 下的原始檔案

優勢

✓ 解決 Program Files 權限問題
✓ 使用標準的 Windows AppData 位置
✓ 每個用戶可擁有獨立的設定
✓ 支持應用程式自動更新
✓ 卸載應用程式時設定保留(用戶可選擇刪除)

API 基礎 URL 更新

使用 ConfigService.SetApiBaseUrl() 方法更新 API 基礎 URL 時,變更會自動保存到用戶的設定檔:

// 設定新的 API 基礎 URL
bool success = ConfigService.Instance.SetApiBaseUrl("http://new-api-server:8080");

// 讀取目前的 API 基礎 URL
string currentUrl = ConfigService.Instance.GetApiBaseUrl();

安裝程式更新

在安裝自訂動作中(ConfigInstaller.cs),如有必要可以:

  • 在首次安裝時預先初始化用戶設定檔
  • 或保持現有邏輯,讓應用程式在首次運行時自動初始化

當前實現選擇由應用程式在首次運行時自動初始化,無需修改安裝程式邏輯。