2009-12-04 11 views
5

मेरे पास एक एप्लिकेशन है जिसके लिए हम इंस्टॉलर बनाने के लिए IzPack का उपयोग करते हैं। इंस्टॉलर अपने वर्तमान स्थिति में ठीक काम कर रहा है, हालांकि, मुझे कार्यक्षमता जोड़ने की आवश्यकता है जो पर सॉफ़्टवेयर के मौजूदा संस्करण को स्थापित करने में सक्षम बनाता है।सॉफ़्टवेयर के मौजूदा संस्करण के लिए IzPack tocheck कैसे प्राप्त करें?

मुझे लगता है कि IzPack CheckedHelloPanel का उपयोग करके बॉक्स के बाहर इसका समर्थन करता है, दुर्भाग्य से केवल विंडोज के लिए काम करता है, क्योंकि यह विंडोज रजिस्ट्री पर निर्भर करता है।

क्या इज़पैक को कॉन्फ़िगर करने का कोई तरीका है कि यह मौजूदा इंस्टॉलेशन का पता लगाने में सक्षम है?

मुझे यह पता लगाने में सक्षम होना चाहिए कि क्या कोई है और केवल उपयोगकर्ता को सूचित करने वाला संदेश प्रदर्शित करता है ... उपयोगकर्ता को मौजूदा इंस्टॉलेशन के अनइंस्टॉलर को ट्रिगर करने का विकल्प देने के लिए बोनस पॉइंट्स।


  • मान लें कि सॉफ्टवेयर केवल नए संस्थापक
  • IzPack का उपयोग कर केवल स्थापित किया जाएगा: विकल्प का सुझाव नहीं करते कृपया, हम है कि अब
  • नहीं बदल सकते हैं जैसा कि आप <validator> उपयोग करने का सुझाव हैं, तो शामिल करें सत्यापनकर्ता वर्ग का एक कोड नमूना, क्योंकि मैंने इसे माना है, लेकिन यह नहीं पता कि

उत्तर

0

यह केवल विंडोज पर काम करता है, क्योंकि केवल विंडोज़ में रजिस्ट्री है। हालांकि, लिनक्स ऐप्स में परंपरागत रूप से एकीकृत स्थानों को अनुकूलित नहीं किया गया है। उदाहरण के लिए आपकी रन स्क्रिप्ट एक बिन फ़ोल्डर में जाएंगी, आपकी बाइनरी/ऑप्ट में जाएंगी, आपका प्रलेखन/var आदि में जाएगा। यह विचार है कि उपयोगकर्ता द्वारा चुनी गई एक एकल "आपकी-ऐप" निर्देशिका है और इसमें शामिल है एप्लिकेशन से संबंधित सब कुछ एक विंडोज अवधारणा है।

तो वैसे भी, लिनक्स में इसे हल करने का तरीका गैर-उपयोगकर्ता-परिभाषित स्थानों में आपके ऐप के विभिन्न हिस्सों को स्थापित करना है। इस तरह से आप जानते हैं कि आपका ऐप कहां होगा यदि यह पहले से इंस्टॉल हो गया था।

+0

धन्यवाद गेब्रियल, यह एक अच्छी रणनीति है, लेकिन मैं जानना चाहता था कि कोई इसे कैसे पूरा करेगा, इज़पैक के लिए विशिष्ट? – bguiz

+0

यह केवल मूल IzPack कार्यक्षमता है ... अपनी बाइनरी को विभिन्न स्थानों पर कॉपी करना। IzPack दस्तावेज़ों में पैक तत्व पर एक नज़र डालें: http://izpack.org/documentation/installation-files.html#the-packs-element-packs –

2

मैंने यह लिखा कि मेरे एप्लिकेशन को jboss इंस्टॉल पर स्थापित करने की अनुमति दें।

public class JBossChecker { 

private static boolean tempJBossEnv; 
private static boolean tempJBossDirectoryExists; 

static { 
    String s = System.getenv("JBOSS_HOME"); 
    tempJBossEnv= (s!=null); 

    if(tempJBossEnv) { 
    File f = new File(s); 
    tempJBossDirectoryExists= (f.exists() && f.isDirectory()); 
    } 
    hasJBossEnv =tempJBossEnv; 
    hasJBossDir = tempJBossDirectoryExists; 
} 

public static boolean hasJBossDir; 
public static boolean hasJBossEnv; 

public static void main(String[] args){ 
    System.out.println("Jboss environment "+hasJBossEnv); 
    System.out.println("Jboss directory "+hasJBossDir); 

} 
} 

फिर संस्थापक अंत में थोड़ा यकीन izpack संस्थापक जार में जोड़ देता है बनाता है की तरह

<conditions> 
    <condition type="java" id="jbossEnv"> 
      <java> 
       <class>au.com.codarra.ela.installer.JBossChecker</class 
       <field>hasJBossEnv</field> 
      </java> 
      <returnvalue type="boolean">true</returnvalue> 
</condition> 

<condition type="java" id="jbossDir"> 
      <java> 
       <class>au.com.codarra.ela.installer.JBossChecker</class> 
       <field>hasJBossDir</field> 
      </java> 
      <returnvalue type="boolean">true</returnvalue> 
</condition> 

</conditions> 

<installerrequirements> 
<installerrequirement condition="jbossEnv" message="Your system does not have the environment variable JBOSS_HOME set. Cannot update your system. Is XXXX installed on this system?" /> 
<installerrequirement condition="jbossDir" message="Your system does not have a directory at the location in the environement variable JBOSS_HOME . Cannot update your system. Is XXXX installed on this system?" /> 
</installerrequirements> 

<dynamicvariables> 
<variable name="INSTALL_PATH" value="${ENV[JBOSS_HOME]}"/> 
</dynamicvariables> 
<jar src="c:\dev\xxxx\build\installer.jar" /> 

एक वर्ग है।

+0

@Tim क्या आप जावा कोड को इंडेंट/रीफॉर्मेट कर सकते हैं? यह एसओ द्वारा पार्स नहीं हो रहा है। कोड को दोबारा सुधारने के लिए – bguiz

+0

@Tim धन्यवाद! मेरे पास एक और सवाल है: आप अपनी कक्षा कहां रखते हैं, 'जेबॉस चेकर' - इंस्टॉलर चलाए जाने पर आप क्लासपाथ पर लोड कैसे करते हैं? – bguiz

+0

कोड * जार * की आखिरी पंक्ति इस जार को izpack इंस्टॉलर में विलीन करती है। तो यह लिखित के रूप में काम करता है। –