我有一个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值。我做了一些实验,并确定如果我传入一个纯整数可以解析参数,但如果命令行参数包含超量或字母,则值是错误的。
答案 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