Files
LanMountainDesktop/docs/TROUBLESHOOTING.md
lincube 9224c9a33a Harden OOBE, launch-source and elevation flow
Introduce a per-user OOBE state model and hardened launch/elevation handling. Adds OobeStateFile/OobeLaunchDecision models, OobeStateService (persisting %LOCALAPPDATA%/.launcher/state/oobe-state.json), and LauncherExecutionContext to capture elevation and user SID. CommandContext now normalizes/infers launch-source values (normal, postinstall, apply-update, plugin-install, debug-preview) and exposes maintenance checks. LauncherFlowCoordinator propagates richer launcher context details for diagnostics and suppresses OOBE for elevated/maintenance contexts. PluginInstallerService avoids requesting elevation for user-scoped installs and returns a clear error when installation target is outside the current user's LocalAppData. LauncherClient maps and surfaces result codes, UpdateWorkflow and installer invocation now pass explicit --launch-source values, and WelcomeOobeStep persists OOBE completion via the new service. Adds unit tests (CommandContext, OobeStateService, PluginInstallerService), docs/specs/checklists for the contract, and makes internals visible to tests.
2026-04-22 09:25:22 +08:00

682 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 鏁呴殰鎺掗櫎鎸囧崡
> LanMountainDesktop 甯歌<E794AF><EFBFBD><E99782>鍜岃В鍐虫柟妗<E69F9F>
## 鐩<>
- [鏋勫缓闂<EFBFBD><EFBFBD>](#鏋勫缓闂<E7BC93><E99782>)
- [杩愯<E69DA9>鏃堕棶棰榏(#杩愯<EFBFBD>鏃堕棶棰<EFBFBD>)
- [Launcher 闂<><E99782>](#launcher-闂<><E99782>)
- [鏇存柊闂<EFBFBD><EFBFBD>](#鏇存柊闂<E69F8A><E99782>)
- [鎻掍欢闂<EFBFBD><EFBFBD>](#鎻掍欢闂<E6ACA2><E99782>)
- [鎬ц兘闂<EFBFBD><EFBFBD>](#鎬ц兘闂<E58598><E99782>)
- [骞冲彴鐗瑰畾闂<EFBFBD><EFBFBD>](#骞冲彴鐗瑰畾闂<E795BE><E99782>)
## 鏋勫缓闂<E7BC93><E99782>
### 闂<><E99782>: 缂栬瘧閿欒<E996BF> - 鎵句笉鍒<E7AC89> Windows.Win32 鍛藉悕绌洪棿
**鐥囩姸:**
```
error CS0246: The type or namespace name 'Windows' could not be found
```
**鍘熷洜:** CsWin32 灏氭湭鐢熸垚 P/Invoke 浠g爜
**瑙喅鏂规<E98F82>:**
```bash
# 娓呯悊骞堕噸鏂版瀯寤<E780AF>
dotnet clean
dotnet restore
dotnet build
```
棣栨<EFBFBD>鏋勫缓鏃<EFBFBD> CsWin32 浼氳嚜鍔ㄧ敓鎴愪唬鐮<E594AC>,绗<>簩娆℃瀯寤哄簲璇ユ垚鍔熴€<E786B4>
---
### 闂<><E99782>: NuGet 鍖呰繕鍘熷け璐<E38191>
**鐥囩姸:**
```
error NU1102: Unable to find package 'XXX' with version (>= X.X.X)
```
**瑙喅鏂规<E98F82>:**
```bash
# 娓呯悊 NuGet 缂撳瓨
dotnet nuget locals all --clear
# 寮哄埗杩樺師
dotnet restore --force
# 閲嶆柊鏋勫缓
dotnet build
```
---
### 闂<><E99782>: 鏋勫缓鏃舵彁绀<E5BD81> SDK 鐗堟湰涓嶅尮閰<E5B0AE>
**鐥囩姸:**
```
error NETSDK1045: The current .NET SDK does not support targeting .NET 10.0
```
**瑙喅鏂规<E98F82>:**
```bash
# 妫€鏌ュ綋鍓<E7B68B> SDK 鐗堟湰
dotnet --version
# 搴旇<E690B4>鏄剧ず 10.x.x
# 濡傛灉涓嶆槸,璇峰畨瑁<E795A8> .NET 10 SDK
```
涓嬭浇鍦板潃: https://dotnet.microsoft.com/download/dotnet/10.0
---
### 闂<><E99782>: Avalonia 璁捐<E79281>鍣ㄦ棤娉曞姞杞<E5A79E>
**鐥囩姸:** XAML 棰勮<E6A3B0>鏄剧ず閿欒<E996BF>鎴栫┖鐧<E29496>
**瑙喅鏂规<E98F82>:**
1. 閲嶅惎 IDE
2. 娓呯悊骞堕噸鏂版瀯寤洪」鐩<E3808D>
3. 妫€鏌<E282AC> Avalonia 鐗堟湰鏄<E6B9B0>惁涓€鑷<E282AC>
```bash
dotnet clean
dotnet build
```
## 杩愯<E69DA9>鏃堕棶棰<E6A3B6>
### 闂<><E99782>: 搴旂敤鍚<E695A4>姩鍚庣珛鍗冲穿婧<E7A9BF>
**璇婃柇姝ラ<E5A79D>:**
1. **妫€鏌ユ棩蹇楁枃浠<E69E83>:**
```
Windows: %LOCALAPPDATA%\LanMountainDesktop\logs\
Linux: ~/.local/share/LanMountainDesktop/logs/
macOS: ~/Library/Application Support/LanMountainDesktop/logs/
```
2. **浠ヨ皟璇曟ā寮忚繍琛<E7B98D>:**
```bash
dotnet run --project LanMountainDesktop/LanMountainDesktop.csproj
```
3. **妫€鏌ヤ緷璧<E7B7B7>:**
```bash
# Windows: 纭<>繚瀹夎<E780B9><EFBFBD> .NET 10 Desktop Runtime
# Linux: 纭<>繚瀹夎<E780B9>浜嗗繀瑕佺殑鍥惧舰搴<E888B0>
```
---
### 闂<><E99782>: 绐楀彛鏃犳硶鏄剧ず鎴栭粦灞<E7B2A6>
**鍙<>兘鍘熷洜:**
- 鏄惧崱椹卞姩闂<E5A7A9><E99782>
- 娓叉煋妯″紡涓嶅吋瀹<E5908B>
**瑙喅鏂规<E98F82>:**
1. **鍒囨崲娓叉煋妯″紡** (缂栬緫閰嶇疆鏂囦欢):
```json
{
"Win32RenderingMode": 1 // 灏濊瘯涓嶅悓鐨勫€<E58BAB>: 0, 1, 2, 3, 4
}
```
2. **绂佺敤纭<E695A4>欢鍔犻€<E78ABB>:**
```bash
# 璁剧疆鐜<E79686><E9909C>鍙橀噺
set AVALONIA_RENDERING_MODE=Software
```
---
### 闂<><E99782>: 鍗曞疄渚嬮攣瀹氬け璐<E38191>
**鐥囩姸:** 鎻愮ず"搴旂敤宸插湪杩愯<E69DA9>"浣嗗疄闄呮病鏈<E79785>
**瑙喅鏂规<E98F82>:**
```bash
# Windows
taskkill /F /IM LanMountainDesktop.exe
# Linux/macOS
pkill -9 LanMountainDesktop
```
濡傛灉闂<EFBFBD><EFBFBD>鎸佺画,鍒犻櫎閿佹枃浠<E69E83>:
```
Windows: %TEMP%\LanMountainDesktop.lock
Linux: /tmp/LanMountainDesktop.lock
macOS: /tmp/LanMountainDesktop.lock
```
---
### 闂<><E99782>: 璁剧疆鏃犳硶淇濆瓨
**鐥囩姸:**<>敼璁剧疆鍚庨噸鍚<E599B8>簲鐢<E7B0B2>,璁剧疆鎭㈠<E98EAD>榛樿<E6A69B>
**璇婃柇:**
```bash
# 妫€鏌ヨ<E98F8C><EFBFBD>枃浠舵槸鍚﹀瓨鍦<E793A8>
# Windows: %LOCALAPPDATA%\LanMountainDesktop\settings.json
# Linux: ~/.local/share/LanMountainDesktop/settings.json
# macOS: ~/Library/Application Support/LanMountainDesktop/settings.json
```
**瑙喅鏂规<E98F82>:**
1. 妫€鏌ユ枃浠舵潈闄<E6BD88>
2. 妫€鏌ョ<E98F8C>鐩樼┖闂<E29496>
3. 鍒犻櫎鎹熷潖鐨勮<E990A8><EFBFBD>枃浠<E69E83> (浼氶噸缃<E599B8>负榛樿<E6A69B>)
## Launcher 闂<><E99782>
### 闂<><E99782>: Launcher 鎵句笉鍒颁富绋嬪簭
**鐥囩姸:**
```
鎵句笉鍒版湁鏁堢殑 LanMountainDesktop 鐗堟湰锛屽彲鑳芥槸瀹夎<E780B9>宸叉崯鍧忋€<E5BF8B>
```
**璇婃柇:**
```bash
# 妫€鏌ョ洰褰曠粨鏋<E7B2A8>
ls "C:\Program Files\LanMountainDesktop\"
# 搴旇<E690B4>鐪嬪埌:
# - LanMountainDesktop.Launcher.exe
# - app-{version}/
```
**瑙喅鏂规<E98F82>:**
1. **妫€鏌<E282AC> app-* 鐩<>綍鏄<E7B68D>惁瀛樺湪:**
```bash
ls "C:\Program Files\LanMountainDesktop\app-*"
```
2. **妫€鏌ヤ富绋嬪簭鏄<E7B0AD>惁瀛樺湪:**
```bash
ls "C:\Program Files\LanMountainDesktop\app-{version}\LanMountainDesktop.exe"
```
3. **閲嶆柊瀹夎<E780B9>搴旂敤**
---
### 闂<><E99782>: OOBE 绐楀彛閲嶅<E996B2>鍑虹幇
**鐥囩姸:** 姣忔<E5A7A3><EFBFBD>姩閮芥樉绀烘<E7BB80>杩庨〉闈<E38089>
**鍘熷洜:** OOBE 瀹屾垚鏍囪<E98F8D>鏂囦欢涓㈠け鎴栨棤娉曞垱寤<E59EB1>
**瑙喅鏂规<E98F82>:**
```bash
# 鎵嬪姩鍒涘缓鏍囪<E98F8D>鏂囦欢
# Windows:
New-Item -ItemType File -Path "$env:LOCALAPPDATA\LanMountainDesktop\.launcher\state\first_run_completed"
# Linux/macOS:
mkdir -p ~/.local/share/LanMountainDesktop/.launcher/state
touch ~/.local/share/LanMountainDesktop/.launcher/state/first_run_completed
```
---
### 闂<><E99782>: Splash 绐楀彛鍗綇涓嶆秷澶<E7A7B7>
**鐥囩姸:**<>姩鍔ㄧ敾涓€鐩存樉绀<E6A889>,涓荤▼搴忔棤娉曞惎鍔<E6838E>
**璇婃柇:**
```bash
# 妫€鏌ヤ富绋嬪簭鏄<E7B0AD>惁鍚<E68381>
# Windows:
tasklist | findstr LanMountainDesktop
# Linux/macOS:
ps aux | grep LanMountainDesktop
```
**瑙喅鏂规<E98F82>:**
1. 寮哄埗鍏抽棴 Launcher
2. 鐩存帴杩愯<E69DA9>涓荤▼搴忔祴璇<E7A5B4>:
```bash
"C:\Program Files\LanMountainDesktop\app-{version}\LanMountainDesktop.exe"
```
3. 妫€鏌ユ棩蹇楁枃浠<E69E83>
## 鏇存柊闂<E69F8A><E99782>
### 闂<><E99782>: 鏇存柊涓嬭浇澶辫触
**鐥囩姸:**
```
Failed to download update: The remote server returned an error
```
**鍙<>兘鍘熷洜:**
- 缃戠粶杩炴帴闂<E5B8B4><E99782>
- GitHub API 闄愭祦
-悊璁剧疆闂<E79686><E99782>
**瑙喅鏂规<E98F82>:**
1. **妫€鏌ョ綉缁滆繛鎺<E7B99B>:**
```bash
# 娴嬭瘯 GitHub 杩炴帴
curl https://api.github.com/repos/YourOrg/LanMountainDesktop/releases/latest
```
2. **閰嶇疆浠g悊** (濡傛灉闇€瑕<E282AC>):
```bash
# 璁剧疆鐜<E79686><E9909C>鍙橀噺
set HTTP_PROXY=http://proxy.example.com:8080
set HTTPS_PROXY=http://proxy.example.com:8080
```
3. **鎵嬪姩涓嬭浇鏇存柊:**
- 璁块棶 GitHub Releases 椤甸潰
- 涓嬭浇瀹夎<E780B9><EFBFBD>
- 閲嶆柊瀹夎<E780B9>
---
### 闂<><E99782>: 鏇存柊绛惧悕楠岃瘉澶辫触
**鐥囩姸:**
```
Signature verification failed
```
**鍘熷洜:**
- 鏂囦欢鎹熷潖
-<>挜涓嶅尮閰<E5B0AE>
- 鏂囦欢琚<E6ACA2><E7909A><EFBFBD>
**瑙喅鏂规<E98F82>:**
1. **鍒犻櫎鎹熷潖鐨勬洿鏂版枃浠<E69E83>:**
```bash
# Windows:
Remove-Item "$env:LOCALAPPDATA\LanMountainDesktop\.launcher\update\incoming\*"
# Linux/macOS:
rm -rf ~/.local/share/LanMountainDesktop/.launcher/update/incoming/*
```
2. **閲嶆柊涓嬭浇鏇存柊**
3. **濡傛灉闂<E78189><E99782>鎸佺画,閲嶆柊瀹夎<E780B9>搴旂敤**
---
### 闂<><E99782>: 鏇存柊鍚庡簲鐢ㄦ棤娉曞惎鍔<E6838E>
**鐥囩姸:** 鏇存柊瀹屾垚鍚<E59E9A>,搴旂敤鍚<E695A4>姩澶辫触鎴栧穿婧<E7A9BF>
**瑙喅鏂规<E98F82>:**
1. **鐗堟湰鍥為€€:**
```bash
LanMountainDesktop.Launcher.exe update rollback
```
2. **妫€鏌ユ洿鏂板揩鐓<E68FA9>:**
```bash
# Windows:
ls "$env:LOCALAPPDATA\LanMountainDesktop\.launcher\snapshots\"
# 鏌ョ湅蹇<E6B985>収鍐呭<E98D90>
cat "$env:LOCALAPPDATA\LanMountainDesktop\.launcher\snapshots\{snapshot-id}.json"
```
3. **鎵嬪姩鍒囨崲鐗堟湰:**
```bash
# 鍒犻櫎鏂扮増鏈<E5A297>殑 .current 鏍囪<E98F8D>
Remove-Item "C:\Program Files\LanMountainDesktop\app-{new}\\.current"
# 娣诲姞 .current 鍒版棫鐗堟湰
New-Item -ItemType File -Path "C:\Program Files\LanMountainDesktop\app-{old}\\.current"
```
---
### 闂<><E99782>: 澧為噺鏇存柊鏂囦欢鍝堝笇涓嶅尮閰<E5B0AE>
**鐥囩姸:**
```
File hash mismatch for 'XXX.dll'
```
**鍘熷洜:**
- 鏂囦欢涓嬭浇涓嶅畬鏁<E795AC>
- 鏂囦欢鎹熷潖
**瑙喅鏂规<E98F82>:**
1. **鍒犻櫎閮ㄥ垎涓嬭浇鐨勬洿鏂<E6B4BF>:**
```bash
# 鍒犻櫎鏍囪<E98F8D><EFBFBD> .partial 鐨勭洰褰<E6B4B0>
Remove-Item "C:\Program Files\LanMountainDesktop\app-*" -Recurse -Force -Include *.partial
```
2. **娓呯悊鏇存柊缂撳瓨:**
```bash
Remove-Item "$env:LOCALAPPDATA\LanMountainDesktop\.launcher\update\incoming\*"
```
3. **閲嶆柊涓嬭浇鏇存柊**
## 鎻掍欢闂<E6ACA2><E99782>
### 闂<><E99782>: 鎻掍欢鏃犳硶鍔犺浇
**鐥囩姸:** 鎻掍欢鍒楄〃涓<E38083>湅涓嶅埌宸插畨瑁呯殑鎻掍欢
**璇婃柇:**
```bash
# 妫€鏌ユ彃浠剁洰褰<E6B4B0>
ls "C:\Program Files\LanMountainDesktop\plugins\"
# 妫€鏌ユ彃浠舵竻鍗<E7ABBB>
cat "C:\Program Files\LanMountainDesktop\plugins\{plugin-id}\plugin.json"
```
**瑙喅鏂规<E98F82>:**
1. **妫€鏌ユ彃浠跺吋瀹规€<E8A784>:**
- 鎻掍欢 SDK 鐗堟湰鏄<E6B9B0>惁鍖归厤
- 鎻掍欢鏄<E6ACA2>惁鏀<E68381>寔褰撳墠骞冲彴
2. **閲嶆柊瀹夎<E780B9>鎻掍欢:**
```bash
LanMountainDesktop.Launcher.exe plugin install <path-to-plugin.laapp>
```
3. **妫€鏌ユ棩蹇楁枃浠<E69E83>** 鏌ョ湅鎻掍欢鍔犺浇閿欒<E996BF>
---
### 闂<><E99782>: 鎻掍欢瀹夎<E780B9>澶辫触
**鐥囩姸:**
```
Failed to install plugin: Invalid package format
```
**鍙<>兘鍘熷洜:**
- `.laapp` 鏂囦欢鎹熷潖
- 鎻掍欢鍖呮牸寮忎笉姝g‘
- 鏉冮檺涓嶈冻
**瑙喅鏂规<E98F82>:**
1. **楠岃瘉鎻掍欢鍖<E6ACA2>:**
```bash
# .laapp 瀹為檯涓婃槸 ZIP 鏂囦欢
unzip -t plugin.laapp
```
2. **妫€鏌ユ潈闄<E6BD88>:**
```bash
# 浠ョ<E6B5A0>鐞嗗憳韬<E686B3>唤杩愯<E69DA9> Launcher
```
3. **鎵嬪姩瑙帇瀹夎<E780B9>:**
```bash
# 瑙帇鍒版彃浠剁洰褰<E6B4B0>
unzip plugin.laapp -d "C:\Program Files\LanMountainDesktop\plugins\{plugin-id}"
```
---
### 闂<><E99782>: 鎻掍欢鏇存柊澶辫触
**鐥囩姸:** 鎻掍欢鍗囩骇闃熷垪澶勭悊澶辫触
**瑙喅鏂规<E98F82>:**
1. **娓呯悊鍗囩骇闃熷垪:**
```bash
Remove-Item "$env:LOCALAPPDATA\LanMountainDesktop\.launcher\plugin-upgrades\*"
```
2. **鎵嬪姩鏇存柊鎻掍欢:**
- 鍗歌浇鏃х増鏈<E5A297>
- 瀹夎<E780B9>鏂扮増鏈<E5A297>
## 鎬ц兘闂<E58598><E99782>
### 闂<><E99782>: CPU 鍗犵敤杩囬珮
**鍙<>兘鍘熷洜:**
- 娓叉煋妯″紡涓嶅綋
- 缁勪欢鏇存柊棰戠巼杩囬珮
- 鍐呭瓨娉勬紡
**璇婃柇:**
```bash
# Windows: 浣跨敤浠诲姟绠悊鍣ㄦ煡鐪嬭<E990AA>缁嗕俊鎭<E4BF8A>
# Linux: top 鎴<> htop
# macOS: Activity Monitor
```
**瑙喅鏂规<E98F82>:**
1. **鍒囨崲娓叉煋妯″紡** (鍙傝<E98D99>"绐楀彛鏃犳硶鏄剧ず"閮ㄥ垎)
2. **绂佺敤涓嶅繀瑕佺殑缁勪欢:**
- 鍑忓皯妗岄潰缁勪欢鏁伴噺
- 闄嶄綆缁勪欢鏇存柊棰戠巼
3. **妫€鏌ユ槸鍚︽湁姝诲惊鐜<E6838A>垨璧勬簮娉勬紡**
---
### 闂<><E99782>: 鍐呭瓨鍗犵敤杩囬珮
**璇婃柇:**
```bash
# 妫€鏌ュ唴瀛樹娇鐢ㄦ儏鍐<E5848F>
# Windows: 浠诲姟绠悊鍣<E6828A>
# Linux: free -h
# macOS: Activity Monitor
```
**瑙喅鏂规<E98F82>:**
1. **閲嶅惎搴旂敤**
2. **鍑忓皯缁勪欢鏁伴噺**
3. **妫€鏌ユ彃浠舵槸鍚︽湁鍐呭瓨娉勬紡**
4. **鏇存柊鍒版渶鏂扮増鏈<E5A297>** (鍙<>兘鍖呭惈鍐呭瓨浼樺寲)
---
### 闂<><E99782>: 鍚<>姩閫熷害鎱<E5AEB3>
**鍙<>兘鍘熷洜:**
- 鎻掍欢杩囧<E69DA9>
- 纾佺洏 I/O 鎱<>
- 棣栨<E6A3A3><EFBFBD>姩闇€瑕佸垵濮嬪寲
**瑙喅鏂规<E98F82>:**
1. **绂佺敤涓嶅繀瑕佺殑鎻掍欢**
2. **浣跨敤 SSD**
3. **娓呯悊缂撳瓨:**
```bash
Remove-Item "$env:LOCALAPPDATA\LanMountainDesktop\cache\*" -Recurse
```
## 骞冲彴鐗瑰畾闂<E795BE><E99782>
### Windows
#### 闂<><E99782>: WebView2 缂哄け
**鐥囩姸:**
```
Microsoft Edge WebView2 Runtime is required
```
**瑙喅鏂规<E98F82>:**
1. 涓嬭浇骞跺畨瑁<E795A8> WebView2 Runtime:
https://go.microsoft.com/fwlink/p/?LinkId=2124703
2. 鎴栦娇鐢ㄥ畨瑁呭寘鑷<E5AF98>姩瀹夎<E780B9>
---
#### 闂<><E99782>: 涓庣獥鍙編鍖栧伐鍏峰啿绐<E595BF>
**鐥囩姸:** 绐楀彛鏄剧ず寮傚父銆佸穿婧<E7A9BF>
**宸茬煡鍐茬獊宸ュ叿:**
- Mica For Everyone
- TranslucentTB
- 鍏朵粬淇<E7B2AC>敼绐楀彛鏉愯川鐨勫伐鍏<E4BC90>
**瑙喅鏂规<E98F82>:**
<EFBFBD> LanMountainDesktop 娣诲姞鍒拌繖浜涘伐鍏风殑鎺掗櫎鍒楄〃涓<E38083><EFBFBD>
---
### Linux
#### 闂<><E99782>: 缂哄皯鍥惧舰搴撲緷璧<E7B7B7>
**鐥囩姸:**
```
error while loading shared libraries: libXXX.so
```
**瑙喅鏂规<E98F82>:**
**Debian/Ubuntu:**
```bash
sudo apt install libx11-6 libice6 libsm6 libfontconfig1
```
**Fedora/RHEL:**
```bash
sudo dnf install libX11 libICE libSM fontconfig
```
**Arch Linux:**
```bash
sudo pacman -S libx11 libice libsm fontconfig
```
---
#### 闂<><E99782>: Wayland 鍏煎<E98D8F><EFBFBD>
**鐥囩姸:**<> Wayland 涓嬭繍琛屽紓甯<E7B493>
**瑙喅鏂规<E98F82>:**
```bash
# 寮哄埗浣跨敤 X11
export GDK_BACKEND=x11
./LanMountainDesktop.Launcher
```
鎴栭€氳繃 XWayland 杩愯<E69DA9> (涓嶄繚璇佹墍鏈夊姛鑳芥<E991B3><EFBFBD>)銆<>
---
### macOS
#### 闂<><E99782>: 搴旂敤鏃犳硶鎵撳紑 - "鏉ヨ嚜韬<E59A9C>唤涓嶆槑鐨勫紑鍙戣€<E688A3>"
**瑙喅鏂规<E98F82>:**
```bash
# 绉婚櫎闅旂<E99785>灞炴€<E782B4>
xattr -cr /Applications/LanMountainDesktop.app
```
鎴栧湪"绯荤粺鍋忓ソ璁剧疆" > "瀹夊叏鎬т笌闅愮<E99785>"涓<>厑璁搞€<E6909E>
---
#### 闂<><E99782>: 鏉冮檺闂<E6AABA><E99782>
**鐥囩姸:** 鏃犳硶璁块棶鏌愪簺鐩<E7B0BA>綍鎴栧姛鑳<E5A79B>
**瑙喅鏂规<E98F82>:**
<EFBFBD>"绯荤粺鍋忓ソ璁剧疆" > "瀹夊叏鎬т笌闅愮<E99785>" > "闅愮<E99785>"涓<>巿浜堝繀瑕佹潈闄<E6BD88>:
- 鏂囦欢鍜屾枃浠跺す
- 杈呭姪鍔熻兘 (濡傛灉闇€瑕<E282AC>)
## 鑾峰彇甯<E5BD87>
濡傛灉浠ヤ笂鏂规<EFBFBD>閮芥棤娉曡В鍐抽棶棰<EFBFBD>:
1. **鏌ョ湅鏃ュ織鏂囦欢** (鍖呭惈璇︾粏閿欒<E996BF>淇℃伅)
2. **鎼滅储 GitHub Issues** - 鍙<>兘宸叉湁瑙喅鏂规<E98F82>
3. **鎻愪氦鏂<E6B0A6> Issue** - 鍖呭惈:
- 鎿嶄綔绯荤粺鍜岀増鏈<E5A297>
- 搴旂敤鐗堟湰
- 璇︾粏閿欒<E996BF>淇℃伅
- 閲嶇幇姝ラ<E5A79D>
- 鏃ュ織鏂囦欢 (濡傛灉鐩稿叧)
**GitHub Issues:** https://github.com/YourOrg/LanMountainDesktop/issues
## 鐩稿叧鏂囨。
- [寮€鍙戞枃妗<E69E83>(DEVELOPMENT.md)
- [Launcher 鏋舵瀯](LAUNCHER.md)
- [鏇存柊绯荤粺](UPDATE_SYSTEM.md)
- [鏋勫缓鍜岄儴缃瞉(BUILD_AND_DEPLOY.md)
### 问题: OOBE 窗口重复出现
**原因:** OOBE 完成标记丢失、损坏,或者旧版标记文件只作为迁移兼容而不是主状态源。
**当前权威状态路径:**
```bash
Windows: %LOCALAPPDATA%\LanMountainDesktop\.launcher\state\oobe-state.json
```
**处理原则:**
- 同一 Windows 用户重装或升级后,默认不应该再次进入 OOBE。
- `first_run_completed` 只保留为兼容迁移数据。
- 如果状态文件不可读Launcher 应优先保证稳定启动并记录 `oobe_state_unavailable`,不要反复把用户拉回 OOBE。
---
### 问题: 启动或插件安装意外弹出管理员权限
**原因:** 某些路径显式请求了 `runas`,或者流程把默认用户目录误判成需要提权。
**当前允许提权的白名单:**
- 安装器本体
- 全量安装包更新应用
- 用户显式确认的 legacy uninstall
**不应弹 UAC 的场景:**
- 普通冷启动
- OOBE
- 检查更新
- 增量下载
- 默认插件安装到用户 LocalAppData 路径
**调试建议:**
- 检查日志中的 `launchSource``isElevated``oobeStateStatus``oobeSuppressionReason`
- 检查插件安装目标是否仍在 `%LOCALAPPDATA%\LanMountainDesktop`
- 确认没有额外的 `Verb = "runas"` 被引入默认路径