もしこのページがNSISのあなたの最初の経験であるならば、以下のスクリプトやあなたが作成した 他のどのようなものでも、機能しているインストーラーに変換するのに NSIS コンパイラが必要です。NSISインストールフォルダ中のmakensisw.exeが、実際のコンパイラ です。それは、スクリプトをロードするための3つの方法を説明するグラフィカルなフロントエンドを 持っています。従って、使うのがとても容易です。いったんインストーラを作成するためにNSISを インストールしたら、スクリプトをテキストエディタにコピーして、.nsi拡張子を持つファイルに 保存し、makensiswコンパイラにファイルをロードしてください。
# インストーラーに名前を付ける outFile "installer.exe" # デフォルトセクション開始; どのNSISスクリプトも 最低一つはセクションを持っている。 section # デフォルトセクション終わり sectionEnd
インストーラが実行される時に、このhello worldスクリプトは、その中に"hello world"という 言葉と"OK"ボタンを持つポップアップボックスを作成します
# インストーラーの名前を設定する。 outfile "hello world.exe" # デフォルトセクションを作成する。 section # OKボタンとテキスト"Hello world!"を持つ、ポップアップボックスを作成する。 messageBox MB_OK "Hello world!" sectionEnd
インストーラが実行される時に、このhello worldスクリプトは"hello world!"をテキストファイルに 書きます
# インストーラーファイルの名前を宣言する outfile "hello world.exe" # セクションを開く section /* デスクトップ上に "helloworld.txt" と呼ばれる出力ファイルを writeモードで開く。 このファイルは、スクリプトがコンパイルされて実行される前に 存在している必要はない。*/ fileOpen $0 "$DESKTOP\helloworld.txt" w # 文字列 "hello world!" を出力ファイルに書く fileWrite $0 "hello world!" # ファイルを閉じる fileClose $0 # セクションを終える sectionEnd
このインストーラースクリプトは、ファイル"test.txt"をインストールディレクトリにコピーします
# インストーラーの名前を定義する outfile "simple installer.exe" # インストールするディレクトリーを定義する、この場合には # 予め定義されている$DESKTOP変数により指定されている通りデスクトップ installDir $DESKTOP # デフォルトセクション section # このファイルの為の出力パスを定義する setOutPath $INSTDIR # インストールして出力パスに置くものを定義する file test.txt sectionEnd
このスクリプトは以下をします: "installer.exe"と名付けられたインストーラを作成する; デスクトップに"test.txt"と名付けられたファイルをインストールする; デスクトップ上に"uninstaller.exe"と名付けられたアンインストーラを作成する。アンインストーラは、自身とインストールされたテキストファイルを削除します。
# インストーラー名を定義する outFile "installer.exe" # デスクトップをインストールディレクトリーとして設定する installDir $DESKTOP # デフォルトセクション開始 section # 出力パスを定義する setOutPath $INSTDIR # 出力パス中に行くファイルを指定する file test.txt # アンインストーラー名を定義する writeUninstaller $INSTDIR\uninstaller.exe # デフォルトセクション終わり sectionEnd # アンインストーラーが何をするかを定義するセクションを作成する # セクションは常に"Uninstall"と名付けられる section "Uninstall" # 常にアンインストーラーを最初に消去する delete $INSTDIR\uninstaller.exe # ここでインストールされたファイルを消去する delete $INSTDIR\test.txt sectionEnd
インストーラーは、スタートメニューアイテムだけを作成する
# インストーラーを命名する outFile "installer.exe" # デフォルトセクション section # スタートメニュープログラムディレクトリに"new shortcut"と名付けられたショートカットを # すぐに作成する、new shortcutによって何も呼ばれない (2番目のフィールドが空白) createShortCut "$SMPROGRAMS\new shortcut.lnk" "" # ショートカットを消去するには、スタートメニューディレクトリに行って手動でそれを消去する # デフォルトセクション終わり sectionEnd
このインストーラは以下をします:"installer.exe"と名付けられたインストーラ、デスクトップ上のアンインストーラ、アンインストーラを指すスタートメニュー中のショートカット、を作成する。
# インストーラーの名前を定義する outFile "installer.exe" # インストールディレクトリを定義する installDir $DESKTOP # デフォルトセクションを開始する section # インストールディレクトリを以下のアクションの為のデスティネーションとして設定する setOutPath $INSTDIR # アンインストーラーを作成する writeUninstaller "$INSTDIR\uninstall.exe" # スタートメニュープログラムディレクトリ中に プログラムアンインストーラーを指す # "new shortcut"と名付けられたショートカットを作成する createShortCut "$SMPROGRAMS\new shortcut.lnk" "$INSTDIR\uninstall.exe" sectionEnd # アンインストーラーセクション開始 section "uninstall" # 1番目、アンインストーラーを消去する delete "$INSTDIR\uninstall.exe" # 2番目、スタートメニューからリンクを削除する delete "$SMPROGRAMS\new shortcut.lnk" # アンインストーラーセクション終わり sectionEnd
このインストーラは、readRegStrを使ってローカルマシンレジストリー中のJREのためのCurrentVersionストリングの値をチェックするだけです。もし結果が空白ならば、JREはたぶんインストールされていません。
# インストーラーを命名する outFile "installer.exe" # デフォルトセクション開始 section # レジストリーから $0 レジスタに値を読む readRegStr $0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" CurrentVersion # ポップアップメッセージボックスで 結果をプリントする messageBox MB_OK "version: $0" # デフォルトセクション終わり sectionEnd
時々、インストーラのユーザーが管理者特権を持っているかどうかをチェックすることが必要です。 この簡単なスクリプトは、"UserInfo"プラグインを使ってそれをチェックします。 http://forums.winamp.com/showthread.php?threadid=195020に、より洗練された代替案がありますが、この方法はうまく働くようです。UserInfoの別の例はNSISインストールディレクトリの\Examples\UserInfo\UserInfo.nsiの下に見つけられるでしょう。
# インストーラーを命名する outFile "installer.exe" !include "UserInfo.nsh" # デフォルトセクション開始 section # ユーザー情報を得るためにuserInfoプラグインをコールする。プラグインは結果をスタック中に置く userInfo::getAccountType # 結果をスタックから $0 にポップする pop $0 # ユーザーがアドミンかどうかを見る為に 結果と文字列"Admin"を比較する。もし一致すれば、3行下にジャンプする。 strCmp $0 "Admin" +3 # もし一致しなければ、メッセージを表示して戻る messageBox MB_OK "not admin: $0" return # そうでなければ、確認して戻る messageBox MB_OK "is admin" # デフォルトセクション終わり sectionEnd