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 '"$INSTDIRapp.exe"'
FunctionEnd

我尝试了一种不同的变体:

Function .onInstSuccess
IfSilent +2 0
Exec '"AbsolutePathToapp.exe"'
FunctionEnd

或者,在customInit宏中设置类似SetSilent normal的内容,会触发类似双击.exe的行为,此时会出现安装程序屏幕。

任何想法或建议都将不胜感激。

IfSilent +2 0在安装程序处于静默状态时跳过Exec!只要去掉那条线。

静默安装程序通常不会启动应用程序,所以理想情况下你不应该更改任何内容。

由于该应用程序是用电子生成器构建的,即使提供了自定义.nsh文件,如果以手动模式安装,该应用程序仍不应启动,如本文所述。

经过一点研究,如果在命令行参数中提供(此处指出(,则可以重新启用该功能

myAppInstaller.exe /S --force-run

相关内容

  • 没有找到相关文章

最新更新