[すべて展開]   [すべて縮小]

イントロダクション

Modern UI は、NSIS インストーラ用のユーザインターフェースに、最近のバージョンの Windows のウィザードに似た モダンウィザードスタイルを 提供します。NSIS コンパイラー自身が提供するベーシックユーザーインターフェースに基づいて、 それをより多くのインターフェースフィーチャーとページで拡張するものです。

NSIS の(インストールコンポーネントやインストールフォルダを選ぶといった)スタンダードなページすべてが、 いくらかの追加ページと同様にサポートされています。"ようこそ"ページは、インストールプロセスへのイントロダクションを提供し、 それに対して、"完了"ページは、セットアップウィザードが閉じられた後に どのステップが実行されるべきか (例えば、アプリケーションがすぐに起動されるかどうか)をユーザーに決定させる手段を提供します。"完了"ページは、 コンピュータの再起動が必要かを尋ねる為にもよく使われてきました。

Open/Close section スクリーンショット

Modern UI 2.0

この新しいバージョンは、ページのカスタマイズを より容易にします。なぜなら、 スタンダードな NSIS ページを変更するのと同じ手法が、Modern UI によって提供される 追加ページに同様に 用いられるからです。現在 その他の NSIS プラグインに関しても、 Modern UI に新しいページを追加する事が可能です。この使用例も用意する予定です。

"ようこそ"と"完了"ページはもう、InstallOptions で実装されていません。代わりに、 新しい nsDialogs プラグインが 用いられています。nsDialogs は、カスタムページを作ったり、 スクリプトから直接に既存のページをカスタマイズする事を 可能にします。

Modern UI 1.8 スクリプトをアップグレードさせるには、以下を行って下さい:

  • MUI.nsh ヘッダーファイルの代わりに MUI2.nsh を挿入する。
  • InstallOptions 用のマクロは、Modern UI とは関係ない 分離したヘッダーファイルへ移動されました。
    もし、まだカスタムページに InstallOptions を使っているなら、InstallOptions.nsh を挿入して、
    MUI_INSTALLOPTIONS_* マクロの代わりに INSTALLOPTIONS_* マクロを使って下さい。 マクロ自体は、同じままです。
  • InstallOptions INI ファイルが用いられていた Modern UI 1.8 の"ようこそ"と"完了"ページの カスタマイズコードは、書き直して下さい。代わりに nsDialogs コマンドが 用いられるべきです。
  • すべてのテキストで、特殊文字をエスケープするには NSIS のスタンダードな手法を用いて下さい。 例えば、$\r$\n で改行します。

スクリプト ヘッダ

Modern UI の設定は、スクリプトファイルの始めに挿入されていなければなりません。 下にある項目群と「同じ順序に従う」事が重要です。例えば、インターフェース設定はあなたがページを挿入する前に 定義されていなければなりません。なぜなら、ページはインターフェース構成に依存しているからです。 これが実際のスクリプトファイルでどのようになされているかを見るには、スクリプトの例を 見るのが役に立つかもしれません。

パラメーターはこのフォーマットで与えられます: 必須のもの (オプション1 | オプション2) [任意のもの]

1. ヘッダーファイル

まず最初に スクリプトのトップに、Modern UI をインクルードする為 この行を加えて下さい:

!include "MUI2.nsh"

2. インターフェース構成

では、インターフェース設定を使ってインストーラーのルック&フィールを変えてみたいでしょう。 これらの設定はすべてのページに適用します。

NSIS コンパイラー自身が提供する(LicenseText、Icon、CheckBitmap、InstallColorsといった)インターフェース設定は、 Modern UI スクリプトでは用いられるべきではありません。Modern UIは、これらの設定と同等 あるいは拡張されたバージョンのものを提供しています。

例:

!define MUI_COMPONENTSPAGE_SMALLDESC ;値を与えない
!define MUI_UI "myUI.exe" ;値 1つ
!define MUI_INSTFILESPAGE_COLORS "FFFFFF 000000" ;値 2つ

Open/Close section インターフェース設定

Open/Close section ページヘッダー

