2.1 KiB
2.1 KiB
設定檔位置說明
問題背景
報到系統客戶端安裝在 Program Files 資料夾時,由於 Windows 安全限制,應用程式在執行期間無法修改 Program Files 目錄下的檔案(包括 App.config)。
解決方案
設定檔已改為存儲在用戶的 AppData 資料夾中,具有完整的寫入權限。
設定檔位置
用戶設定檔(可寫入)
%LOCALAPPDATA%\報到系統客戶端\AppSettings.config
展開後的實際路徑示例:
C:\Users\[用戶名]\AppData\Local\報到系統客戶端\AppSettings.config
預設設定檔(唯讀)
[應用程式安裝目錄]\報到系統客戶端.exe.config
如何運作
-
首次運行
- 應用程式檢查用戶 AppData 資料夾中是否存在
AppSettings.config - 如果不存在,系統會自動建立並初始化預設設定
- 應用程式檢查用戶 AppData 資料夾中是否存在
-
讀取設定
- 優先從用戶 AppData 資料夾中的
AppSettings.config讀取 - 如果失敗,回退到
App.config中的預設值
- 優先從用戶 AppData 資料夾中的
-
寫入設定
- 所有設定變更都會保存到用戶 AppData 資料夾中的
AppSettings.config - 不會修改
Program Files下的原始檔案
- 所有設定變更都會保存到用戶 AppData 資料夾中的
優勢
✓ 解決 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),如有必要可以:
- 在首次安裝時預先初始化用戶設定檔
- 或保持現有邏輯,讓應用程式在首次運行時自動初始化
當前實現選擇由應用程式在首次運行時自動初始化,無需修改安裝程式邏輯。