如何解决NSIS 安装程序静默运行应用程序 -- Electron
我们有一个电子应用程序,它为安装程序使用自定义的 nsis 脚本。虽然这可以正常工作,但出于某种原因,如果应用在静默模式下安装,我将无法触发该应用自动启动。
如果应用程序安装正常(例如:双击 .exe
,它会自动启动),但是如果从命令行使用,例如:
"installer.exe" /S
它似乎没有自动启动。
目前使用的安装程序脚本 (installer.nsh
):
!macro preInit
SetRegView 64 ... some reg things -- OK
SetRegView 32 ... some reg things -- OK
!macroend
!macro customInit
; SHUT DOWN APP IF CURRENTLY RUNNING
${GetProcessInfo} 0 $0 $1 $2 $3 $4
${if} $3 != "${APP_EXECUTABLE_FILENAME}"
${nsProcess::FindProcess} "${APP_EXECUTABLE_FILENAME}" $R0
${If} $R0 == 0
;MessageBox MB_OK "App currently running - going to shutdown to install new version"
${nsProcess::CloseProcess} "${APP_EXECUTABLE_FILENAME}" $R0
Sleep 5000
${nsProcess::KillProcess} "${APP_EXECUTABLE_FILENAME}" $R0
Sleep 3000
${EndIf}
${nsProcess::Unload}
${endIf}
; Workaround for installer handing when the app directory is removed manually
${ifNot} ${FileExists} "$INSTDIR"
DeleteRegKey HKCU ...other reg thing
${EndIf}
!macroend
---the culprit---
Function .onInstSuccess
IfSilent +2 0
Exec '"$INSTDIR\app.exe"'
FunctionEnd
我尝试了不同的变体:
Function .onInstSuccess
IfSilent +2 0
Exec '"Absolute\Path\To\app.exe"'
FunctionEnd
或者,在 SetSilent normal
宏中设置类似以下内容的内容:customInit
会触发类似双击 .exe
时出现的行为,安装程序屏幕出现在此处。
非常感谢任何想法或建议。
解决方法
IfSilent +2 0
如果安装程序是静默的,则跳过 Exec
!只需删除该行。
静默安装程序通常不会启动应用,因此理想情况下您不应更改任何内容。
,由于应用程序是使用 Electron 和 Electron Builder 构建的,因此即使提供了自定义 .nsh 文件,如 here 所指出的那样,如果以手动模式安装,应用程序仍不应启动。
经过一些研究,如果在命令行参数中提供了该功能,则可以重新启用该功能 (pointed out here)
myAppInstaller.exe /S --force-run
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。