使用electron builder NSIS安装程序在安装后运行时如何传递命令行参数

使用electron builder NSIS安装程序在安装后运行时如何传递命令行参数,nsis,electron-builder,Nsis,Electron Builder,使用electron builder NSIS安装程序,我们可以创建一个可执行的安装程序,在安装完成后立即启动已安装的electron应用程序。我的问题是,有没有一种方法可以将安装程序启动时使用的任何命令行参数传递给第一次启动时安装的应用程序 我看到一些NSIS自定义脚本,它们建议可以使用Exec启动可执行文件,并且可以使用GetParameters检索安装程序参数。这是一个建议的方向,还是在electron builder或NSIS中有一些配置选项 编辑: 以下是一个可能的解决方案: 将ns

使用electron builder NSIS安装程序,我们可以创建一个可执行的安装程序,在安装完成后立即启动已安装的electron应用程序。我的问题是,有没有一种方法可以将安装程序启动时使用的任何命令行参数传递给第一次启动时安装的应用程序

我看到一些NSIS自定义脚本,它们建议可以使用
Exec
启动可执行文件,并且可以使用
GetParameters
检索安装程序参数。这是一个建议的方向,还是在electron builder或NSIS中有一些配置选项

编辑:

以下是一个可能的解决方案:

  • nsis.runAfterFinish
    electron builder选项设置为false(默认为true)
  • 实现
    customInstall
    事件处理程序以自定义electron builder提供的普通模板:

    !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
    
详情载于


谢谢

是,您可以使用
Exec
GetParameters
手动执行:

!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
MUI Finish页面还支持直接指定参数的方法,但由于我们在编译时不知道参数,因此必须使用变量:

!include "FileFunc.nsh"
!include "MUI2.nsh"

!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN "$windir\Notepad.exe"
!define MUI_FINISHPAGE_RUN_PARAMETERS $1 ; Initialized by our MUI_PAGE_CUSTOMFUNCTION_SHOW function
!define MUI_PAGE_CUSTOMFUNCTION_SHOW InitFinishPage
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE English

Function InitFinishPage
${GetParameters} $1
FunctionEnd
我对electron builder一无所知,但我认为您可以通过某种方式自定义NSIS脚本