toronyan.log

つれづれ わいあーど

高機能なフリーのインストーラ「NSIS」

2005-10-23 15:13:03 | PC
Winampを作ったNullSoft社のソフトでけっこう有名なようす。
スクリプトベースのインストーラで HM NIS Edit で編集するとらくちん。
魅力的なのはインストーラ作成だけでなく、簡単なexeもつくることができることです。

Eclipseのように「exeがJREを検索してJavaアプリを起動」ってなサンプルがあった。
DOS窓もでないし、アイコンも好きなように出来る。これは配布が便利になるなぁ。

http://nsis.sourceforge.net/wiki/A_slightly_better_Java_Launcher

試しにいつも使ってる「ペタクローン」でやってみた。
VMの検索はそのままに、
javaw -jar petaclone.jar
するように指定すればいいだけ。

これでシステムの環境変数の設定に影響なく、好きなバージョンのJavaVMを使えるー。

ただし、使用できるiconの形式に限定があるみたい。PNGやBMPじゃだめなので
加工して使った。


; Java Launcher
;--------------

;You want to change the next four lines
Name "petaclone"
Caption "petaclone Launcher"
Icon "appl.ico"
OutFile "petaclone.exe"

SilentInstall silent
AutoCloseWindow true
ShowInstDetails nevershow

;You want to change the next two lines too
;!define CLASSPATH ".;lib;"
;!define CLASS ""
!define JARFILE "petaclone.jar"


Section ""
Call GetJRE
Pop $R0

; change for your purpose (-jar etc.)
; StrCpy $0 '"$R0" -classpath "${CLASSPATH}" ${CLASS}'
StrCpy $0 '"$R0" -jar ${JARFILE}'

SetOutPath $EXEDIR
Exec $0
SectionEnd

Function GetJRE
;
; Find JRE (javaw.exe)
; 1 - in .\\jre directory (JRE Installed with application)
; 2 - in JAVA_HOME environment variable
; 3 - in the registry
; 4 - assume javaw.exe in current dir or PATH

Push $R0
Push $R1

ClearErrors
StrCpy $R0 "$EXEDIR\\jre\\bin\\javaw.exe"
IfFileExists $R0 JreFound
StrCpy $R0 ""

ClearErrors
ReadEnvStr $R0 "JAVA_HOME"
StrCpy $R0 "$R0\\bin\\javaw.exe"
IfErrors 0 JreFound

ClearErrors
ReadRegStr $R1 HKLM "SOFTWARE\\JavaSoft\\Java Runtime Environment" "CurrentVersion"
ReadRegStr $R0 HKLM "SOFTWARE\\JavaSoft\\Java Runtime Environment\\$R1" "JavaHome"
StrCpy $R0 "$R0\\bin\\javaw.exe"

IfErrors 0 JreFound
StrCpy $R0 "javaw.exe"

JreFound:
Pop $R1
Exch $R0
FunctionEnd

最新の画像もっと見る