Installation 正在尝试将命令行参数执行添加到NSIS安装程序

Installation 正在尝试将命令行参数执行添加到NSIS安装程序,installation,command-line-arguments,nsis,Installation,Command Line Arguments,Nsis,我正在尝试自定义NSIS安装程序。根据用户的一个选项,我希望程序使用不同的选项运行,我将使用命令行选项设置该选项 (我保存了一些在最后删除的文件,如果用户不想继续安装,那么我希望使用选项-d运行该实用程序,该选项只删除临时文件。) 我找到了这篇文章:但我不知道如何设置它来运行带有命令行参数的程序 这就是我正在尝试的: 我试过: SetOutPath "$TEMP" !define MY_FILE "file.exe -d" File /nonfatal "${MY_FILE}" ExecWait

我正在尝试自定义NSIS安装程序。根据用户的一个选项,我希望程序使用不同的选项运行,我将使用命令行选项设置该选项

(我保存了一些在最后删除的文件,如果用户不想继续安装,那么我希望使用选项-d运行该实用程序,该选项只删除临时文件。)

我找到了这篇文章:但我不知道如何设置它来运行带有命令行参数的程序

这就是我正在尝试的: 我试过:

SetOutPath "$TEMP"
!define MY_FILE "file.exe -d"
File /nonfatal "${MY_FILE}"
ExecWait '"$TEMP\${MY_FILE}" 
Delete /REBOOTOK "$TEMP\${MY_FILE}"
我收到一条警告,它没有找到
file.exe-d

所以我在尝试类似的东西

$(GetOptions) $CMDLINE "/d" $Trying_This
;Not sure what to put to get the program
我仍在尝试NSIS,这是一个巨大的挑战,无法找到一个例子来指导我

注意:我正在运行没有选项的文件,然后我希望NSIS插入选项-d(或其他选项,如-f filename)


编辑:我在帖子中的代码不完整。。。我在现实生活中使用了ExecWait…

File
语句使NSIS将给定文件包含到压缩数据中,并在运行时将其放置到当前工作目录中(您可以使用
SetOutPath
进行更改)。它不允许你执行一个可执行文件,不管有没有参数

如果要在安装过程中运行可执行文件,则必须1)包含该可执行文件,2)在运行时执行该可执行文件,并可能更改为临时目录,例如,如果可执行文件是安装程序

!定义我的_文件“FILE.exe”
!定义我的参数“-d”
设置输出路径“$TEMP”
文件“${MY_File}”
ExecWait'$TEMP\${MY_FILE}${MY_ARGS}'$0$0将获得返回代码
${if}$0
MessageBox MB_OK | MB_iconnexClation“抱歉,安装返回代码$0。$\n\
无法继续安装。“/SD IDOK
中止
${endif}
删除“$TEMP\${MY_FILE}”

当然,如果您需要在安装后保留exe,请不要转到临时目录,也不要在最后删除可执行文件。

如果file.exe仅在安装过程中使用,您可能不应该将其解压缩到$instdir,您应该调用Initpluginsdir,然后将其解压缩到$pluginsdir
Outfile test.exe
requestexecutionlevel user
InstallDir "$Temp\Test" ;Default $InstDir
!include FileFunc.nsh
!include LogicLib.nsh

page directory
page instfiles

section 
StrCpy $1 "/Foo"
ClearErrors
${GetOptions} $CMDLINE "-d" $0
${IfNot} ${Errors} 
    StrCpy $1 "/Bar"
${EndIF}
SetOutPath $InstDir
File "File.exe" ;Extracting to $InstDir
ExecWait '"$InstDir\File.exe" $1' ;Calling with /Foo or if installer was started with -d; /Bar 
sectionend