2016-10-20 10 views
0

たとえば、これらの行に沿って何かを行う方法はありますか?NSISには評価機能がありますか?

Eval "MessageBox MB_OK 'Hello, World!'" 

これは明らかに役に立たない例ですが、このような機能が役立つと思います。

+0

は、あなたが実際にやろうとしているかのより多くの有用な例を思い付くことができますか? – Anders

答えて

2

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は、あなたが得ようとしているとして評価に近いですが、それは数字のみで動作します。

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 
関連する問題