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

67 lines
2.1 KiB
Markdown

# 設定檔位置說明
## 問題背景
報到系統客戶端安裝在 `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 時,變更會自動保存到用戶的設定檔:
```csharp
// 設定新的 API 基礎 URL
bool success = ConfigService.Instance.SetApiBaseUrl("http://new-api-server:8080");
// 讀取目前的 API 基礎 URL
string currentUrl = ConfigService.Instance.GetApiBaseUrl();
```
## 安裝程式更新
在安裝自訂動作中(`ConfigInstaller.cs`),如有必要可以:
- 在首次安裝時預先初始化用戶設定檔
- 或保持現有邏輯,讓應用程式在首次運行時自動初始化
當前實現選擇由應用程式在首次運行時自動初始化,無需修改安裝程式邏輯。