विंडोज/लिनक्स डेस्कटॉप के लिए जावा एप्स पैकेजिंग

मैं GUI प्रतिपादन के लिए ग्रहण एसडब्ल्यूटी लाइब्रेरी का उपयोग कर डेस्कटॉप के लिए जावा में एक एप्लिकेशन लिख रहा हूं। मुझे लगता है कि एसडब्ल्यूटी डेस्कटॉप पर स्वीकृति के लिए जावा को सबसे बड़ा बाधा प्राप्त करने में मदद करता है: अर्थात् एक सतत, उत्तरदायी इंटरफ़ेस वाला जावा एप्लिकेशन प्रदान करना जो आपके डेस्कटॉप पर किसी अन्य ऐप से संबंधित दिखता है। हालांकि, मुझे लगता है कि एक आवेदन पैकेजिंग अभी भी एक मुद्दा है।

ओएस एक्स मूल रूप से मूल अनुप्रयोग बंडलों में जावा ऐप्स को लपेटने के लिए एक आसान तंत्र प्रदान करता है, लेकिन विंडोज/लिनक्स के लिए एक ऐप तैयार करता है जिसके लिए उपयोगकर्ता को बदसूरत बैच फ़ाइल चलाने या किसी .jar पर क्लिक करने की आवश्यकता नहीं होती है। संभवतः लिनक्स पर ऐसा कोई मुद्दा नहीं है, जहां उपयोगकर्ता थोड़ा अधिक तकनीक-समझदार होने की संभावना है, लेकिन विंडोज़ पर मैं नियमित रूप से चलाने के लिए एक नियमित .exe चाहता हूं।

क्या जावा के लिए किसी भी .exe पीढ़ी के उपकरण के साथ कोई अनुभव है जो वहां हैं? मैंने जेएसमुथ की कोशिश की है लेकिन इसके साथ कई मुद्दे हैं। क्या विजुअल स्टूडियो को तोड़ने और अपना खुद का रोल करने से पहले कोई बेहतर समाधान है?

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

0
ro fr bn
कृपया जेएसमुथ के साथ आपके पास उन मुद्दों को सूचीबद्ध करें।
जोड़ा लेखक Thorbjørn Ravn Andersen, स्रोत

17 उत्तर

मैं उसी के माध्यम से चला गया और पाया कि सभी मुफ्त विकल्प बहुत अच्छे नहीं थे। ऐसा लगता है कि आप अपना खुद का लिख ​​लेंगे। मुझे यह देखने में दिलचस्पी होगी कि किसी के पास एक मुफ्त/सस्ता विकल्प है जो काम करता है

0
जोड़ा

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

0
जोड़ा
install4j पूरी तरह से देशी उत्पादन करने वाला एक अच्छा काम करता है .exe विंडोज इंस्टालर (यह अन्य लक्षित प्लेटफार्मों का भी समर्थन करता है)। साथ ही, यह विशेष रूप से जावा सॉफ़्टवेयर को तैनात करने के लिए एक शानदार विकल्प है। इसके साथ मेरे अनुभवों के बारे में अधिक जानकारी: stackoverflow.com/questions/759855/… हालांकि यह एक वाणिज्यिक उपकरण है,
जोड़ा लेखक Jonik, स्रोत

क्या आपने जावा वेब स्टार्ट के बारे में सोचा है? यहां जावा वेब के साथ एक SWT एप्लिकेशन को तैनात करने के लिए विशेष रूप से एक ट्यूटोरियल है प्रारंभ।

0
जोड़ा

एक और विकल्प जो मैं विचार कर रहा था: स्क्रैच से मूल लॉन्चर लिखने के बजाय, ग्रहण अपने स्वयं के लॉन्चर के लिए स्रोत कोड के साथ आता है, और शायद यह मेरे ऐप के लिए पुनर्निर्मित किया जा सकता है।

यह एक शर्म की बात है कि सूर्य ने कभी भी जेडीके में कुछ भी शामिल नहीं किया।

