Scripting NSIS是否具有评估功能?

Scripting NSIS是否具有评估功能?,scripting,nsis,Scripting,Nsis,例如,有没有一种方法可以按照这些思路做一些事情 Eval "MessageBox MB_OK 'Hello, World!'" 这显然是一个无用的示例,但我觉得这样的功能会很有用。NSIS编译器(MakeNSIS)解析文本文件,并将二进制指令写入生成的设置中。安装应用程序本身只能执行编译时已知的指令 大多数指令都接受变量作为参数,因此可以获得不同的行为。这是一个毫无意义的例子: Page InstFiles Function MaybeShowMessageBox IntCmp $0

例如,有没有一种方法可以按照这些思路做一些事情

Eval "MessageBox MB_OK 'Hello, World!'"
这显然是一个无用的示例,但我觉得这样的功能会很有用。

NSIS编译器(MakeNSIS)解析文本文件,并将二进制指令写入生成的设置中。安装应用程序本身只能执行编译时已知的指令

大多数指令都接受变量作为参数,因此可以获得不同的行为。这是一个毫无意义的例子:

Page InstFiles

Function MaybeShowMessageBox
    IntCmp $0 0 skip
    MessageBox MB_OK "$1"
skip:
FunctionEnd

Section
StrCpy $0 1 ; Display it
StrCpy $1 "Hello World"
Call MaybeShowMessageBox

StrCpy $1 "Goodbye World"
Call MaybeShowMessageBox

StrCpy $0 0 ; Don't display it
Call MaybeShowMessageBox

StrCpy $0 0
StrCpy $2 "$WinDir" 1 ; Get the first character
StrCmp $2 "C" "" skipWinDirMessage
StrCpy $0 1
skipWinDirMessage:
StrCpy $1 "$WinDir is on drive C"
Call MaybeShowMessageBox
SectionEnd
您通常不会编写这样的代码
IntFmt
与您将要获得的Eval尽可能接近,但它仅对数字起作用:

ShowInstDetails show
Section
StrCpy $1 42

IntFmt $0 "%d" $1
DetailPrint "$1 as a number: $0"

IntFmt $0 "%#.4x" $1
DetailPrint "$1 as a hex number with a >= 4 width: $0"

IntFmt $0 "%c" $1
DetailPrint "$1 as a character: $0"
SectionEnd
NSIS编译器(MakeNSIS)解析文本文件并将二进制指令写入生成的设置中。安装应用程序本身只能执行编译时已知的指令

大多数指令都接受变量作为参数,因此可以获得不同的行为。这是一个毫无意义的例子:

Page InstFiles

Function MaybeShowMessageBox
    IntCmp $0 0 skip
    MessageBox MB_OK "$1"
skip:
FunctionEnd

Section
StrCpy $0 1 ; Display it
StrCpy $1 "Hello World"
Call MaybeShowMessageBox

StrCpy $1 "Goodbye World"
Call MaybeShowMessageBox

StrCpy $0 0 ; Don't display it
Call MaybeShowMessageBox

StrCpy $0 0
StrCpy $2 "$WinDir" 1 ; Get the first character
StrCmp $2 "C" "" skipWinDirMessage
StrCpy $0 1
skipWinDirMessage:
StrCpy $1 "$WinDir is on drive C"
Call MaybeShowMessageBox
SectionEnd
您通常不会编写这样的代码
IntFmt
与您将要获得的Eval尽可能接近,但它仅对数字起作用:

ShowInstDetails show
Section
StrCpy $1 42

IntFmt $0 "%d" $1
DetailPrint "$1 as a number: $0"

IntFmt $0 "%#.4x" $1
DetailPrint "$1 as a hex number with a >= 4 width: $0"

IntFmt $0 "%c" $1
DetailPrint "$1 as a character: $0"
SectionEnd

你能想出一个更有用的例子来说明你实际上在做什么吗?你能想出一个更有用的例子来说明你实际上在做什么吗?