2012-07-19 127 views
1

我在我的NSIS安裝程序中使用函數Splice使用NSIS 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

使用拼接功能時,我無意間看到了同樣的問題絆倒了。但是,我只需要在谷歌上搜索一下就能找到正確的解決方案。關鍵是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