0
जोड़ा
असल में, उन्होंने किया, तरह। ग्रहण के निष्पादन योग्य जेएनवी को जेवीएम लॉन्च करने के लिए उपयोग करता है, कोई अन्य प्रदाता जेवीएम इन-प्रोसेस लॉन्च करने के लिए मूल बाइनरी बना सकता है।
जोड़ा लेखक Heath Borders, स्रोत

शायद आपको IzPack पर एक नज़र डालना चाहिए। मैंने कुछ साल पहले एक बहुत अच्छा इंस्टॉलर बनाया था और मैं शर्त लगाता हूं कि वे अभी भी इसे सुधार रहे हैं। यह दस्तावेज़ IIRC शुरू करने के लिए दस्तावेज़, द्विआधारी और एक क्लिक करने योग्य लिंक की स्थापना की अनुमति देता है।

0
जोड़ा
वाह ओपनसोर्स और ऐसा लगता है कि यह अभी भी सक्रिय है जबकि jsmooth पिछले साल के अपडेट के बिना मृत लगता है।
जोड़ा लेखक willcodejavaforfood, स्रोत

क्या आपने सी/सी ++ में एक छोटा प्रोग्राम लिखने पर विचार किया है जो सिर्फ CreateProcess को कॉल करता है जार (या कक्षा) फ़ाइल के साथ जावा वीएम शुरू करने के लिए ?

आप विज़ुअल सी ++ एक्सप्रेस प्राप्त कर सकते हैं और स्टार्टअप प्रोग्राम को आसानी से एक साथ रख सकते हैं। यह एक दोस्ताना आइकन भी जोड़ना आसान बनाता है।

0
जोड़ा

अपने एप्लिकेशन को ग्रहण आरसीपी में परिवर्तित करने पर विचार करें। यह SWT में लिखा गया है, और ग्रहण आईडीई में पैकेजिंग टूल हैं जो सभी प्रमुख प्लेटफ़ॉर्म के लिए निष्पादन योग्य उत्पन्न करते हैं। विंडोज़ के लिए, यह एक ज़िप या आपके कोड वाले फ़ोल्डर उत्पन्न कर सकता है। एक सामान्य स्थापना अनुभव के लिए, मैं एनएसआईएस का उपयोग करता हूं। वास्तव में एक प्लेटफॉर्म ग्रहण समर्थन के लिए सामान्य इंस्टॉलर बनाने के लिए ग्रहण पर एक संकुल जनरेटर प्रोजेक्ट है।

0
जोड़ा
मैंने ग्रहण आरसीपी माना है, लेकिन यह मेरे प्रोजेक्ट के लिए थोड़ा भारी है, जिसका उद्देश्य हल्का डेस्कटॉप ब्लॉग-पोस्टिंग टूल होना है।
जोड़ा लेखक alexmcchessers, स्रोत
ग्रहण आरसीपी इतना बड़ा नहीं है। यदि आप केवल मूल UI के लिए आवश्यक कक्षाएं रखते हैं, तो आपकी परियोजनाएं केवल org.eclipse.runtime.core और org.eclipse.ui पर निर्भर करती हैं, आप 8 एमबी से कम हैं, और आपको अपनी निर्भरताओं को प्रबंधित करने की अनुमति देने के लिए एक अच्छा मंच मिलता है ।
जोड़ा लेखक Mario Ortegón, स्रोत

जेएसमुथ ने हमारे लिए उत्पादन वातावरण में बहुत अच्छा काम किया है, जहां मैंने पहली बार एक-जार (वसा जार प्लगइन ग्रहण करने के लिए) का उपयोग करके एक सिंगल जार बनाया था और फिर इसे जेएसमुथ के साथ लपेट लिया था।

(कृपया ध्यान दें कि मैं एक फ़ाइल का नो-इंस्टॉलेशन वितरण चाहता था, जो आवश्यक होने पर जेआरई स्थापित करने के लिए प्रोमेट कर सकता था)।

यह इतना अच्छा काम किया है कि मैंने सोचा कि कोई इसका उपयोग नहीं कर रहा था :)

