使用电子生成器NSIS安装程序,我们可以创建一个可执行安装程序,在安装完成后立即启动已安装的电子应用程序。我的问题是,有没有办法在第一次启动时将安装程序本身启动的任何命令行参数传递给已安装的应用程序?
我见过一些NSIS自定义脚本,建议可以使用Exec
启动可执行文件,并且可以使用GetParameters
检索安装程序参数。这是推荐的方向,还是在电子制造商或NSIS中有一些配置选项?
修改
这是一个可能的解决方案:
nsis.runAfterFinish
电子修建器选项设置为false(默认值为true); 实现customInstall
事件处理程序以自定义正常的电子构建器提供的模板:
!macro StartAppWithParameters
Var /GLOBAL startAppWithParametersArgs
${if} ${isUpdated}
StrCpy $startAppWithParametersArgs "--updated"
${else}
StrCpy $startAppWithParametersArgs ""
${endif}
${StdUtils.GetAllParameters} $R0 0
${StdUtils.ExecShellAsUser} $0 "$launchLink" "open" '$startAppWithParametersArgs $R0'
!macroend
!macro customInstall
HideWindow
!insertmacro StartAppWithParameters
!macroend
详细信息位于electron-builder NSIS configuration和electron-builder NSIS template
谢谢!
答案 0 :(得分:0)
是的,您可以使用wind
和Exec
手动执行此操作:
GetParameters
MUI Finish页面还支持直接指定参数的方法,但由于我们在编译时不知道参数,因此我们必须使用变量:
!include "FileFunc.nsh"
!include "MUI2.nsh"
!macro RunWithInstallersParameters app
Push "${app}"
Call RunWithInstallersParameters
!macroend
Function RunWithInstallersParameters
Exch $0
Push $1
${GetParameters} $1
Exec '"$0" $1'
Pop $1
Pop $0
FunctionEnd
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_FUNCTION MyFinishRun
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE English
Function MyFinishRun
!insertmacro RunWithInstallersParameters "$sysdir\Calc.exe"
FunctionEnd
Section
SetOutPath $InstDir
File "blahblah"
!insertmacro RunWithInstallersParameters "$windir\Notepad.exe"
SectionEnd
我对电子工程师一无所知,但我认为有一种方法可以让你以某种方式自定义NSIS脚本。