Использование ${StrTok} в скрипте NSI
Я написал небольшой скрипт NSI, чтобы получить подстроку, проанализированную на запятую:
!include "StrFunc.nsh"
${StrTok}
OutFile abc.exe
Section "jj" main_section
SectionEnd
Function .onInit
${StrTok} $0 "b,lah" "," "L" "0"
FunctionEnd
Приведенный выше код работает отлично. Но когда я пытался использовать StrTok в макросе удаления, он продолжал выдавать ошибку "Invalid command:{StrTok}".
Может кто-нибудь, пожалуйста, дайте мне знать:
Как использовать 'StrTok' в макросе удаления?
В приведенном выше фрагменте кода, почему требуется 2-я строка? Что это значит?
Спасибо!
1 ответ
Первый ${StrTok} создает функцию, а затем вызывает функцию. Чтобы использовать его в деинсталляторе, вы должны использовать ${UnStrTok}:
!include "StrFunc.nsh"
${StrTok}
${UnStrTok}
Section
${StrTok} ...
SectionEnd
Section Uninstall
${UnStrTok} ...
SectionEnd
Изменить: Вот еще один пример (протестировано с NSIS v2.46):
!include "StrFunc.nsh"
${UnStrTok}
!macro Uninstall
${UnStrTok} $1 "b,lah" "," "L" "0" ;
MessageBox mb_ok $1
Delete "$temp\un.exe"
!macroend
Section "Uninstall"
!insertmacro Uninstall
SectionEnd
Section "Install"
WriteUninstaller "$temp\un.exe"
SectionEnd