NSIS push,pop和URLEncode

时间:2018-02-24 15:50:46

标签: nsis

我试图用URLEncode编码NSIS中的字符串。我正在使用名为URLEncode的NSIS插件。问题是我尝试编码2个变量,但第一个编码的var在我编码第二个变量后丢失了值。

Push "${AFF_NAME}"
Call URLEncode
Pop $3
;at this point the messagebox show the result good.
MessageBox MB_OK $3

ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "ProductName"
Push $0
Call URLEncode
Pop $0
;now after second var encoded the result of first var $3 lost the value
MessageBox MB_OK $3

请帮助我使用NSIS非常新,我不知道它有多好。我搜索信息但没有成功。

非常感谢!

1 个答案:

答案 0 :(得分:0)

我不知道URLEncode插件,但在NSIS wiki上有一个名为URLEncode的辅助函数,它无法保留寄存器。

您可以通过修改函数的开头和结尾来修复它,使其如下所示:

; Start
Function URLEncode
    System::Store S ; Save registers
    Pop $0 ;param

    ...

Done:
    Push $9
    System::Store L ; Restore registers
FunctionEnd
; End