Skip to content

Commit de4cbe4

Browse files
committed
fix: installer 末尾用 schtasks /run 代替 Exec wscript.exe
NSIS install 末尾原本用 Exec wscript.exe 启动 gateway,会继承 admin 父进程(Session 0)的 session,导致 tray 图标跑在 Services session 里、用户在桌面看不到。\n\n改用 schtasks /run /tn 'QMT Gateway',由 LogonTrigger+InteractiveToken principal 把 gateway 拉到 **当前活动用户** 的 session 启动,tray 图标在右下角正常显示。\n\n计划任务行为不变:用户重启后 LogonTrigger 仍会自动拉起 gateway。
1 parent 06cc411 commit de4cbe4

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

installer/installer.nsi

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -423,9 +423,19 @@ Section -Post
423423
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
424424
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
425425

426-
DetailPrint "正在启动 QMT Gateway..."
427-
Exec 'wscript.exe "$INSTDIR\start-silent.vbs"'
428-
!insertmacro LogLine "Gateway launch initiated (non-blocking)"
426+
DetailPrint "正在通过计划任务启动 QMT Gateway(用户会话)..."
427+
; 关键:必须用 schtasks /run 触发,而不是 Exec wscript.exe。
428+
;
429+
; Exec wscript.exe 会让父进程(NSIS installer,admin 启动)的 session
430+
; 继承下去——管理员在 Session 0(Services session)启动 NSIS,
431+
; wscript.exe 也会跑在 Session 0,tray 图标在用户桌面看不到。
432+
;
433+
; schtasks /run "QMT Gateway" 会把 LogonTrigger 注册的任务立刻拉起
434+
; 到 **当前活动用户** 的 session(InteractiveToken principal),
435+
; tray 图标就能在右下角正常显示。计划任务的"开机/登录自动启动"
436+
; 行为不变(用户重启后 LogonTrigger 仍会拉起)。
437+
nsExec::ExecToLog 'schtasks /run /tn "QMT Gateway"'
438+
!insertmacro LogLine "Gateway launch via scheduled task (interactive session)"
429439

430440
DetailPrint "等待服务就绪,即将打开浏览器..."
431441
; 通过 install-python.ps1 的 WaitForBrowser stage 完成:它会读

0 commit comments

Comments
 (0)