Ambalarea aplicațiilor Java pentru desktopul Windows/Linux

Scriu o aplicație în Java pentru desktop utilizând biblioteca Eclipse SWT pentru redare GUI. Cred că SWT ajută Java să depășească cel mai mare obstacol în calea acceptării pe desktop: furnizarea unei aplicații Java cu o interfață consistentă și receptivă, care pare să aparțină oricărei alte aplicații de pe desktop. Cu toate acestea, consider că ambalarea unei aplicații este încă o problemă.

OS X oferă nativ un mecanism ușor de împachetare a aplicațiilor Java în pachete de aplicații native, dar producerea unei aplicații pentru Windows/Linux care nu presupune ca utilizatorul să ruleze un fișier batch urât sau să facă clic pe un .jar este încă un hassle. Probabil că nu este o astfel de problemă pe Linux, în cazul în care utilizatorul este probabil să fie un pic mai tehnic-savvy, dar pe Windows aș dori să aibă un .exe regulat pentru el/ea pentru a rula.

A avut cineva vreo experiență cu oricare dintre instrumentele de generare .exe pentru Java care sunt acolo? Am încercat JSmooth, dar am avut diverse probleme cu el. Există o soluție mai bună înainte de a vă sparge Visual Studio și mișcați propriul meu program?

Edit: I should perhaps mention that I am unable to spend a lot of money on a commercial solution.

0
fr hi bn
Vă rugăm să listați problemele pe care le-ați avut cu JSmooth.
adăugat autor Thorbjørn Ravn Andersen, sursa

17 răspunsuri

Am trecut prin aceleași lucruri și am constatat că toate opțiunile gratuite nu erau foarte bune. Se pare că îți vei scrie propriul. Aș fi interesat să văd dacă cineva are o opțiune gratuită/ieftină care funcționează

0
adăugat

Install4J. Not free, but worth it. Give the trial a shot

0
adăugat
install4j face o treabă bună, producătoare de instalatori complet exotivi Windows (suportă și alte platforme țintă). De asemenea, este o opțiune excelentă pentru implementarea software-ului Java . Mai multe detalii despre experiențele mele cu el: stackoverflow.com/questions/759855/… Este totuși un instrument comercial, de aceea poate că nu se potrivește
adăugat autor Jonik, sursa

Te-ai gândit la Java Web Start ? Aici este un tutorial special pentru implementarea unei aplicații SWT cu Java Web Start.

0
adăugat

O altă opțiune am avut în vedere: mai degrabă decât să scriem un lansator nativ de la zero, Eclipse vine cu codul sursă pentru lansatorul său propriu, iar acest lucru ar putea fi repurtat pentru aplicația mea.

Este o rușine că Sun nu a inclus niciodată ceva similar în JDK.

0
adăugat
De fapt, au făcut-o. Eclipse utilizează JNI pentru a lansa JVM, orice alt furnizor poate crea un binar nativ pentru a lansa JVM în proces.
adăugat autor Heath Borders, sursa

Poate ar trebui să aruncați o privire la IzPack . Am creat un instalator foarte frumos cu câțiva ani în urmă și m-aș fi pariat că o îmbunătățesc încă. Permite instalarea docs, binarelor și a unei legături care poate face clic pentru a porni aplicația IIRC .

0
adăugat
Wow opensource și arată că este încă activ, în timp ce jsmooth pare mai degrabă mort fără actualizări pentru ultimul an.
adăugat autor willcodejavaforfood, sursa

Considerați că ați scris un mic program în C/C ++ care doar solicită CreateProcess pentru a porni java VM cu fișierul de jar (sau clasa)?

Aveți posibilitatea să obțineți Visual C ++ Express și să puneți împreună programul de pornire cu ușurință. Acest lucru ar ușura adăugarea unei pictograme prietenoase.

0
adăugat

Luați în considerare convertirea aplicației dvs. la Eclipse RCP . Acesta este scris în SWT , iar Eclipse IDE conține instrumente de ambalare care generează executabile pentru toate platformele importante. Pentru ferestre, poate genera un zip sau un dosar care conține codul. Pentru o experiență de instalare comună, aș folosi NSIS. Există de fapt un proiect generator de pachete la eclipsă pentru a crea instalatori obișnuiți pentru toate suporturile eclipsei platformelor.

0
adăugat
Am considerat Eclipse RCP, dar este un pic cam greu pentru proiectul meu, care este destinat a fi un instrument de postare ușoară a blogului desktop.
adăugat autor alexmcchessers, sursa
Eclipse RCP nu este atât de mare. Dacă păstrați doar clasele necesare pentru un UI de bază, făcând ca proiectele dvs. să depindă numai de org.eclipse.runtime.core și org.eclipse.ui, sunteți sub 8 MB și veți obține o platformă plăcută care vă va permite să vă gestionați dependențele .
adăugat autor Mario Ortegón, sursa

