使用NSIS FileFunc.nsh解析命令行参数会得到不正确的值

时间:2013-12-18 23:24:56

标签: windows command-line-arguments nsis

我有一个NSIS脚本,其中包含用于解析名为“GUID”的命令行参数的代码:

!include FileFunc.nsh
...
${GetParameters} $R0
ClearErrors
${GetOptions} $R0 '/GUID=' $guid

它尝试解析的值是一个GUID:一个16位十六进制数字,其中包含超出4个字符的每个块的超量。所以命令行看起来像这样:

myprogram.exe /S /GUID=8a97-7c4f-09b7-a856-96e3

问题是这段代码返回一个有点随机的值,而不是命令行的guid值。我做了一些实验,并确定如果我传入一个纯整数可以解析参数,但如果命令行参数包含超量或字母,则值是错误的。

1 个答案:

答案 0 :(得分:0)

我无法使用NSIS v2.46重现这一点:

!include FileFunc.nsh
!include LogicLib.nsh
var guid

Section
${GetParameters} $R0
ClearErrors
${GetOptions} $R0 '/GUID=' $guid
${If} ${Errors}
        ExecWait '"$exepath" /S /GUID=8a97-7c4f-09b7-a856-96e3'
${Else}
        Messagebox mb_ok |$guid|
${EndIf}
SectionEnd