Null Soft インストーラの使い方

忘れやすいのでメモ。


ダウンロード型インストーラーの作り方


■今回使用したソフト
nullsoft scriptable install system 2.44(nullsoft install system)
 URL:http://nsis.sourceforge.net/Download


HM NIS Edit 2.0.3
 URL:http://hmne.sourceforge.net/


■手順
まずnullsoft scriptable install system 2.44とHM NIS Edit 2.0.3をインストール。
インストールが終了したら、HM NIS Editを起動させます。


起動したら ファイル → ウィザードから作成 を選択し、インストーラーの外側の部分を作成する。
作成が完了すると 「新規スクリプトファイル 01」 というファイルが作成されソースが表示される。
このソースを元にダウンロード型のインストーラーに変更していきます。


※NSISの作り方はこのページを参考。URL http://www.open-it.net/index.php?NSIS%E3%81%AE%E8%AA%BF%E6%9F%BB


基本のパラメータ


"" 内はサンプルです。


!define PRODUCT_NAME "QRIソフト" //ダウンロードされるソフト名
!define PRODUCT_VERSION "4.0" //ダウンロードされるソフトのバージョン
!define PRODUCT_PUBLISHER "QRI company, Inc." //提供元
!define PRODUCT_WEB_SITE "http://www.qri.co.jp //提供元URL
!insertmacro MUI_PAGE_LICENSE "c:\License.txt" //ダウンロード時に表示されるライセンス
!insertmacro MUI_LANGUAGE "Japanese" //ダウンロード時の言語
!define URL_DOTNET "http://shisouken.jp/Firefox.exe" //ダウンロードするアプリ


Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" //ダウンロード時に表示されるソフト名とバージョン
OutFile "Setup.exe" //ダウンロードアプリ(今回生成する.exe)
InstallDir "$DESKTOP" //インストールするフォルダ ※今回は無視


ダウンロードを開始するセクションの作成を作成する。

Section -Post
NSISdl::download /TIMEOUT=30000 "${URL_DOTNET}" "$DESKTOP\firefox.exe"
Pop $R0
StrCmp $R0 success DownloadOK
DetailPrint "ダウンロードに失敗しました" ;download no
Abort ;installation stop
DownloadOK:
SectionEnd


◆Section -Post
セクション名は適当に。確か"-"がいったハズ。


◆NSISdl::download /TIMEOUT=30000 "${URL_DOTNET}" "$DESKTOP\firefox.exe"
NSISdl::download がダウンロードを開始するスクリプト
第一引数?にダウンロードするURL。
第二引数?にダウンロードした.exeを置く場所。


◆Pop $R0
ダウンロードの実行結果の返り値。
返り値を取得する。

◆StrCmp $R0 success DownloadOK
StrCmp = 条件分岐? if みたいなものだと思う。
$R0の返り値が "success" ならば DownloadOK:に移動する。
このセクション内ではダウンロードが完了した時点では何も処理は行わない。

◆DetailPrint "ダウンロードに失敗しました"
ダウンロードに失敗した時に表示するエラーメッセージ。


◆Abort
失敗した時点でダウンロードを強制終了させる。


ここまででダウンロードの処理は終了。


ここからがダウンロードが成功した後の処理。

function .onInstSuccess
Exec '"$DESKTOP\firefox.exe"'
functionend


◆function .onInstSuccess
.onInstSuccess今回のダウンロードが成功した時に実行されるnullsoft側で用意されている関数
※このファンクション名じゃないとダウンロードが成功した後に動きません。


◆Exec '"$DESKTOP\firefox.exe"'
Exec が ".exe" を実行させるコマンド。


最後に今回はインストールではなく、ダウンロードがメインなので本来インストールとでる文言を変える。
変えるファイルは


C:\Program Files\NSIS\Contrib\Language files 内のファイル


Japanese.nlf
Japanese.nsh


をインストールをダウンロードに変える。
(他に方法がありそうだが..今回は無理矢理です)


以上で終了です。