2012-05-21 17 views
5

मैं एक प्रोजेक्ट के लिए इंस्टॉलर बनाने के लिए इनो सेटअप का उपयोग कर रहा हूं, और मुझे जावा पर्यावरण चर सेट करने की आवश्यकता है, ताकि जब वे cmd चलाते हैं तो उन्हें कोई नहीं मिलता है जावा त्रुटि, या ऐसा कुछ नहीं मिला।इनो सेटअप - जावा पर्यावरण परिवर्तनीय सेट करना

मुझे इनो सेटअप और सेटिंग पर्यावरण चर से संबंधित कुछ अन्य पोस्ट मिली हैं, लेकिन क्या किसी को इस उदाहरण के लिए कुछ विशिष्ट पता है?

+0

जावा रनटाइम संस्थापक को पहले से ही ऐसा नहीं करती है ? – Deanna

उत्तर

10

जावा मानते हुए अपने डिफ़ॉल्ट स्थान प्रोग्राम फ़ाइलों/जावा, कुछ इस तरह अपने मामले में काम करना चाहिए स्थापित किया गया है:

[Registry] 
; set PATH 
Root: HKCU; Subkey: "Environment"; ValueType:string; ValueName:"PATH"; ValueData:"{olddata};{pf}\Java\bin"; Flags: preservestringtype 
; set JAVA_HOME 
Root: HKCU; Subkey: "Environment"; ValueType:string; ValueName:"JAVA_HOME"; ValueData:"{pf}\Java"; Flags: preservestringtype 

[Setup] 
; Tell Windows Explorer to reload the environment 
ChangesEnvironment=yes 

मुझे यकीन है कि आप सेट करना चाहते हैं जो वातावरण चर नहीं कर रहा हूँ - पथ या JAVA_HOME - इसलिए मैंने उन्हें दोनों जोड़ा है।

जावा इंस्टॉलर पथ में खुद को जोड़ने के बाद पैथ बदलना आवश्यक नहीं होना चाहिए; आईआईआरसी यह java.exe और javaw.exe को सिस्टम निर्देशिकाओं में से एक में प्रतिलिपि बनाता है।

+3

परिवर्तनों को पर्यावरण निर्देश को न भूलें। – Deanna

+0

@ दीना धन्यवाद, मुझे उस बारे में पता नहीं था! अब मैं अपने इंस्टॉलरों में से किसी एक से पुनरारंभ करने की आवश्यकता को हटा सकता हूं। – Joni

+0

देर से उत्तर के लिए खेद है, लेकिन यह वह जवाब था जिसे मैं ढूंढ रहा था और पूरी तरह से काम किया था। – Howes

2

@ जोनी का जवाब करने के लिए जोड़ा जा रहा है, तो आप रजिस्ट्री से जावा स्थापना निर्देशिका हो और स्क्रिप्ट स्थिरांक का उपयोग अपने वातावरण चर सेट करने के लिए कर सकते हैं:

(संपादित करें: कोड सुधार के लिए @TLama करने के लिए धन्यवाद)

[Registry] 
Root: HKCU; Subkey: "Environment"; ValueType:string; ValueName:"JAVA_HOME"; ValueData:"{code:GetJava32Path|6}"; Flags: preservestringtype 

[Code] 
const 
    RegKeyJRE = 'SOFTWARE\JavaSoft\Java Runtime Environment\'; 

function GetJava32Path(MinVersion: string): string; 
var 
    I: Integer; 
    Path: string; 
    Versions: TArrayOfString; 
begin 
    Result := ''; 
    if RegGetSubkeyNames(HKLM, RegKeyJRE, Versions) then 
    for I := 0 to GetArrayLength(Versions)-1 do 
     if (Versions[I][2] = '.') and (Versions[I][3] >= MinVersion) and 
     RegQueryStringValue(HKLM32, RegKeyJRE + Versions[I], 'JavaHome', Path) then 
     begin 
     Result := Path; 
     Exit; 
     end; 
end; 

(नायब मैं एक पास्कल स्क्रिप्ट विशेषज्ञ होने से दूर हूँ, कोड एक बहुत बेहतर हो सकता है, हालांकि अब यह @TLama द्वारा सही किया गया था :))

+0

आपका कोड निश्चित रूप से सही है (उन अतिरिक्त 'start..end' ब्लॉक को हटाकर [' छोटा '] (http://pastebin.com/bttNaCEG) हो सकता था, जेआरई रजिस्ट्री कुंजी पथ के लिए स्थिर हो सकता है (DRY प्रकार) और '''' ऑपरेटर का उपयोग करके एक 'if' हटाया जा सकता है, और फ़ंक्शन से वापस' ब्रेक 'के बजाय' निकास 'हो सकता था - सभी मामूली, या कॉस्मेटिक चीजें)। – TLama

+0

@TLama बहुत बहुत धन्यवाद, मैंने आपके कोड को चिपकाया है और कुछ चीजें सीखी हैं :) – Matthieu

+0

आपका बहुत स्वागत है! – TLama

संबंधित मुद्दे