Vra

Ek skryf'n program in Java vir die rekenaar met behulp van die Verduistering SWT biblioteek vir die GUI lewering.Ek dink SWT help Java kry oor die grootste struikelblok vir aanvaarding op die lessenaar:naamlik die verskaffing van'n Java-program met'n konsekwente, reageer koppelvlak wat lyk soos dié wat deel uitmaak van enige ander inligting op jou rekenaar.Egter, ek voel dat die verpakking van die aansoek is nog steeds'n probleem.

OS X native bied'n maklike meganisme vir die wikkel Java programme in die moedertaal aansoek bundels, maar die vervaardiging van'n app vir Windows/Linux wat nie vereis dat die gebruiker om te hardloop'n lelike batch lêer of kliek op'n .pot is nog steeds'n probleem.Moontlik dit is nie so'n probleem op Linux, waar die gebruiker is geneig om te wees'n bietjie meer tegnologie-vaardig, maar op Windows ek wil graag'n gereelde .exe vir hom/haar om te hardloop.

Het enige iemand enige ondervinding met enige van die .exe-generasie gereedskap vir Java wat is daar buite?Ek het probeer om JSmooth maar het verskeie probleme met dit.Is daar'n beter oplossing voor ek kraak uit Visual Studio en rol my eie?

Edit: Ek moet miskien noem dat ek nie in staat om'n klomp geld spandeer op'n kommersiële oplossing.

Was dit nuttig?

Oplossing

Om op te volg antwoord pauxu se, ek gebruik van launch4j en NSIS op 'n projek van myne en het gedink dit sou nuttig wees om te wys net hoe ek dit deur middel van. Hier is wat ek doen vir Windows. BTW, ek skep .app en dmg vir Mac, maar het nie uitgepluis het wat om nog te doen vir Linux.

Project Afskrifte van launch4j en NSIS

In my projek Ek het 'n "verkoper" gids en daaronder Ek het 'n gids vir "launch4j" en "NSIS". Binne elkeen is 'n afskrif van die installering vir elke aansoek. Ek vind dit makliker om 'n afskrif plaaslike tot die projek het eerder as dwing ander om beide produkte installeer en opstel van 'n soort van omgewing veranderlike te wys aan elke.

Script lêers

Ek het ook 'n "skrifte" gids in my projek wat verskeie opset / script lêers hou vir my projek. Eerstens is daar die launch4j.xml lêer:

<launch4jConfig>
  <dontWrapJar>true</dontWrapJar>
  <headerType>gui</headerType>
  <jar>rpgam.jar</jar>
  <outfile>rpgam.exe</outfile>
  <errTitle></errTitle>
  <cmdLine></cmdLine>
  <chdir>.</chdir>
  <priority>normal</priority>
  <downloadUrl>http://www.rpgaudiomixer.com/</downloadUrl>
  <supportUrl></supportUrl>
  <customProcName>false</customProcName>
  <stayAlive>false</stayAlive>
  <manifest></manifest>
  <icon></icon>
  <jre>
    <path></path>
    <minVersion>1.5.0</minVersion>
    <maxVersion></maxVersion>
    <jdkPreference>preferJre</jdkPreference>
  </jre>
  <splash>
    <file>..\images\splash.bmp</file>
    <waitForWindow>true</waitForWindow>
    <timeout>60</timeout>
    <timeoutErr>true</timeoutErr>
  </splash>
</launch4jConfig>

En dan is daar die NSIS script rpgam-setup.nsis. Dit kan 'n weergawe standpunt inneem om te help noem die lêer.

; 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 integrasie

Ek het 'n paar teikens in my Ant buildfile (build.xml) aan die bokant te hanteer. Aanvanklik het ek tel mier om Ant take launch4j se invoer:

<property name="launch4j.dir" location="vendor/launch4j" />
<taskdef name="launch4j" 
    classname="net.sf.launch4j.ant.Launch4jTask"
    classpath="${launch4j.dir}/launch4j.jar:${launch4j.dir}/lib/xstream.jar" />

Ek het dan 'n eenvoudige teiken vir die skep van die omslag uitvoerbare:

<target name="executable-windows" depends="jar" description="Create Windows executable (EXE)">
    <launch4j configFile="scripts/launch4j.xml" outfile="${exeFile}" />
</target>

En 'n ander teiken vir die maak van die installeerder:

<target name="installer-windows" depends="executable-windows" description="Create the installer for Windows (EXE)">
    <!-- Lay out files needed for building the installer -->
    <mkdir dir="${windowsLayoutDirectory}" />
    <copy file="${jarFile}" todir="${windowsLayoutDirectory}" />
    <copy todir="${windowsLayoutDirectory}/lib">
        <fileset dir="${libraryDirectory}" />
        <fileset dir="${windowsLibraryDirectory}" />
    </copy>
    <copy todir="${windowsLayoutDirectory}/icons">
         <fileset dir="${iconsDirectory}" />
    </copy>
    <copy todir="${windowsLayoutDirectory}" file="${exeFile}" />

    <mkdir dir="${windowsInstallerDirectory}" />

    <!-- Build the installer using NSIS -->
    <exec executable="vendor/nsis/makensis.exe">
        <arg value="/DVERSION=${version}" />
        <arg value="scripts/rpgam-setup.nsi" />
    </exec>
</target>

Die boonste gedeelte van daardie net afskrifte van die nodige lêers vir die installeerder om 'n tydelike plek en die tweede helfte voer die script wat al van dit gebruik om die installeerder te maak.

Ander wenke