MUI_ICON icon_file
インストーラー用アイコン。
Default: ${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico

MUI_UNICON icon_file
アンインストーラー用アイコン。
Default: ${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico

MUI_HEADERIMAGE
ページのヘッダーに画像を表示する。

MUI_HEADERIMAGE_BITMAP bmp_file
インストーラーのページのヘッダーで表示するビットマップイメージ(推奨サイズ:150x57ピクセル)。
Default: ${NSISDIR}\Contrib\Graphics\Header\nsis.bmp

MUI_HEADERIMAGE_BITMAP_NOSTRETCH
インストーラーヘッダービットマップをフィールドのサイズにフィットするようには 伸ばさない。 このオプションは、スペース全部を使わない画像を使用する時にだけ使って下さい。 もしもちょうどフィットするフルサイズビットマップを持っていれば、 ユーザーがカスタム DPI 設定を使っている時に フィールドサイズが異なってくるので、このオプションを使わないで下さい。

MUI_HEADERIMAGE_BITMAP_RTL bmp_file
右から左へ書く言語を使っている時で、あとは上と同じ。
Default: Non-RTL bitmap

MUI_HEADERIMAGE_BITMAP_RTL_NOSTRETCH
右から左へ書く言語を使っている時で、あとは上と同じ。

MUI_HEADERIMAGE_UNBITMAP bmp_file
アンインストーラーのページのヘッダーで表示するビットマップイメージ(推奨サイズ:150x57ピクセル)。
Default: Installer header bitmap

MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH
アンインストーラーヘッダービットマップをフィールドのサイズにフィットするようには 伸ばさない。 このオプションは、スペース全部を使わない画像を使用する時にだけ使って下さい。 もしもちょうどフィットするフルサイズビットマップを持っていれば、 ユーザーがカスタム DPI 設定を使っている時に フィールドサイズが異なってくるので、このオプションを使わないで下さい。

MUI_HEADERIMAGE_UNBITMAP_RTL bmp_file
右から左へ書く言語を使っている時で、あとは上と同じ。
Default: Installer RTL header bitmap

MUI_HEADERIMAGE_UNBITMAP_RTL_NOSTRETCH
右から左へ書く言語を使っている時で、あとは上と同じ。

MUI_HEADERIMAGE_RIGHT
ヘッダーイメージを左寄せの代わりに右寄せで表示する (右から左へ書く言語を使っている時は、右寄せの代わりに左寄せで表示する)。

MUI_BGCOLOR (色: RRGGBB 16進数)
ヘッダーの背景色、"ようこそ"ページと"完了"ページ。
Default: FFFFFF

MUI_HEADER_TRANSPARENT_TEXT
ヘッダーのラベルコントロールの背景を、透明に設定する。 より大きなヘッダーイメージをセットするカスタム ユーザーインターフェースで役に立ちます。

Open/Close section インターフェース リソース

MUI_UI ui_file
ダイアログリソースを持つインターフェースファイル。もし自分でカスタマイズしたUIを作ったら、 これを変更して下さい。
Default: ${NSISDIR}\Contrib\UIs\modern.exe

MUI_UI_HEADERIMAGE ui_file
ビットマップコントロールとヘッダービットマップ用スペースを含むダイアログリソース IDD_INST を持つ インターフェースファイル。
Default: ${NSISDIR}\Contrib\UIs\modern_headerbmp.exe

MUI_UI_HEADERIMAGE_RIGHT ui_file
右寄せでビットマップコントロールとヘッダービットマップ用スペースを含むダイアログリソース IDD_INST を持つ インターフェースファイル。
Default: ${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe

MUI_UI_COMPONENTSPAGE_SMALLDESC ui_file
小さなデスクリプション領域を持つカスタマイズされたダイアログリソース IDD_SELCOM を持つインターフェースファイル。
Default: ${NSISDIR}\Contrib\UIs\modern_smalldesc.exe

MUI_UI_COMPONENTSPAGE_NODESC ui_file
デスクリプション領域を持たないカスタマイズされたダイアログリソース IDD_SELCOM を持つインターフェースファイル。
Default: ${NSISDIR}\Contrib\UIs\modern_nodesc.exe

Open/Close section インストーラー "ようこそ"/"完了" ページ

MUI_WELCOMEFINISHPAGE_BITMAP bmp_file
"ようこそ"ページと"完了"ページ用ビットマップ(推奨サイズ:164x314ピクセル)。
Default: ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp

MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
"ようこそ"ページと"完了"ページ用ビットマップをフィールドのサイズにフィットするようには 伸ばさない。 このオプションは、スペース全部を使わない画像を使用する時にだけ使って下さい。 もしもちょうどフィットするフルサイズビットマップを持っていれば、 ユーザーがカスタム DPI 設定を使っている時に フィールドサイズが異なってくるので、このオプションを使わないで下さい。

Open/Close section アンインストーラー "ようこそ"/"完了" ページ

MUI_UNWELCOMEFINISHPAGE_BITMAP bmp_file
"ようこそ"ページと"完了"ページ用ビットマップ(推奨サイズ:164x314ピクセル)。
Default: ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp

MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH
"ようこそ"ページと"完了"ページ用ビットマップをフィールドのサイズにフィットするようには 伸ばさない。 このオプションは、スペース全部を使わない画像を使用する時にだけ使って下さい。 もしもちょうどフィットするフルサイズビットマップを持っていれば、 ユーザーがカスタム DPI 設定を使っている時に フィールドサイズが異なってくるので、このオプションを使わないで下さい。

Open/Close section ライセンス契約書 ページ

MUI_LICENSEPAGE_BGCOLOR (/windows | /grey | (色: RRGGBB 16進数))
ライセンス契約書テキストボックス用背景色。Windows の背景色(通常 白)を使うには /windows を用いて下さい。 グレーにするには /grey を用いて下さい。
Default: /windows

Open/Close section コンポーネント ページ

MUI_COMPONENTSPAGE_CHECKBITMAP bitmap_file
コンポーネント選択ツリービューのチェックのためのイメージを持つビットマップ。
Default: ${NSISDIR}\Contrib\Graphics\Checks\modern.bmp

MUI_COMPONENTSPAGE_SMALLDESC
ページ下部での小さなデスクリプション領域。たくさんのセクションが在って、多くのデスクリプションを必要としないなら このレイアウトを使って下さい。

MUI_COMPONENTSPAGE_NODESC
デスクリプション領域なし。

Open/Close section ディレクトリー ページ

MUI_DIRECTORYPAGE_BGCOLOR (色: RRGGBB 16進数)
ディレクトリーテキストボックス用背景色。

Open/Close section スタートメニューフォルダー ページ

MUI_STARTMENUPAGE_BGCOLOR (色: RRGGBB 16進数)
スタートメニューリストとテキストボックス用背景色。

Open/Close section インストール ページ

MUI_INSTFILESPAGE_COLORS (/windows | "(フォアグラウンド色: RRGGBB 16進数) (背景色: RRGGBB 16進数)")
詳細画面の色。デフォルトの Windows の色を使うには /windows を使って下さい。
Default: /windows

MUI_INSTFILESPAGE_PROGRESSBAR ("" | colored | smooth)
プログレスバーのスタイル。Colored を指定すると MUI_INSTALLCOLORS を使います。
Default: smooth

Open/Close section インストーラー "完了" ページ

MUI_FINISHPAGE_NOAUTOCLOSE
ユーザーがインストールログを確認できるように、"完了"ページへ自動的にジャンプしない。

Open/Close section アンインストーラー "完了" ページ

MUI_UNFINISHPAGE_NOAUTOCLOSE
ユーザーがアンインストールログを確認できるように、"完了"ページへ自動的にジャンプしない。

Open/Close section 中止の警告

MUI_ABORTWARNING
ユーザーがインストーラーを閉じようとした時、警告のメッセージボックスを表示する。

MUI_ABORTWARNING_TEXT text
中止の警告メッセージボックスで表示するテキスト。

MUI_ABORTWARNING_CANCEL_DEFAULT
メッセージボックスで キャンセルボタンをデフォルトボタンに設定する。

Open/Close section アンインストーラーの 中止の警告

MUI_UNABORTWARNING
ユーザーがアンインストーラーを閉じようとした時、警告のメッセージボックスを表示する。

MUI_UNABORTWARNING_TEXT text
中止の警告メッセージボックスで表示するテキスト。

MUI_UNABORTWARNING_CANCEL_DEFAULT
メッセージボックスで キャンセルボタンをデフォルトボタンに設定する。

3. ページ

使いたいページをセットするために、以下のマクロを挿入して下さい。 ページは、あなたがスクリプト中に挿入した順で出て来ます。 マクロの間にカスタムページコマンドを挿入して、カスタムページを追加する事もできます。

一定のタイプの複合的なページを追加する事もできます(例えば、複数のフォルダーを指定してほしいとか)。

例:

!insertmacro MUI_PAGE_LICENSE "License.rtf"
!insertmacro MUI_PAGE_COMPONENTS

Var StartMenuFolder
!insertmacro MUI_PAGE_STARTMENU "Application" $StartMenuFolder

スタートメニューフォルダー マクロを用いている時には、スタートメニューフォルダー ページのために ページID が必要です。フォルダー名は、指定された変数に保存されます。

インストーラー ページ
MUI_PAGE_WELCOME
MUI_PAGE_LICENSE textfile
MUI_PAGE_COMPONENTS
MUI_PAGE_DIRECTORY
MUI_PAGE_STARTMENU ページID変数
MUI_PAGE_INSTFILES
MUI_PAGE_FINISH

アンインストーラー ページ
MUI_UNPAGE_WELCOME
MUI_UNPAGE_CONFIRM
MUI_UNPAGE_LICENSE textfile
MUI_UNPAGE_COMPONENTS
MUI_UNPAGE_DIRECTORY
MUI_UNPAGE_INSTFILES
MUI_UNPAGE_FINISH

Open/Close section ページ設定

ページ設定は単一のページに適用し、ページマクロを挿入する前に設定されなければなりません。 インストーラーとアンインストーラーのページで、同じ設定を用いる事ができます。 複数のページに適用したいならば、設定を繰り返さなければいけません。例:

;ユーザーにプラグインフォルダーを指定して貰う為に ディレクトリーページを追加する
;フォルダー名を $PluginsFolder に保存する

Var PluginsFolder
!define MUI_DIRECTORYPAGE_VARIABLE $PluginsFolder
!insertmacro MUI_PAGE_DIRECTORY

ユーザーインターフェースでのスタンダードなテキストは全て 言語ファイルからロードされ、 それらは NSIS によりサポートされている全ての言語で利用可能です。だから、デフォルトから 変更したいものについてのみ 定義する必要があります。

もしも、パラメーターが各言語で異なるテキストであるなら、LangString を用いて その言語の文字列を定義して、値として $(LangStringName) を使って下さい。 複数の言語でのライセンス契約書テキストについては、LicenseLangString を使う事ができます。 複数言語でのインストーラーについて より情報を得るには、NSIS ユーザーズマニュアルを 参照して下さい。

全てのテキスト設定で、次の形でダブルクォート(")をエスケープする事ができます: $\"

Open/Close section 全般的なページ設定

MUI_PAGE_HEADER_TEXT text
ページのヘッダーで表示するテキスト。

MUI_PAGE_HEADER_SUBTEXT text
ページのヘッダーで表示するサブテキスト。

Open/Close section "ようこそ"ページ設定

MUI_WELCOMEPAGE_TITLE title
ページのトップで表示するタイトル。

MUI_WELCOMEPAGE_TITLE_3LINES
タイトルエリアでのエクストラスペース。

MUI_WELCOMEPAGE_TEXT text
ページで表示するテキスト。

Open/Close section ライセンス契約書 ページ設定

MUI_LICENSEPAGE_TEXT_TOP text
ページのトップで表示するテキスト。

MUI_LICENSEPAGE_TEXT_BOTTOM text
ページ下部で表示するテキスト。

MUI_LICENSEPAGE_BUTTON button_text
'I Agree' ボタンで表示するテキスト。

MUI_LICENSEPAGE_CHECKBOX
チェックボックスを表示して、ライセンス条件への同意を確認する。

MUI_LICENSEPAGE_CHECKBOX_TEXT text
ライセンス条件への同意を確認するチェックボックスの横に表示するテキスト。

MUI_LICENSEPAGE_RADIOBUTTONS
ライセンス条件に同意するかどうかを選ぶ為のラジオボタンを2つ表示する。

MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT text
ライセンス条件に同意するラジオボタンの横に表示するテキスト。

MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE text
ライセンス条件に同意しないラジオボタンの横に表示するテキスト。

Open/Close section コンポーネント ページ設定

MUI_COMPONENTSPAGE_TEXT_TOP text
ページのトップで表示するテキスト。

MUI_COMPONENTSPAGE_TEXT_COMPLIST text
コンポーネントリストの横に表示するテキスト。

MUI_COMPONENTSPAGE_TEXT_INSTTYPE text
インストールタイプ コンボボックスの横に表示するテキスト。

MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE text
デスクリプション ボックスのトップで表示するテキスト。

MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO text
どのセクションも選択されていない時に、デスクリプション ボックスの中に表示するテキスト。

Open/Close section ディレクトリー ページ設定

MUI_DIRECTORYPAGE_TEXT_TOP text
ページのトップで表示するテキスト。

MUI_DIRECTORYPAGE_TEXT_DESTINATION text
デスティネーション フォルダー フレームで表示するテキスト。

MUI_DIRECTORYPAGE_VARIABLE variable
選択されたフォルダー名を保存する変数。
Default: $INSTDIR

MUI_DIRECTORYPAGE_VERIFYONLEAVE
フォルダー選択が不適切でも 'Next' ボタンを無効にせず、ファンクションを抜ける時に GetInstDirError を処理させる。

Open/Close section スタートメニューフォルダー ページ設定

MUI_STARTMENUPAGE_TEXT_TOP text
ページのトップで表示するテキスト。

MUI_STARTMENUPAGE_TEXT_CHECKBOX text
スタートメニューフォルダー作成を無効にするチェックボックスの横に表示するテキスト。

MUI_STARTMENUPAGE_DEFAULTFOLDER folder
デフォルトのスタートメニューフォルダー。

MUI_STARTMENUPAGE_NODISABLE
スタートメニューショートカットの作成を無効にするチェックボックスを表示しない。

MUI_STARTMENUPAGE_REGISTRY_ROOT root
MUI_STARTMENUPAGE_REGISTRY_KEY key
MUI_STARTMENUPAGE_REGISTRY_VALUENAME value_name
スタートメニューフォルダー名を保存するレジストリーキー。ページで、ユーザーの環境設定を 読み出すために使います。アンインストーラーでスタートメニューフォルダーを削除する為にも 使用すべきです。アンインストール時にこのキーを削除する事を忘れないで下さい。

アンインストーラーでは、スタートメニューフォルダー名を得るために MUI_STARTMENU_GETFOLDERマクロを 使って下さい:

!insertmacro MUI_STARTMENU_GETFOLDER page_id $R0
  Delete "$SMPROGRAMS\$R0\Your Shortcut.lnk"

Open/Close section インストール ページ設定

MUI_INSTFILESPAGE_FINISHHEADER_TEXT text
インストールが完了した時にインストール ページのヘッダーに表示するテキスト。
(MUI_(UN)FINISHPAGE_NOAUTOCLOSE無しで"完了"ページを用いている時には表示されません)

MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT text
インストールが完了した時にインストール ページのヘッダーに表示するサブテキスト。
(MUI_(UN)FINISHPAGE_NOAUTOCLOSE無しで"完了"ページを用いている時には表示されません)

MUI_INSTFILESPAGE_ABORTHEADER_TEXT text
インストールが中止された時にインストール ページのヘッダーに表示するテキスト。

MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT text
インストールが中止された時にインストール ページのヘッダーに表示するサブテキスト。

Open/Close section "完了"ページ設定

MUI_FINISHPAGE_TITLE title
ページのトップで表示するタイトル。

MUI_FINISHPAGE_TITLE_3LINES
タイトルエリアでのエクストラスペース。

MUI_FINISHPAGE_TEXT text
ページで表示するテキスト。

MUI_FINISHPAGE_TEXT_LARGE
テキストエリアでのエクストラスペース。(もしチェックボックスを使っているなら)

MUI_FINISHPAGE_BUTTON text
'Finish' ボタンに表示するテキスト。

MUI_FINISHPAGE_CANCEL_ENABLED
ユーザーが "完了"ページに表示されている どのオプションもスキップできるように、 キャンセルボタンを有効にする。

MUI_FINISHPAGE_TEXT_REBOOT text
コンピュータの再起動について尋ねている時に "完了"ページで表示するテキスト。

MUI_FINISHPAGE_TEXT_REBOOTNOW text
'Reboot now' オプションボタンの横に表示するテキスト。

MUI_FINISHPAGE_TEXT_REBOOTLATER text
'Reboot later' オプションボタンの横に表示するテキスト。

MUI_FINISHPAGE_REBOOTLATER_DEFAULT
'Reboot later' オプションをデフォルトオプションに設定する。

MUI_FINISHPAGE_RUN exe_file
チェックボックスを用いて実行を選択可能にするアプリケーション。ファイル名にスペースを含んでいても クォートで括る必要はありません。

MUI_FINISHPAGE_RUN_TEXT text
'Run program' チェックボックスの横に表示するテキスト。

MUI_FINISHPAGE_RUN_PARAMETERS parameters
実行するアプリケーションのパラメーター。値の中ではダブルクォートをエスケープする事を 忘れないで下さい。( $\" を使って下さい)

MUI_FINISHPAGE_RUN_NOTCHECKED
デフォルトで 'Run program' チェックボックスをチェックしない。

MUI_FINISHPAGE_RUN_FUNCTION function
アプリケーションを実行する代わりにファンクションを呼び出す(パラメーター無しで MUI_FINISHPAGE_RUN を 定義して下さい)。複数のアプリケーションを実行する為にファンクションを使ったり、チェックボックス名を変更して 他の事にそれを使う事もできます。

MUI_FINISHPAGE_SHOWREADME file/url
チェックボックスを用いて ユーザーが見る事を選べるファイルかウェブサイト。 ファイル名にスペースを含んでいても クォートで括る必要はありません。

MUI_FINISHPAGE_SHOWREADME_TEXT text
'Show Readme' チェックボックスの横に表示するテキスト。

MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
デフォルトで 'Show Readme' チェックボックスをチェックしない。

MUI_FINISHPAGE_SHOWREADME_FUNCTION function
ファイルを表示する代わりにファンクションを呼び出す(パラメーター無しで MUI_FINISHPAGE_SHOWREADME を 定義して下さい)。複数のファイルを表示する為にファンクションを使ったり、チェックボックス名を変更して 他の事にそれを使う事もできます。

MUI_FINISHPAGE_LINK link_text
ウェブサイトかファイルを見る為にクリックする事ができるリンクのテキスト。

MUI_FINISHPAGE_LINK_LOCATION url/file
リンクを用いて ユーザーが見る事を選べるウェブサイトかファイル。 ファイル名にスペースを含んでいても クォートで括る必要はありません。

MUI_FINISHPAGE_LINK_COLOR (色: RRGGBB 16進数)
"完了"ページ上のリンクのテキスト色。
Default: 000080

MUI_FINISHPAGE_NOREBOOTSUPPORT
コンピューターの再起動を許可するページのサポートを無効にする。
もし /REBOOTOK フラグや SetRebootFlag を使っていないなら スペースをいくらか セーブする為にこのオプションを定義して下さい。

Open/Close section アンインストール確認ページ設定

MUI_UNCONFIRMPAGE_TEXT_TOP text
ページのトップで表示するテキスト。

MUI_UNCONFIRMPAGE_TEXT_LOCATION text
アンインストール ロケーション テキストボックスの横に表示するテキスト。

4. 言語ファイル

インクルードしたい言語の Modern UI 言語ファイルを挿入して下さい。

!insertmacro MUI_LANGUAGE "Japanese"

スタンダードな NSIS 言語ファイルは 自動的にロードされます。LoadLanguageFile を 使う必要はありません。

5. リザーブ ファイル

もしソリッド圧縮を使っているなら、実際のインストールの前に要求されるファイルが まずデータブロック中に保存されなければなりません。なぜなら、これがインストーラーの起動を 早くするからです。そういったファイルの為に セクションやファンクションの前に リザーブファイルコマンドを インクルードして下さい:

ReserveFile MyPlugin.dll
!insertmacro MUI_RESERVEFILE_LANGDLL ;言語選択ダイアログ
...

各ページのスクリプトコード

いくつかのページは、追加情報の表示を可能にしたり、ユーザー入力を得るために使われてきました。 ここに、これらの特徴を使用するスクリプトコードがあります。

コンポーネント ページのデスクリプション

Modern UI コンポーネント ページは、ユーザーがマウスを コンポーネント上に持ってきた時に
表示されるデスクリプションのテキストボックスを持っています。もし これらのデスクリプションを
使いたくなければ、MUI_COMPONENTSPAGE_NODESC インターフェース設定を挿入して下さい。

セクションにデスクリプションを設定するには、追加パラメーターがセクションコマンドに 加えられなければなりません。それは、そのセクション用ユニークIDです。この名前はあとで、 そのセクション用デスクリプションを設定するのに使われます。

Section "Section Name 1" Section1
   ...
SectionEnd

セクション定義の後で、デスクリプションをセットするのにこれらのマクロを使って下さい:

LangString DESC_Section1 ${LANG_JAPANESE} "セクション1のデスクリプション。"
LangString DESC_Section2 ${LANG_JAPANESE} "セクション2のデスクリプション。"

!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  !insertmacro MUI_DESCRIPTION_TEXT ${Section1} $(DESC_Section1)
  !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
!insertmacro MUI_FUNCTION_DESCRIPTION_END

アンインストーラーでは、
MUI_UNFUNCTION_DESCRIPTION_BEGIN と MUI_UNFUNCTION_DESCRIPTION_END のマクロを使って下さい。

スタートメニューフォルダー

MUI_STARTMENU_WRITE_BEGIN と MUI_STARTMENU_WRITE_END マクロの間に、
( CreateShortcut を使って)ショートカットを書くコードを置いて下さい:

!insertmacro MUI_STARTMENU_WRITE_BEGIN pageid
  ...ショートカット作成...
!insertmacro MUI_STARTMENU_WRITE_END

ページIDは、ショートカットを作成する為にフォルダーが選択されたページのIDであるべきです。

フォルダーとページIDを含む変数がページマクロのパラメーターとしてセットされています。

言語選択ダイアログ

もし インストーラーに言語選択ダイアログを表示させたければ (例 MultiLanguage.nsi 参照)、
.onInit ファンクションで MUI_LANGDLL_DISPLAY マクロを挿入して下さい:

Function .onInit

  !insertmacro MUI_LANGDLL_DISPLAY

FunctionEnd

このマクロは un.onInit ファンクションでも用いられます。

Open/Close section 選択された言語のレジストリーストレージ用設定

ユーザーの環境設定を読み込むために、レジストリーキーを定義する事ができます。 これらの定義は、インストールページマクロを挿入する前に設定されるべきです。

MUI_LANGDLL_REGISTRY_ROOT root
MUI_LANGDLL_REGISTRY_KEY key
MUI_LANGDLL_REGISTRY_VALUENAME value_name
言語名を保存するレジストリーキー。ユーザーの環境設定が読み込まれます。 アンインストーラーを正しい言語で表示する為にも用いられます。 アンインストーラーでこのキーを削除するのを忘れないで下さい。

アンインストーラーでは、un.onInit ファンクションで MUI_UNGETLANGUAGE マクロを挿入して 保存された言語設定を読み込んで下さい:

Function un.onInit

  !insertmacro MUI_UNGETLANGUAGE

FunctionEnd

Open/Close section 選択ダイアログ用インターフェース設定

言語選択ダイアログ インターフェースをカスタマイズするには、MUI_LANGDLL_DISPLAY マクロを挿入する前に これらの定義を用いて下さい。

MUI_LANGDLL_WINDOWTITLE text
言語選択ダイアログのウィンドウ タイトル。

MUI_LANGDLL_INFO text
言語選択ダイアログで表示するテキスト。

MUI_LANGDLL_ALWAYSSHOW
言語名がレジストリーに保存されていても、常に言語選択ダイアログを表示する。 レジストリーに保存されている言語名が デフォルトで選択されています。

MUI_LANGDLL_ALLLANGUAGES
利用可能な言語をすべて 常に表示する。コードページによるフィルターをかけない。

カスタムページ

もし インストーラーにカスタムページを追加したいなら、ページマクロの間に あなた自身の ページコマンドを挿入する事ができます。

!insertmacro MUI_PAGE_WELCOME
Page custom FunctionName ;カスタム ページ
!insertmacro MUI_PAGE_COMPONENTS
 
;アンインストーラー
!insertmacro MUI_UNPAGE_CONFIRM
UninstPage custom un.FunctionName ;カスタム ページ
!insertmacro MUI_UNPAGE_INSTFILES

ページ ファンクションで ページヘッダのテキストを設定するには、MUI_HEADER_TEXT マクロを使って下さい:

LangString PAGE_TITLE ${LANG_JAPANESE} "タイトル"
LangString PAGE_SUBTITLE ${LANG_JAPANESE} "サブタイトル"

Function CustomPageFunction
  !insermacro MUI_HEADER_TEXT $(PAGE_TITLE) $(PAGE_SUBTITLE)
  ...
FuctionEnd

カスタムファンクション

NSIS により提供される .onGUIInit ファンクションのようなインターフェース ファンクションとページ ファンクションは、 Modern UI によって自動的にインクルードされて、新しいインターフェースフィーチャーを サポートするコードで満たされています。もし これらのファンクションに追加コードを加えたいなら、 Modern UI ファンクションが呼び出すスクリプト中で、カスタムスクリプトを持つファンクションを作成して下さい。

例:

!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit

Function myGUIInit
  ...
FunctionEnd

Modern UI ページは、カスタム ファンクションを用いてカスタマイズする事もできます。

Open/Close section 全般的なカスタム ファンクション

これらの定義は 言語マクロを挿入する前に設定されるべきです。

MUI_CUSTOMFUNCTION_GUIINIT function
MUI_CUSTOMFUNCTION_UNGUIINIT function
MUI_CUSTOMFUNCTION_ABORT function
MUI_CUSTOMFUNCTION_UNABORT function
MUI_CUSTOMFUNCTION_ONMOUSEOVERSECTION function
MUI_CUSTOMFUNCTION_UNONMOUSEOVERSECTION function

ファンクションの上にマウスを乗せた時のデスクリプションは、 マクロ (MUI_FUNCTION_DESCRIPTION_BEGIN) が用いられた時にだけ利用可能です。 コンポーネントページのデスクリプションが使われていない時には、
通常の .onMouseOverSection と un.onMouseOverSection が使用されなければなりません。

Open/Close section ページカスタム ファンクション

これらの定義は ページマクロを挿入する前に設定されるべきです。

MUI_PAGE_CUSTOMFUNCTION_PRE function
MUI_PAGE_CUSTOMFUNCTION_SHOW function
MUI_PAGE_CUSTOMFUNCTION_LEAVE function

pre ファンクションが最初に呼ばれ、変数を初期化したり、ページがスキップされるかどうかを 決める事ができます。次に shown ファンクションが呼ばれ、インターフェースをカスタマイズするのに 使う事ができます。最後に、leave ファンクションでユーザー入力を確認できます。 NSIS ユーザーズ マニュアルが、これらのファンクションについて より多くの情報を提供しています。

shown ファンクションでは、ページ上の全てのコントロールのウィンドウハンドルが、 Modern UI 変数から取得する事ができます。変数名のリストはまだ利用できません。 現在は、Modern UI 2.0 のソースファイルを参照して下さい。変数定義は、 特定ページのヘッダーファイルの最初の行で見つけられます。

スクリプトの例

ベーシック: Basic.nsi
"ようこそ"/"完了" ページ: WelcomeFinish.nsi
多言語: MultiLanguage.nsi
ヘッダー イメージ: HeaderBitmap.nsi
スタートメニューフォルダー ページ: StartMenu.nsi

クレジット

著者: Joost Verburg.
アイコンデザイン: Nikos Adamamas, aka adni18.
aka KiCHiK ( NSIS における彼の功績が Modern UI を可能にした)、Amir Szekely に感謝する。

ライセンス

Modern UI に zlib/libpng ライセンスを適用します。

Open/Close section ライセンス条件

Copyright © 2002-2008 Joost Verburg

This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; 
   you must not claim that you wrote the original software.
   If you use this software in a product, an acknowledgment in the
   product documentation would be appreciated but is not required.
2. Altered versions must be plainly marked as such,
   and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any distribution.

このソフトウェアは「あるがまま」提供され、いかなる明示的・黙示的保証も致しません。
このソフトウェアに起因するどのようなダメージも、作者は責任を持ちません。

以下の制限を条件として、このソフトウェアを 誰がどのような目的で使用しても構いません。
商業アプリケーションに含んでも構いません。改変や再配布も自由です。

1. このソフトウェアの素姓を誤り伝えないで下さい。すなわち、あなたがオリジナルであると
   主張しないで下さい。もし このソフトウェアを製品中で使うなら、製品ドキュメント内の謝辞に
   記す事になるでしょう。しかし、必須ではありません。
2. 改変されたバージョンは明白にそのように記し、オリジナルであるとは誤表記しないで下さい。
3. この告示は、どんな配布であっても削除したり改変しないで下さい。