0
जोड़ा
उपयोगकर्ता इंटरफ़ेस में छोटे क्विर्क के अलावा, जेएसमुथ के लिए मेरी मुख्य इच्छा इसके लिए EXE फ़ाइलों को उत्पन्न करने के लिए होगी जो वैध JAR फ़ाइलें भी थीं। जानकारी-ज़िप स्वयं निकालने वाला यह करता है।
जोड़ा लेखक Thorbjørn Ravn Andersen, स्रोत

कृपया InstallJammer आज़माएं। सबसे अच्छा मैंने कभी भी उपयोग किया है। नि: शुल्क और शक्तिशाली। और व्यक्तिगत और वाणिज्यिक उपयोग के लिए पर्याप्त है।

0
जोड़ा

मैंने अतीत में जेएसमुथ का उपयोग किया है, और इसके साथ अभी भी भाग्य है। यूआई बहुत छोटी है, लेकिन मैं केवल एक बार कॉन्फ़िगरेशन फ़ाइल बनाने के लिए इसका उपयोग करता हूं, और उसके बाद मैं उसके बाद चींटी से बना हूं।

जेएसमुथ के साथ आप क्या समस्याएं कर रहे हैं?

0
जोड़ा

आप हमारे टूल को आजमा सकते हैं, बिट्रॉक इंस्टॉलबिल्डर । यद्यपि यह एक मूल अनुप्रयोग है, लेकिन हमारे बहुत से ग्राहक इसका उपयोग डेस्कटॉप जावा अनुप्रयोगों को पैकेज करने के लिए करते हैं। यदि आप जेआरई को बंडल करते हैं और लॉन्चर बनाते हैं, तो उपयोगकर्ता को यह जानने की भी आवश्यकता नहीं है कि वे जावा एप्लिकेशन इंस्टॉल कर रहे हैं। यह क्रॉस प्लेटफॉर्म है, इसलिए आप विंडोज और मैक (और लिनक्स, सोलारिस इत्यादि) दोनों के लिए इंस्टॉलर जेनरेट कर सकते हैं। किसी अन्य पोस्ट में उल्लिखित install4j टूल की तरह, यह एक वाणिज्यिक टूल है, लेकिन हमारे पास मुफ्त लाइसेंस हैं ओपन सोर्स प्रोजेक्ट्स और माइक्रोआईएसवी/छोटे व्यवसाय आदि के लिए विशेष छूट के लिए, बस हमें एक ईमेल छोड़ दें। यह भी जोर देना चाहता था कि यह एक इंस्टॉलर टूल है, इसलिए यदि आप केवल एक फ़ाइल निष्पादन योग्य के लिए देख रहे हैं तो यह आपकी आवश्यकताओं को पूरा नहीं करेगा।

0
जोड़ा

मैंने विंडोज़ पर अपने जावा प्रोग्राम के लिए एक कस्टम लॉन्चर बनाने के लिए मुफ्त Launch4J का उपयोग किया है। मुफ्त NSIS इंस्टॉलर के साथ संयुक्त आप अपने विंडोज उपयोगकर्ताओं के लिए एक अच्छा पैकेज बना सकते हैं।

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
जोड़ा

मेरी कंपनी में हम EXE फ़ाइल बनाने के लिए Launch4J का उपयोग करते हैं, और NSIS

हमने इसे कई वाणिज्यिक अनुप्रयोगों में वर्षों से उपयोग किया है और जोड़ी ठीक काम करती है।

0
जोड़ा

पॉक्सू के जवाब पर अनुवर्ती करने के लिए, मैं लॉन्च 4j और एनएसआईएस का उपयोग अपनी परियोजना पर कर रहा हूं और सोचा कि यह दिखाने में मददगार होगा कि मैं उनका उपयोग कैसे कर रहा हूं। विंडोज़ के लिए मैं क्या कर रहा हूं। बीटीडब्ल्यू, मैं मैक के लिए .app और .dmg बना रहा हूं, लेकिन यह पता नहीं लगाया गया है कि अभी तक लिनक्स के लिए क्या करना है।

