fix(desktop): 修复单实例锁、窗口显示与重复启动

- 使用系统文件锁替代 PID 存活判断,崩溃后由系统释放锁并避免删除重建竞态
- 将早期预检异常统一交给启动错误提示,保证退出时释放已取得的锁
- GUI 就绪后显式显示主窗口,避免继承隐藏启动状态
- 移除安装包中重复的安装后启动条目

补充跨进程单实例锁、模拟 Windows 锁异常、早期启动失败、窗口显示与安装配置测试。
Windows 真机安装与窗口行为未在本机验证。

Signed-off-by: shy3130 <shy3130@qq.com>
This commit is contained in:
shy3130
2026-10-30 20:43:06 +08:00
parent 3f8c0b169e
commit a1301e239a
4 changed files with 166 additions and 47 deletions
-6
View File
@@ -99,12 +99,6 @@ Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: de
; asInvoker 场景行为不变。
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppName}}"; Flags: nowait postinstall skipifsilent shellexec
; 安装完成后启动应用
; shellexec: 部分机器对 exe 路径存有「以管理员身份运行」兼容标志/策略要求提权,
; CreateProcess 无法弹 UAC 会直接报错误码 740; ShellExecute 遇提权正常弹 UAC,
; asInvoker 场景行为不变。
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppName}}"; Flags: nowait postinstall skipifsilent shellexec
[UninstallRun]
; 卸载前先关闭正在运行的应用 (否则 exe 被占用删不掉)
Filename: "{cmd}"; Parameters: "/C taskkill /F /IM {#MyAppExeName}"; Flags: runhidden; RunOnceId: "KillApp"