Использование ${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}".

Может кто-нибудь, пожалуйста, дайте мне знать:

  1. Как использовать 'StrTok' в макросе удаления?

  2. В приведенном выше фрагменте кода, почему требуется 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
Другие вопросы по тегам