chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# 設定檔位置說明
|
||||
|
||||
## 問題背景
|
||||
報到系統客戶端安裝在 `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`),如有必要可以:
|
||||
- 在首次安裝時預先初始化用戶設定檔
|
||||
- 或保持現有邏輯,讓應用程式在首次運行時自動初始化
|
||||
|
||||
當前實現選擇由應用程式在首次運行時自動初始化,無需修改安裝程式邏輯。
|
||||
Reference in New Issue
Block a user