JSMooth a funcționat foarte bine pentru noi într-un mediu de producție, unde am generat pentru prima oară un singur borcan folosind un jar (plugin de grăsime pentru a eclipsa) și apoi l-am înfășurat cu JSmooth.

(Vă rugăm să rețineți că am dorit o distribuție fără instalare a unui singur fișier, care ar putea promova instalarea JRE dacă este necesar).

A funcționat atât de bine încât am crezut că nimeni nu o folosește :)

0
adăugat
Cu excepția micilor quirks în interfața cu utilizatorul, dorința mea principală pentru JSmooth ar fi ca acesta să genereze fișiere EXE care erau și fișiere JAR valide. Info-zip auto extractor face acest lucru.
adăugat autor Thorbjørn Ravn Andersen, sursa

Încercați InstallJammer . Cel mai bun pe care l-am folosit vreodată. Liber și puternic. Și suficient pentru uz personal și comercial.

0
adăugat

Am folosit JSmooth în trecut și încă mai am noroc cu el. Interfața este destul de buggy, dar o folosesc doar pentru a construi fișierul de configurare o dată și apoi am construit de la Ant după aceea.

Ce probleme aveți cu JSmooth?

0
adăugat

Poate doriți să încercați instrumentul nostru, BitRock InstallBuilder . Deși este o aplicație nativă, mulți dintre clienții săi folosesc pachetul de aplicații Java pentru desktop. Dacă legați JRE-ul și creați lansator, etc., utilizatorul nu trebuie să știe că instalează o aplicație Java. Este o platformă încrucișată, astfel încât să puteți genera programe de instalare atât pentru Windows cât și pentru Mac (și Linux, Solaris, etc.). Ca instrumentul install4j menționat într-un alt post, este un instrument comercial, dar avem licențe gratuite pentru proiecte open source și reduceri speciale pentru microISV/small business, etc. De asemenea, a vrut să sublinieze că acesta este un instrument de instalare, deci nu va răspunde nevoilor dvs. dacă căutați numai un singur fișier executabil.

0
adăugat

Am folosit gratuit Launch4J pentru a crea un lansator personalizat pentru programele mele Java pe Windows. În combinație cu Instalator NSIS puteți crea un pachet frumos pentru utilizatorii dvs. de Windows.

Edit: Did not see that you use SWT. Don't know if it works with SWT as well, because I used only Swing in my apps.

0
adăugat

În compania mea folosim Launch4J pentru a crea fișierul exe și NSIS pentru a crea programul de instalare, cu aplicații SWT.

Am folosit-o de ani de zile în mai multe aplicații comerciale și perechea funcționează bine.

0
adăugat

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.

0
adăugat
Orice șansă ați învățat cum să pachetați Java pe Linux?
adăugat autor Thunderforge, sursa
"Mai întâi există fișierul install4j.xml" - Um, ar trebui să spună lansarea.jml sau ceva de genul?
adăugat autor Jonik, sursa
nu fără a verifica acest lucru
adăugat autor Liam, sursa
probabil prea prea scump pentru majoritatea aplicațiilor software de hobby :)
adăugat autor willcodejavaforfood, sursa
@willcodejavaforfood - lansarea4j și NSIS sunt gratuite.
adăugat autor Brian Kelly, sursa
Nu că am încercat deja acest lucru, dar pare foarte complet, votează acest răspuns!
adăugat autor Scott Bennett-McLeish, sursa

În compania mea folosim lansarea 4J și NSIS pentru distribuția ferestrelor și pentru distribuția Debian și Java Web Start pentru sistemul de operare general. Acest lucru funcționează destul de bine.

0
adăugat

Acum puteți face acest lucru prin Netbeans! Este foarte ușor și funcționează perfect. Consultați acest tutorial pe site-ul Netbeans.

0
adăugat

Have you considered Advanced Installer?

I have used it severally especially for Windows and Mac. No scripting or Ant required. All GUI. Very simple and understandable. Ain't free but worth every penny.

- Lauch as Administrator
- File Association
- Custom Install Themes + In built Themes
- Package with JRE
- Install location
- Native Splash screen implementation
- You can event create services and installation events
- Prerequisites
- JRE minimum version and maximum version

Si mult mai mult. Și nu-l răsuciți, nu am nici o legătură cu tipii ... App-ul lor este doar minunat.

0
adăugat