使用NSIS Splice功能会导致崩溃

时间:2012-07-19 05:56:25

标签: parsing installer nsis

我在NSIS安装程序中使用函数Splice

我的问题:当我执行下面的代码时,Splice函数会导致安装程序进入无限循环或崩溃(它没有响应)。怎么回事?

我使用Splice错了吗?如果我不能按照我想要的方式使用splice来分割我的字符串,是否还有另一个我可以用来分割字符串的函数?

Section "Dummy"

    Push "user_lib_4d C:\12d\9.00\DTEI_Customisation\SURVEY_12d9\DTEI_Survey_User_Lib"  # "user_lib_4d C:/blah"
    Push "0"
    Push "user_lib_4d"
    Call Splice   # causes an infinite loop/crash

SectionEnd

1 个答案:

答案 0 :(得分:1)

使用Splice功能时,我偶然发现了同样的问题。但是我只是在谷歌上搜索一下才能找到合适的解决方案。重点是Splice不是为了那个。 Push "user_lib_4d"行实际上需要一个分隔符字符串。解决方案是使用任何用于此目的的实际字符串函数。有plenty out there因此无法在此提及所有内容。您可以依赖搜索子字符串,删除或替换函数。我使用并取得成功的是使用dirtydingus StrRep

在你的情况下:

“虚拟”部分

Push "user_lib_4d C:\12d\9.00\DTEI_Customisation\SURVEY_12d9\DTEI_Survey_User_Lib"
Push "user_lib_4d"
Push ""
Call StrRep
Pop $R0 ;result

MessageBox mb_ok $R0

SectionEnd

编辑:对于高级操作,您可以使用StrStrAdv