イントロダクションModern UI は、NSIS インストーラ用のユーザインターフェースに、最近のバージョンの Windows のウィザードに似た モダンウィザードスタイルを 提供します。NSIS コンパイラー自身が提供するベーシックユーザーインターフェースに基づいて、 それをより多くのインターフェースフィーチャーとページで拡張するものです。 NSIS の(インストールコンポーネントやインストールフォルダを選ぶといった)スタンダードなページすべてが、 いくらかの追加ページと同様にサポートされています。"ようこそ"ページは、インストールプロセスへのイントロダクションを提供し、 それに対して、"完了"ページは、セットアップウィザードが閉じられた後に どのステップが実行されるべきか (例えば、アプリケーションがすぐに起動されるかどうか)をユーザーに決定させる手段を提供します。"完了"ページは、 コンピュータの再起動が必要かを尋ねる為にもよく使われてきました。 スクリーンショット
Modern UI 2.0この新しいバージョンは、ページのカスタマイズを より容易にします。なぜなら、 スタンダードな NSIS ページを変更するのと同じ手法が、Modern UI によって提供される 追加ページに同様に 用いられるからです。現在 その他の NSIS プラグインに関しても、 Modern UI に新しいページを追加する事が可能です。この使用例も用意する予定です。 "ようこそ"と"完了"ページはもう、InstallOptions で実装されていません。代わりに、 新しい nsDialogs プラグインが 用いられています。nsDialogs は、カスタムページを作ったり、 スクリプトから直接に既存のページをカスタマイズする事を 可能にします。 Modern UI 1.8 スクリプトをアップグレードさせるには、以下を行って下さい:
スクリプト ヘッダ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つ インターフェース設定ページヘッダー
MUI_ICON icon_file
MUI_UNICON icon_file
MUI_HEADERIMAGE
MUI_HEADERIMAGE_BITMAP bmp_file
MUI_HEADERIMAGE_BITMAP_NOSTRETCH
MUI_HEADERIMAGE_BITMAP_RTL bmp_file
MUI_HEADERIMAGE_BITMAP_RTL_NOSTRETCH
MUI_HEADERIMAGE_UNBITMAP bmp_file
MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH
MUI_HEADERIMAGE_UNBITMAP_RTL bmp_file
MUI_HEADERIMAGE_UNBITMAP_RTL_NOSTRETCH
MUI_HEADERIMAGE_RIGHT
MUI_BGCOLOR (色: RRGGBB 16進数)
MUI_HEADER_TRANSPARENT_TEXT インターフェース リソース
MUI_UI ui_file
MUI_UI_HEADERIMAGE ui_file
MUI_UI_HEADERIMAGE_RIGHT ui_file
MUI_UI_COMPONENTSPAGE_SMALLDESC ui_file
MUI_UI_COMPONENTSPAGE_NODESC ui_file インストーラー "ようこそ"/"完了" ページ
MUI_WELCOMEFINISHPAGE_BITMAP bmp_file
MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH アンインストーラー "ようこそ"/"完了" ページ
MUI_UNWELCOMEFINISHPAGE_BITMAP bmp_file
MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH ライセンス契約書 ページ
MUI_LICENSEPAGE_BGCOLOR (/windows | /grey | (色: RRGGBB 16進数)) コンポーネント ページ
MUI_COMPONENTSPAGE_CHECKBITMAP bitmap_file
MUI_COMPONENTSPAGE_SMALLDESC
MUI_COMPONENTSPAGE_NODESC ディレクトリー ページ
MUI_DIRECTORYPAGE_BGCOLOR (色: RRGGBB 16進数) スタートメニューフォルダー ページ
MUI_STARTMENUPAGE_BGCOLOR (色: RRGGBB 16進数) インストール ページ
MUI_INSTFILESPAGE_COLORS
(/windows | "(フォアグラウンド色: RRGGBB 16進数) (背景色: RRGGBB 16進数)")
MUI_INSTFILESPAGE_PROGRESSBAR (""
| colored | smooth) インストーラー "完了" ページ
MUI_FINISHPAGE_NOAUTOCLOSE アンインストーラー "完了" ページ
MUI_UNFINISHPAGE_NOAUTOCLOSE 中止の警告
MUI_ABORTWARNING
MUI_ABORTWARNING_TEXT text
MUI_ABORTWARNING_CANCEL_DEFAULT アンインストーラーの 中止の警告
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 が必要です。フォルダー名は、指定された変数に保存されます。
インストーラー ページ
アンインストーラー ページ ページ設定ページ設定は単一のページに適用し、ページマクロを挿入する前に設定されなければなりません。 インストーラーとアンインストーラーのページで、同じ設定を用いる事ができます。 複数のページに適用したいならば、設定を繰り返さなければいけません。例: ;ユーザーにプラグインフォルダーを指定して貰う為に ディレクトリーページを追加する ;フォルダー名を $PluginsFolder に保存する Var PluginsFolder !define MUI_DIRECTORYPAGE_VARIABLE $PluginsFolder !insertmacro MUI_PAGE_DIRECTORY
ユーザーインターフェースでのスタンダードなテキストは全て 言語ファイルからロードされ、 それらは NSIS によりサポートされている全ての言語で利用可能です。だから、デフォルトから 変更したいものについてのみ 定義する必要があります。 もしも、パラメーターが各言語で異なるテキストであるなら、LangString を用いて その言語の文字列を定義して、値として $(LangStringName) を使って下さい。 複数の言語でのライセンス契約書テキストについては、LicenseLangString を使う事ができます。 複数言語でのインストーラーについて より情報を得るには、NSIS ユーザーズマニュアルを 参照して下さい。 全てのテキスト設定で、次の形でダブルクォート(")をエスケープする事ができます: $\" 全般的なページ設定
MUI_PAGE_HEADER_TEXT text
MUI_PAGE_HEADER_SUBTEXT text "ようこそ"ページ設定
MUI_WELCOMEPAGE_TITLE title
MUI_WELCOMEPAGE_TITLE_3LINES
MUI_WELCOMEPAGE_TEXT text ライセンス契約書 ページ設定
MUI_LICENSEPAGE_TEXT_TOP text
MUI_LICENSEPAGE_TEXT_BOTTOM text
MUI_LICENSEPAGE_BUTTON button_text
MUI_LICENSEPAGE_CHECKBOX
MUI_LICENSEPAGE_CHECKBOX_TEXT text
MUI_LICENSEPAGE_RADIOBUTTONS
MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT text
MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE text コンポーネント ページ設定
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 ディレクトリー ページ設定
MUI_DIRECTORYPAGE_TEXT_TOP text
MUI_DIRECTORYPAGE_TEXT_DESTINATION text
MUI_DIRECTORYPAGE_VARIABLE variable
MUI_DIRECTORYPAGE_VERIFYONLEAVE スタートメニューフォルダー ページ設定
MUI_STARTMENUPAGE_TEXT_TOP text
MUI_STARTMENUPAGE_TEXT_CHECKBOX text
MUI_STARTMENUPAGE_DEFAULTFOLDER folder
MUI_STARTMENUPAGE_NODISABLE
MUI_STARTMENUPAGE_REGISTRY_ROOT root アンインストーラーでは、スタートメニューフォルダー名を得るために MUI_STARTMENU_GETFOLDERマクロを 使って下さい: !insertmacro MUI_STARTMENU_GETFOLDER page_id $R0 Delete "$SMPROGRAMS\$R0\Your Shortcut.lnk" インストール ページ設定
MUI_INSTFILESPAGE_FINISHHEADER_TEXT text
MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT text
MUI_INSTFILESPAGE_ABORTHEADER_TEXT text
MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT text "完了"ページ設定
MUI_FINISHPAGE_TITLE title
MUI_FINISHPAGE_TITLE_3LINES
MUI_FINISHPAGE_TEXT text
MUI_FINISHPAGE_TEXT_LARGE
MUI_FINISHPAGE_BUTTON text
MUI_FINISHPAGE_CANCEL_ENABLED
MUI_FINISHPAGE_TEXT_REBOOT text
MUI_FINISHPAGE_TEXT_REBOOTNOW text
MUI_FINISHPAGE_TEXT_REBOOTLATER text
MUI_FINISHPAGE_REBOOTLATER_DEFAULT
MUI_FINISHPAGE_RUN exe_file
MUI_FINISHPAGE_RUN_TEXT text
MUI_FINISHPAGE_RUN_PARAMETERS parameters
MUI_FINISHPAGE_RUN_NOTCHECKED
MUI_FINISHPAGE_RUN_FUNCTION function
MUI_FINISHPAGE_SHOWREADME file/url
MUI_FINISHPAGE_SHOWREADME_TEXT text
MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
MUI_FINISHPAGE_SHOWREADME_FUNCTION function
MUI_FINISHPAGE_LINK link_text
MUI_FINISHPAGE_LINK_LOCATION url/file
MUI_FINISHPAGE_LINK_COLOR (色: RRGGBB 16進数)
MUI_FINISHPAGE_NOREBOOTSUPPORT アンインストール確認ページ設定
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 コンポーネント ページは、ユーザーがマウスを コンポーネント上に持ってきた時に セクションにデスクリプションを設定するには、追加パラメーターがセクションコマンドに 加えられなければなりません。それは、そのセクション用ユニーク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_STARTMENU_WRITE_BEGIN と MUI_STARTMENU_WRITE_END マクロの間に、 !insertmacro MUI_STARTMENU_WRITE_BEGIN pageid ...ショートカット作成... !insertmacro MUI_STARTMENU_WRITE_END ページIDは、ショートカットを作成する為にフォルダーが選択されたページのIDであるべきです。 フォルダーとページIDを含む変数がページマクロのパラメーターとしてセットされています。 言語選択ダイアログ
もし インストーラーに言語選択ダイアログを表示させたければ
(例 MultiLanguage.nsi 参照)、 Function .onInit !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd このマクロは un.onInit ファンクションでも用いられます。 選択された言語のレジストリーストレージ用設定ユーザーの環境設定を読み込むために、レジストリーキーを定義する事ができます。 これらの定義は、インストールページマクロを挿入する前に設定されるべきです。
MUI_LANGDLL_REGISTRY_ROOT root アンインストーラーでは、un.onInit ファンクションで MUI_UNGETLANGUAGE マクロを挿入して 保存された言語設定を読み込んで下さい: Function un.onInit !insertmacro MUI_UNGETLANGUAGE FunctionEnd 選択ダイアログ用インターフェース設定言語選択ダイアログ インターフェースをカスタマイズするには、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 ページは、カスタム ファンクションを用いてカスタマイズする事もできます。 全般的なカスタム ファンクションこれらの定義は 言語マクロを挿入する前に設定されるべきです。
MUI_CUSTOMFUNCTION_GUIINIT function
ファンクションの上にマウスを乗せた時のデスクリプションは、
マクロ (MUI_FUNCTION_DESCRIPTION_BEGIN) が用いられた時にだけ利用可能です。
コンポーネントページのデスクリプションが使われていない時には、 ページカスタム ファンクションこれらの定義は ページマクロを挿入する前に設定されるべきです。
MUI_PAGE_CUSTOMFUNCTION_PRE function pre ファンクションが最初に呼ばれ、変数を初期化したり、ページがスキップされるかどうかを 決める事ができます。次に shown ファンクションが呼ばれ、インターフェースをカスタマイズするのに 使う事ができます。最後に、leave ファンクションでユーザー入力を確認できます。 NSIS ユーザーズ マニュアルが、これらのファンクションについて より多くの情報を提供しています。 shown ファンクションでは、ページ上の全てのコントロールのウィンドウハンドルが、 Modern UI 変数から取得する事ができます。変数名のリストはまだ利用できません。 現在は、Modern UI 2.0 のソースファイルを参照して下さい。変数定義は、 特定ページのヘッダーファイルの最初の行で見つけられます。 スクリプトの例
ベーシック: Basic.nsi クレジット
著者: Joost Verburg. ライセンスModern UI に zlib/libpng ライセンスを適用します。 ライセンス条件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. この告示は、どんな配布であっても削除したり改変しないで下さい。 |