NSIS Scriptの概要
NSIS Scriptは、スクリプト言語のような構文規則を使用するNSISパッケージングツールを構成する基礎です.
1.スクリプトファイル形式
NSISスクリプトファイルの各行はコマンド(Command)と呼ばれ、コマンドのフォーマットはcommand[parameters]であり、例えば
Plugin-inの関数を呼び出す方法plugin::command[parameters],たとえば:
変数は$参照を使用し、変数の定義はVarキーを使用します.たとえば
NSISスクリプトの変数の長さは1024文字以内に制限され、すべての変数はグローバルであり、これらの変数はセグメントおよび関数で使用することができる.
2.1ユーザー定義変数
ユーザー定義変数はVarコマンドを使用して定義され、使用時に$の先頭を使用して参照されます.定義された変数はすべてグローバル変数です(関数とセグメントで定義されていても)、関数とセグメントで変数を定義する場合は/GLOBALラベルを付ける必要があります.関数とセグメント以外の定義にはこのような要求はありません.
NSISスクリプトでは、0、1、2、3、4、5、6、7、8、9、R 0、R 1、R 3、R 4、R 5、R 6、R 7、R 8、R 9という20個の変数が定義されており、定義を必要とせず、名前の競合は発生しません.
INstdIRインストールディレクトリ(INstdIRは一般的にStrCpy、ReadRegStr、ReadINIStrなどの関数によって変更されます..onInit関数でインストールプログラムがインストールする場所を特定するためにいくつかの検出を行うことができます)
$OUTDER現在出力されているディレクトリ位置
$CMDLINEインストールパッケージのコマンドラインパラメータ
$LANGUAGE現在使用されている言語、たとえばEnglishは1033です..onInitで変更できます.
2.3定数
PROGRAMFILES PROGRAMFILES 32 PROGRAMFILES 64は、一般にc:ProgramFIlesを指す64ビットコンピュータにおいてPROGRAMFILES 64を用いる
$DESKTOP実行時解析のデスクトップ位置は、一般的にC:WindowsDesktop
${NSISDIR}コンピュータ上のNSISのインストールディレクトリは、NSISインストールのリソースやUIなどを取得するために使用できます.
3.ラベル
NSISスクリプトでは、プログラムの実行プロセスをジャンプするためにGotoを使用することが多く、Gotoの使用にはラベルが必要になります.ラベルはセグメントまたは関数で使用する必要があります.ラベルはローカルの役割ドメインで機能し(グローバルではありません)、ラベルを定義する方法は簡単です.
4.相対ジャンプ
Labelを使用するジャンプは絶対的です.つまり、ある場所からLabelが指定した位置にジャンプします.それ以外にNSISスクリプトは相対ジャンプをサポートし、一定の行数をジャンプすることができます.+2+3と-2-3のようなスタイルでジャンプします.
5.ページ
各NSISスクリプトには、組み込みページ(built-in Page)であってもよいし、ユーザー定義ページ(nsDialogsまたはInstallOptionsで定義されたページ)であってもよい一連のページが含まれています.
ページには主に2つのタイプがあります.Pageで定義されたページ(インストーラに表示される)とUninstPage(アンインストールプログラムに表示される)があります.また、PageExはページが表示される場所と方法をより柔軟に構成できます.
5.1手順
ページの表示順序は、スクリプト内の場所と一致します.たとえば、
Licenseページ: LicenseText LicenseData LicenseForceSelection
モジュール選択ページ: ComponentTextインストール先ページ: DirText DirVar DirVerifyアンインストールインストールログページ: DetailsButtonText CompletedTextアンインストール確認ページ: DirVar UninstallTextさらに各ページのタイトルはCaptionを使用して を設定する.
5.3ページコールバック関数
各内蔵ページには3つのコールバック関数があります.pre-function show-function leave-functionカスタムページには2つの関数しか含まれていません.1つはページを作成するときのコールバック関数で、もう1つはleave-function(内蔵と同じ)です.次はコールバック関数を使用する例です.
Page:カスタムページ:custom[creator_function][leave_function][caption][/ENABLECANCEL]内蔵ページ:internal_page_type [pre_function] [show_function] [leave_function] [/ENABLECANCEL]
UninstPageカスタムページ:custom[creator_function][leave_function][caption][/ENABLECANCEL]内蔵ページ:internal_page_type [pre_function] [show_function] [leave_function] [/ENABLECANCEL]
1.スクリプトファイル形式
NSISスクリプトファイルの各行はコマンド(Command)と呼ばれ、コマンドのフォーマットはcommand[parameters]であり、例えば
File "myfile"
NSISスクリプトで行コメントとしてセミコロン(;)または井戸番号(#)を使用するか、C言語のコメント/**/を使用してコードをコメントすることもできます.Plugin-inの関数を呼び出す方法plugin::command[parameters],たとえば:
nsExec::Exec "myfile"
パラメータに数字が含まれている場合は、10進数、16進数(0 xで始まる)、または8進数(0で始まる)で表すことができます.色RGB値はhtmlページの色のような表現(16進数を使用しますが、番号は含まれません)を使用します.たとえば、次のようになります.IntCmp 1 0x1 1bl_equal
SetCtlColors $HWND CCCCCC ;CC 、
文字列は引用符で表され、引用符は単一引用符、二重引用符で表されます.変数は$参照を使用し、変数の定義はVarキーを使用します.たとえば
Var MYVAR
StrCpy $MYVAR "myvalue"
2.NSISスクリプトの変数NSISスクリプトの変数の長さは1024文字以内に制限され、すべての変数はグローバルであり、これらの変数はセグメントおよび関数で使用することができる.
2.1ユーザー定義変数
ユーザー定義変数はVarコマンドを使用して定義され、使用時に$の先頭を使用して参照されます.定義された変数はすべてグローバル変数です(関数とセグメントで定義されていても)、関数とセグメントで変数を定義する場合は/GLOBALラベルを付ける必要があります.関数とセグメント以外の定義にはこのような要求はありません.
Var example
Function testVar
Var /GLOBAL example2
StrCpy $example "example value"
StrCpy $example2 "another example value"
FunctionEnd
2.2その他の定義済み変数NSISスクリプトでは、0、1、2、3、4、5、6、7、8、9、R 0、R 1、R 3、R 4、R 5、R 6、R 7、R 8、R 9という20個の変数が定義されており、定義を必要とせず、名前の競合は発生しません.
INstdIRインストールディレクトリ(INstdIRは一般的にStrCpy、ReadRegStr、ReadINIStrなどの関数によって変更されます..onInit関数でインストールプログラムがインストールする場所を特定するためにいくつかの検出を行うことができます)
$OUTDER現在出力されているディレクトリ位置
$CMDLINEインストールパッケージのコマンドラインパラメータ
$LANGUAGE現在使用されている言語、たとえばEnglishは1033です..onInitで変更できます.
2.3定数
PROGRAMFILES PROGRAMFILES 32 PROGRAMFILES 64は、一般にc:ProgramFIlesを指す64ビットコンピュータにおいてPROGRAMFILES 64を用いる
$DESKTOP実行時解析のデスクトップ位置は、一般的にC:WindowsDesktop
${NSISDIR}コンピュータ上のNSISのインストールディレクトリは、NSISインストールのリソースやUIなどを取得するために使用できます.
3.ラベル
NSISスクリプトでは、プログラムの実行プロセスをジャンプするためにGotoを使用することが多く、Gotoの使用にはラベルが必要になります.ラベルはセグメントまたは関数で使用する必要があります.ラベルはローカルの役割ドメインで機能し(グローバルではありません)、ラベルを定義する方法は簡単です.
MyLabel:
ラベルを定義しました.ラベルは特殊な記号と数字の先頭(-,+,!,$,or 0-9)を使用できません.ラベルの先頭のLabelはグローバルなLabelで、任意の関数またはセグメントからこのLabelにジャンプできます(ただし、インストールセグメントからアンインストールセグメントにジャンプすることはできません.逆方向にジャンプすることはできません).4.相対ジャンプ
Labelを使用するジャンプは絶対的です.つまり、ある場所からLabelが指定した位置にジャンプします.それ以外にNSISスクリプトは相対ジャンプをサポートし、一定の行数をジャンプすることができます.+2+3と-2-3のようなスタイルでジャンプします.
5.ページ
各NSISスクリプトには、組み込みページ(built-in Page)であってもよいし、ユーザー定義ページ(nsDialogsまたはInstallOptionsで定義されたページ)であってもよい一連のページが含まれています.
ページには主に2つのタイプがあります.Pageで定義されたページ(インストーラに表示される)とUninstPage(アンインストールプログラムに表示される)があります.また、PageExはページが表示される場所と方法をより柔軟に構成できます.
5.1手順
ページの表示順序は、スクリプト内の場所と一致します.たとえば、
Page license
Page components
Page directory
Page instfiles
UninstPage uninstConfirm
UninstPage instfiles
5.2ページオプションLicenseページ:
モジュール選択ページ:
5.3ページコールバック関数
各内蔵ページには3つのコールバック関数があります.pre-function show-function leave-functionカスタムページには2つの関数しか含まれていません.1つはページを作成するときのコールバック関数で、もう1つはleave-function(内蔵と同じ)です.次はコールバック関数を使用する例です.
Page license skipLicense "" stayInLicense
Page custom customPage "" ": custom page"
Page instfiles
Function skipLicense
MessageBox MB_YESNO "Do you want to skip the license page?" IDNO no
Abort
no:
FunctionEnd
Function stayInLicense
MessageBox MB_YESNO "Do you want to stay in the license page?" IDNO no
Abort
no:
FunctionEnd
Function customPage
GetTempFileName $R0
File /oname=$R0 customPage.ini
InstallOptions::dialog $R0
Pop $R1
StrCmp $R1 "cancel" done
StrCmp $R1 "back" done
StrCmp $R1 "success" done
error: MessageBox MB_OK|MB_ICONSTOP "InstallOptions error:$\r$
$R1"
done:
FunctionEnd
6.ページの定義構文Page:カスタムページ:custom[creator_function][leave_function][caption][/ENABLECANCEL]内蔵ページ:internal_page_type [pre_function] [show_function] [leave_function] [/ENABLECANCEL]
UninstPageカスタムページ:custom[creator_function][leave_function][caption][/ENABLECANCEL]内蔵ページ:internal_page_type [pre_function] [show_function] [leave_function] [/ENABLECANCEL]