लॉन्च 4j और एनएसआईएस की परियोजना प्रतियां

मेरी प्रोजेक्ट में मेरे पास "विक्रेता" निर्देशिका है और इसके नीचे मेरे पास "launch4j" और "nsis" की निर्देशिका है। प्रत्येक के भीतर प्रत्येक एप्लिकेशन के लिए इंस्टॉल की एक प्रति है। मुझे दूसरों को दोनों उत्पादों को स्थापित करने के लिए मजबूर करने और प्रत्येक को इंगित करने के लिए किसी प्रकार का पर्यावरण चर स्थापित करने के बजाय प्रोजेक्ट में स्थानीय प्रतिलिपि बनाना आसान लगता है।

स्क्रिप्ट फ़ाइलें

I also have a "scripts" directory in my project that holds various configuration/स्क्रिप्ट फ़ाइलें 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
  

और फिर एनएसआईएस स्क्रिप्ट rpgam-setup.nsis है। फ़ाइल नाम देने में मदद के लिए यह एक संस्करण तर्क ले सकता है।

; 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

चींटी एकीकरण

उपरोक्त को संभालने के लिए मेरे एंटी buildfile (build.xml) में मेरे कुछ लक्ष्य हैं। लॉन्च 4j के चींटी कार्यों को आयात करने के लिए पहले मैं टेल एंट:



मेरे पास रैपर निष्पादन योग्य बनाने के लिए एक सरल लक्ष्य है:


    

और इंस्टॉलर बनाने के लिए एक और लक्ष्य:


    <!-- Lay out files needed for building the installer -->
    
    
    
        
        
    
    
         
    
    

    

    <!-- Build the installer using NSIS -->
    
        
        
    

इसका शीर्ष भाग इंस्टॉलर को अस्थायी स्थान पर आवश्यक फ़ाइलों की प्रतिलिपि बनाता है और दूसरा आधा उस स्क्रिप्ट को निष्पादित करता है जो इंस्टॉलर बनाने के लिए इसका उपयोग करता है।

0
जोड़ा
लिनक्स पर जावा को पैकेज करने का तरीका जानने का कोई मौका?
जोड़ा लेखक Thunderforge, स्रोत
"पहले install4j.xml फ़ाइल है" - उम, क्या इसे launch4j.xml या कुछ कहना चाहिए?
जोड़ा लेखक Jonik, स्रोत
इसे सत्यापित किए बिना नहीं
जोड़ा लेखक Liam, स्रोत
संभवतः अधिकांश शौक सॉफ्टवेयर अनुप्रयोगों के लिए बहुत महंगा तरीका :)
जोड़ा लेखक willcodejavaforfood, स्रोत
@ विल्लकोडावाफॉर्फूड - लॉन्च 4 जे और एनएसआईएस मुक्त हैं।
जोड़ा लेखक Brian Kelly, स्रोत
ऐसा नहीं है कि मैंने वास्तव में अभी तक यह कोशिश की है, लेकिन यह बहुत पूरा लगता है, इस जवाब को वोट दें!
जोड़ा लेखक Scott Bennett-McLeish, स्रोत

मेरी कंपनी में हम विंडोज वितरण के लिए लॉन्च 4 जे और एनएसआईएस का उपयोग करते हैं, और डीबियन वितरण के लिए जेडीबी, और सामान्य ऑपरेटिंग सिस्टम के लिए जावा वेब स्टार्ट का उपयोग करते हैं। यह काफी ठीक काम करता है।

0
जोड़ा

अब आप Netbeans के माध्यम से ऐसा कर सकते हैं! यह वास्तव में आसान है और पूरी तरह से काम करता है। Netbeans वेबसाइट पर यह ट्यूटोरियल देखें।

0
जोड़ा

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

और भी काफी। और इसे मुड़ें मत, मेरे दोस्तों के साथ कोई संबंध नहीं है ... उनकी ऐप बस कमाल है।

0
जोड़ा