Pentru a urmări răspunsul lui pauxu, folosesc lansarea și NSIS pe un proiect de-al meu și am crezut că ar fi util să arăt exact cum le folosesc. Iată ce fac pentru Windows. BTW, creez .app și .dmg pentru Mac, dar nu mi-am dat seama ce să fac pentru Linux încă.
Copii de proiect de lansare4j și NSIS
În proiectul meu am un director "vânzător" și sub el am un director pentru "lans4j" și "nsis". Fiecare dintre ele este o copie a instalării pentru fiecare aplicație. Mi se pare mai ușor să aveți o copie locală pentru proiect, decât să-i forțați pe alții să instaleze ambele produse și să instaleze un fel de variabilă de mediu pentru a indica fiecare.
Fișiere Script
I also have a "scripts" directory in my project that holds various configuration/Fișiere Script for my project. First there is the launch4j.xml file:
true
gui
rpgam.jar
rpgam.exe
.
normal
http://www.rpgaudiomixer.com/
false
false
1.5.0
preferJre
..\images\splash.bmp
true
60
true
Apoi este scriptul NSIS rpgam-setup.nsis. Poate să ia un argument VERSION pentru a ajuta la denumirea fișierului.
; The name of the installer
Name "RPG Audio Mixer"
!ifndef VERSION
!define VERSION A.B.C
!endif
; The file to write
outfile "..\dist\installers\windows\rpgam-${VERSION}.exe"
; The default installation directory
InstallDir "$PROGRAMFILES\RPG Audio Mixer"
; Registry key to check for directory (so if you install again, it will
; overwrite the old one automatically)
InstallDirRegKey HKLM "Software\RPG_Audio_Mixer" "Install_Dir"
# create a default section.
section "RPG Audio Mixer"
SectionIn RO
; Set output path to the installation directory.
SetOutPath $INSTDIR
File /r "..\dist\layout\windows\"
; Write the installation path into the registry
WriteRegStr HKLM SOFTWARE\RPG_Audio_Mixer "Install_Dir" "$INSTDIR"
; Write the uninstall keys for Windows
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RPGAudioMixer" "DisplayName" "RPG Audio Mixer"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RPGAudioMixer" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RPGAudioMixer" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RPGAudioMixer" "NoRepair" 1
WriteUninstaller "uninstall.exe"
; read the value from the registry into the $0 register
;readRegStr $0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" CurrentVersion
; print the results in a popup message box
;messageBox MB_OK "version: $0"
sectionEnd
Section "Start Menu Shortcuts"
CreateDirectory "$SMPROGRAMS\RPG Audio Mixer"
CreateShortCut "$SMPROGRAMS\RPG Audio Mixer\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
CreateShortCut "$SMPROGRAMS\RPG AUdio Mixer\RPG Audio Mixer.lnk" "$INSTDIR\rpgam.exe" "" "$INSTDIR\rpgam.exe" 0
SectionEnd
Section "Uninstall"
; Remove registry keys
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RPGAudioMixer"
DeleteRegKey HKLM SOFTWARE\RPG_Audio_Mixer
; Remove files and uninstaller
Delete $INSTDIR\rpgam.exe
Delete $INSTDIR\uninstall.exe
; Remove shortcuts, if any
Delete "$SMPROGRAMS\RPG Audio Mixer\*.*"
; Remove directories used
RMDir "$SMPROGRAMS\RPG Audio Mixer"
RMDir "$INSTDIR"
SectionEnd
Ant Integrarea
Am câteva ținte în kitul meu de construcție Ant (build.xml) pentru a rezolva cele de mai sus. Mai intai am tel Ant pentru a importa sarcina lui launch4j Ant:
Apoi am o țintă simplă pentru crearea executabilului wrapper:
Și un alt obiectiv pentru a face instalatorul:
<!-- Lay out files needed for building the installer -->
<!-- Build the installer using NSIS -->
Partea superioară a acestuia copiază fișierele necesare pentru programul de instalare într-o locație temporară, iar a doua jumătate execută scriptul care o folosește pe toate pentru a face instalarea.