【问题标题】:Using NSIS Splice Function Causes Crash使用 NSIS 拼接功能会导致崩溃
【发布时间】:2012-07-19 05:56:25
【问题描述】:

我在我的 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

【问题讨论】:

    标签: parsing installation nsis


    【解决方案1】:

    我在使用 Splice 功能时偶然发现了同样的问题。但我只在谷歌上搜索了一下就找到了正确的解决方案。关键是 Splice 不是为此而设计的。 Push "user_lib_4d" 行实际上需要一个分隔符字符串。解决方案是使用任何用于此目的的实际字符串函数。有plenty out there 这使得这里不可能全部提及。您可以依赖搜索子字符串、删除或替换函数。我使用并取得成功的是 StrRep bydirtydingus。

    在你的情况下:

    “虚拟”部分

    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
    

    部分结束

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多