NSIS Scriptの概要


NSIS Scriptは、スクリプト言語のような構文規則を使用するNSISパッケージングツールを構成する基礎です.
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ページ:
  • 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 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]