mirror of
https://gitee.com/xmz7891/ykxmz.git
synced 2026-10-18 16:00:43 +00:00
85 lines
3.6 KiB
PowerShell
85 lines
3.6 KiB
PowerShell
# 全新安装验证:清干净 -> 装到默认路径 -> 跑一遍 -> 检查权限
|
||
# 用法: 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 " $_" }
|
||
}
|
||
}
|