In my maatskappy wat ons gebruik Launch4J om te skep die exe-lêer, en NSIS om te skep die installeerder, met SWT aansoeke.

Ons het dit gebruik vir die jaar in verskeie kommersiële aansoeke en die paar goed werk.

Miskien moet jy 'n blik op IzPack neem. Ek het 'n baie mooi installeerder paar jaar gelede en ek wil wed dat hulle steeds die verbetering van dit. Dit laat die installering van dokumente, binaries en 'n klikbare skakel na die aansoek begin IIRC .

Ek het gebruik die gratis Launch4J om 'n persoonlike lanseerder skep vir my Java programme op Windows. Gekombineer met die gratis NSIS Installer jy 'n mooi pakket kan bou vir jou Windows-gebruikers.

Edit: Het jy nie sien dat jy SWT gebruik. Weet nie of dit werk met SWT sowel, want ek gebruik net Swing in my apps.

Het jy al oorweeg skryf van 'n klein program in C / C ++ wat net noem CreateProcess te begin die Java VM met die pot (of klas) in te dien?

Jy kan kry Visual C ++ Express en sit die startup program saam redelik maklik. Dit sou dit maklik om 'n vriendelike ikoon sowel voeg maak.

Oorweeg die omskakeling van jou aansoek om Eclipse RCP . Dit is geskryf in SWT , en die Eclipse IDE bevat verpakking gereedskap wat executables vir al die groot platforms te genereer. Vir vensters, kan dit 'n rits of 'n gids met jou kode te genereer. Vir 'n gemeenskaplike installasie ervaring, ek wil met behulp van NSIS. Daar is eintlik 'n pakkette kragopwekker projek by verduistering gemeenskaplike installeerders te skep vir alle platforms verduistering ondersteun.

Het jy al gedink oor Java Web Start ? Hier is 'n handleiding wat spesifiek vir die implementering van 'n SWT aansoek met Java Web begin.

Install4J . Nie vry nie, maar die moeite werd. Gee die verhoor 'n skoot

Jy kan dit nou doen deur Netbeans! Dit is regtig maklik en werk perfek. Kyk bietjie na hierdie handleiding oor die Netbeans webwerf.

Ek het deur dieselfde en het bevind dat al die gratis opsies was nie baie goed nie. Dit lyk asof jy skryf jou eie. Ek sal belangstel om te sien of iemand 'n gratis / goedkoop opsie wat werk

Nog 'n opsie wat ek oorweeg: in plaas van die skryf van 'n boorling lanseerder van nuuts af, Eclipse kom met die bronkode vir sy eie lanseerder, en dit kan dalk wees repurposed vir my inligting

.

Dit is 'n skande dat Sun nooit iets soortgelyk in die JDK ingesluit.

Nog 'n stem vir Launch4J, net skryf 'n mier taak vanoggend om te integreer met een van my projekte. Lyk baie goed werk

Ek het JSmooth gebruik in die verlede, en nog geluk met dit. Die UI is mooi karretjie, maar ek gebruik net wat vir die bou van die opstelling lêer keer, en dan bou ek uit Ant daarna.

Watter kwessies is jy met met JSmooth?

JSMooth het baie goed gewerk vir ons in 'n produksie-omgewing, waar ek die eerste keer 'n enkele jar gegenereer met behulp van een-pot (vet jar plugin om verduistering) en dan rol dit met JSmooth.

(Let asseblief daarop dat ek wou 'n no-installeer verspreiding van 'n enkele lêer, wat kan promt vir die installering van JRE indien nodig).

Dit is so goed dat ek gedink het niemand om dit te gebruik:)

Jy mag wil ons hulpmiddel, BitRock InstallBuilder probeer. Alhoewel dit is 'n boorling aansoek, 'n groot deel van ons kliënte gebruik dit om die lessenaar Java programme verpak. As jy die JRE bundel en skep lanseerder, ens die gebruiker nie eens nodig om te weet hulle is die installering van 'n Java program. Dit is kruis-platform, sodat jy kan installeerders vir beide Windows en Mac (en Linux, Solaris, ens) Soos install4j instrument in 'n ander pos genoem te genereer, dit is 'n kommersiële instrument, maar ons het vrye lisensies vir open source projekte en spesiale afslag vir microISVs / klein besigheid, ens net stuur vir ons 'n e-pos. Ook wou beklemtoon dat dit 'n installeerder instrument, so dit sal nie te spreek jou behoeftes as jy net op soek is vir 'n enkele lêer uitvoerbare.

In my maatskappy wat ons gebruik launch4J en NSIS vir die vensters verspreiding, en jdeb vir die Debian verspreiding en Java Web Start vir die algemene bedryfstelsel. Dit werk baie goed.

Probeer asseblief InstallJammer .Die beste een wat ek nog ooit gebruik. Gratis en powerful.And voldoende vir persoonlike en kommersiële gebruik.

Het jy al oorweeg Advanced Installer?
Ek het dit afsonderlik gebruik veral vir Windows en Mac. Geen script of Ant vereis. Alle GUI. Baie eenvoudig en verstaanbaar. Is nie gratis, maar elke sent werd.
- Lauch as Administrateur
- Vereniging lêer
- Custom installeer Temas + In gebou Temas
- pakket met JRE
- Installeer plek
- Native Splash skerm implementering
- Jy kan gebeurtenis te skep dienste en installasie gebeure
- Voorvereistes
- JRE minimum weergawe en maksimum weergawe

En nog baie meer. En dit nie kry nie gedraai, ek het geen bande met die dudes ... hul App is net awesome.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top