# 全新安装验证:清干净 -> 装到默认路径 -> 跑一遍 -> 检查权限 # 用法: powershell -NoProfile -ExecutionPolicy Bypass -File _build\test_install_fresh.ps1 $ErrorActionPreference = "Continue" $root = "C:\Users\shu\Desktop\deepseekagent\LanRemote" $setup = Join-Path $root "dist\ykxmz-setup-1.6.2.exe" $appId = "{8F3C1D42-7A5E-4B91-9C6D-2E8F4A1B7C30}_is1" Write-Host "" Write-Host "===== 1. 彻底清理上一次的安装 =====" -ForegroundColor Cyan Get-Process ykxmz, unins000 -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue Start-Sleep -Seconds 2 foreach ($dir in @("C:\Program Files\ykxmz", "C:\ProgramData\_ykxmz_test", "C:\ProgramData\ykxmz")) { if (Test-Path "$dir\unins000.exe") { Start-Process "$dir\unins000.exe" ` -ArgumentList "/VERYSILENT", "/SUPPRESSMSGBOXES" -Wait ` -ErrorAction SilentlyContinue Start-Sleep -Seconds 2 } Remove-Item $dir -Recurse -Force -ErrorAction SilentlyContinue } # 删掉 Inno 记住的目录,否则下次还会装到老地方 foreach ($hive in @("HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall")) { Remove-Item "$hive\$appId" -Recurse -Force -ErrorAction SilentlyContinue } Write-Host " 清理完成" Write-Host "" Write-Host "===== 2. 全新安装(不带 /DIR,看默认去哪)=====" -ForegroundColor Cyan $log = Join-Path $root "_build\install_fresh.log" Remove-Item $log -Force -ErrorAction SilentlyContinue $proc = Start-Process -FilePath $setup ` -ArgumentList "/VERYSILENT", "/SUPPRESSMSGBOXES", "/NORESTART", "/LOG=$log", "/CODE=654321" -PassThru -Wait Write-Host " 安装 exit=$($proc.ExitCode)" Write-Host "" Write-Host "===== 3. 安装位置 =====" -ForegroundColor Cyan $exe = "C:\Program Files\ykxmz\ykxmz.exe" Write-Host " $exe : $(Test-Path $exe)" Write-Host " _internal : $((Get-ChildItem 'C:\Program Files\ykxmz\_internal' -ErrorAction SilentlyContinue | Measure-Object).Count) 项" Write-Host " docs : $((Get-ChildItem 'C:\Program Files\ykxmz\docs' -ErrorAction SilentlyContinue | Measure-Object).Count) 个" Write-Host "" Write-Host "===== 4. 数据目录权限 =====" -ForegroundColor Cyan $dataDir = "C:\ProgramData\ykxmz\data" if (Test-Path $dataDir) { Write-Host " $dataDir 存在" (Get-Acl $dataDir).Access | Where-Object { $_.IdentityReference -match "Users|用户" } | ForEach-Object { Write-Host " $($_.IdentityReference) : $($_.FileSystemRights)" } } else { Write-Host " $dataDir 不存在(还没运行过,正常)" } Write-Host "" Write-Host "===== 5. 跑起来(这一步以前报 WinError 5)=====" -ForegroundColor Cyan if (Test-Path $exe) { & $exe --status 2>&1 | Select-String -Pattern "配对码|数据目录|开机自启" | ForEach-Object { Write-Host " $($_.Line.Trim())" } Write-Host "" Write-Host " 写一次配置(模拟实际运行):" $out = & $exe --name "三年二班" 2>&1 $out | ForEach-Object { Write-Host " $_" } Write-Host " exit=$LASTEXITCODE" Write-Host "" Write-Host " 再看状态:" & $exe --status 2>&1 | Select-String -Pattern "配对码|数据目录" | ForEach-Object { Write-Host " $($_.Line.Trim())" } } else { Write-Host " ✗ 找不到 exe,安装失败了" -ForegroundColor Red if (Test-Path $log) { Get-Content $log -Encoding UTF8 | Select-Object -Last 15 | ForEach-Object { Write-Host " $_" } } }