安装并启动应用程序后,应用程序并不总是排在最前面
Application does not alway come to top after an install and start app
我们有一个基于 WIX 构建的 MSI 的安装程序系统。引导程序是 NSIS。事情就是这样。现在一切正常,除了一个小故障。
有两个 NSIS 安装程序。一个给新用户。 运行 是 MSI 的惯例,因此他们可以同意合同屏幕。该应用程序检查更新,用户可以这样做。这是第二个 NSIS 包:
Section -RA_unzip
InitPluginsDir
ReadRegStr $R1 HKCU "Software\Company\AppFolder\Property" "User Directory"
SetOutPath $R1
File "f:\cpp\AppName\deployment\AppName.msi"
ExecWait 'msiexec /i "$R1\AppName.msi" /L* msi.log /passive /norestart' [=10=]
SectionEnd
Section -r_name_dlls
ReadRegStr $R0 HKCU "Software\Company\AppFolder\Property" "Program Directory"
Rename $R0\libssl_3.dll $R0\libssl-3.dll
Rename $R0\libcrypto_3.dll $R0\libcrypto-3.dll
SectionEnd
Section -Finishing Up
Sleep 1000
SectionEnd
Section -restartRA
ReadRegStr $R0 HKCU "Software\Company\AppFolder\Property" "Program Directory"
Exec $R0\ars.exe
Quit
SectionEnd
应用程序出现在 Z 顺序顶部的时间不到一半。有时它最终会在底部!这发生在我的 Windows7 和我妻子的 Windows10 上。如果我 运行 这没有影响 MSI 版本,(它只是在没有安装的情况下退出),那么应用程序 window 将始终排在最前面。
我什至在初始化结束时添加了 BringWindowToTop(*GetMainWnd());
当主要 window 已经建立并且 运行ning 时。我确实认为这与 windows 安装程序离开缓慢有关,这就是 Sleep 1000
的原因。没有区别。
唯一可以肯定的是 windows 安装程序实际进行安装时会发生这种情况。
在 Exec
之后直接调用 Quit
不是一个好主意,因为如果安装程序在子进程显示其 window 设置前台的权限之前退出 window丢了。
你可以试试
ExecShell /WAITFORINPUTIDLE "" "$R0\ars.exe"
Sleep 1000
Quit
我们有一个基于 WIX 构建的 MSI 的安装程序系统。引导程序是 NSIS。事情就是这样。现在一切正常,除了一个小故障。
有两个 NSIS 安装程序。一个给新用户。 运行 是 MSI 的惯例,因此他们可以同意合同屏幕。该应用程序检查更新,用户可以这样做。这是第二个 NSIS 包:
Section -RA_unzip
InitPluginsDir
ReadRegStr $R1 HKCU "Software\Company\AppFolder\Property" "User Directory"
SetOutPath $R1
File "f:\cpp\AppName\deployment\AppName.msi"
ExecWait 'msiexec /i "$R1\AppName.msi" /L* msi.log /passive /norestart' [=10=]
SectionEnd
Section -r_name_dlls
ReadRegStr $R0 HKCU "Software\Company\AppFolder\Property" "Program Directory"
Rename $R0\libssl_3.dll $R0\libssl-3.dll
Rename $R0\libcrypto_3.dll $R0\libcrypto-3.dll
SectionEnd
Section -Finishing Up
Sleep 1000
SectionEnd
Section -restartRA
ReadRegStr $R0 HKCU "Software\Company\AppFolder\Property" "Program Directory"
Exec $R0\ars.exe
Quit
SectionEnd
应用程序出现在 Z 顺序顶部的时间不到一半。有时它最终会在底部!这发生在我的 Windows7 和我妻子的 Windows10 上。如果我 运行 这没有影响 MSI 版本,(它只是在没有安装的情况下退出),那么应用程序 window 将始终排在最前面。
我什至在初始化结束时添加了 BringWindowToTop(*GetMainWnd());
当主要 window 已经建立并且 运行ning 时。我确实认为这与 windows 安装程序离开缓慢有关,这就是 Sleep 1000
的原因。没有区别。
唯一可以肯定的是 windows 安装程序实际进行安装时会发生这种情况。
在 Exec
之后直接调用 Quit
不是一个好主意,因为如果安装程序在子进程显示其 window 设置前台的权限之前退出 window丢了。
你可以试试
ExecShell /WAITFORINPUTIDLE "" "$R0\ars.exe"
Sleep 1000
Quit