NSIS (+HM NIS Edit)でWindows Vista用インストーラーを作成してみた

現在作成中のソフトのインストーラーを何にしようか悩んでいたところ・・・

「インストーラーを作るなら、Tomcatのインストーラーに使われている、NSISっていうのがあるよ。」

というアドバイスをもらったので、NSISでWindows Vista用のインストーラーを作成してみることにしました。

NSISは、”nullsoft scriptable install system” の略で、Apache Tomcatだけでなく、いろいろなソフトに採用されているオープンソースのフリーなインストーラーです。
こちらのサイトを参考に、HM NIS Edit というフロントエンドを使用して簡単なインストーラーを作成してみました。

インストーラーを作成する際にちょっとつまずいてしまったところがあったので、まとめておこうと思います。(※今回ダウンロードしたNSISのバージョンは、2.45、HM NIS Edit のバージョンは、2.0.3です。)

1.アンインストールしてもスタートメニューからショートカットが削除されない。

HM NIS Editのスクリプトウィザードで、「アンインストーラーを使う」にチェックを入れると、インストーラーと一緒にアンインストーラーも作成されます。
このアンインストーラーを利用してソフトをアンインストールしたところ、スタートメニューのショートカットが削除されませんでした。
調べてみると、NSISのFAQに答えが載っていました。どうやらVista固有の問題のようです。
Windowsの管理者権限でショートカットを作成・削除するか、全てのユーザのスタートメニューにショートカットを作成・削除すればよいようです。

2. インストール完了時に表示される「Readme を表示する」が文字化けする。

インストール完了時によく表示されるチェックボックス、「Readme を表示する」の表示が、なぜか「Readme を表¥示する」と、文字化けして?表示されてしまいました。
NSISに含まれる言語ファイルを確認してみましたが、特に問題はなさそうです。
いろいろ悩みましたが、今回は、「Readmeを表示するチェックボックスに表示する文字」を変更することによって解決しました。

!define MUI_FINISHPAGE_RUN "$INSTDIR\プログラムexe"
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\readme.txt"
!define MUI_FINISHPAGE_RUN_TEXT "今すぐプログラムを起動する"
!define MUI_FINISHPAGE_SHOWREADME_TEXT "readme.txt を表示する"
!insertmacro MUI_PAGE_FINISH

MUI_FINISHPAGE_SHOWREADME_TEXTのテキストを変更します。
ちなみに、プログラムを起動するチェックボックスのテキストは、MUI_FINISHPAGE_RUN_TEXを変更すればよいようです。

3. アンインストールするときもインストールと同じようなウィザードを表示したい。

HM NIS Editのスクリプトウィザードでアンインストーラーを作成すると、アンインストール時に、アンインストールの開始(~とコンポーネントを削除してもよろしいでしょうか?)と完了(~はこのコンピュータから完全に削除されました。)を知らせるダイアログボックスが表示されます。
これを、インストールのときと同じようなウィザードを表示するように変更してみました。

; Uninstaller pages
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH

(中略)

;Function un.onUninstSuccess
;  HideWindow
;  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name)はこのコンピュータから完全に削除されました。"
;FunctionEnd

;Function un.onInit
;  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "$(^Name)とコンポーネントを削除してもよろしいでしょうか?" IDYES +2
;  Abort
;FunctionEnd

MUI_UNPAGE_WELCOMEMUI_UNPAGE_FINISHというパラメータを指定して!insertmacroでマクロを挿入しています。

今回は簡単なインストーラーを作成しましたが、NSISのドキュメントやたくさんのサンプルを見ると、他にもいろいろなことができそうです。
日本語のまとまった情報が少ないので、英語のあまり得意でない私にはちょっぴり骨が折れそうです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*