2012-10-19 12 views
7

के साथ इंस्टॉलेशन के लिए पूर्व-आवश्यकता के रूप में .NET Framework मेरे पास एक एप्लिकेशन है जो मुझे जांचना है कि .NET FW 3.5 पहले से स्थापित है या नहीं। अगर पहले से स्थापित है, तो मैं एक संदेश बॉक्स खोलना चाहता हूं जो उपयोगकर्ता को इसे माइक्रोसॉफ्ट वेबसाइट से डाउनलोड करने और इंस्टॉलेशन को रोकने के लिए कहता है।इनो-सेटअप

मुझे निम्न कोड मिला। क्या आप मुझे बता सकते हैं:

ए) मुझे इस फ़ंक्शन को कहां से कॉल करना चाहिए? बी) क्या मुझे जांचना चाहिए कि .NET FW 3.5 या उच्च संस्करण पहले से स्थापित है या नहीं? जैसे अगर एफडब्ल्यू 4.0 स्थापित है - क्या 3.5 स्थापित करने के लिए आवश्यक है? आप जब स्थापना शुरू होता है लेकिन विज़ार्ड रूप में दिखाया गया है से पहले, InitializeSetup ईवेंट हैंडलर इसके लिए का उपयोग अपने जाँच करने के लिए चाहते हैं

आप

function IsDotNET35Detected(): Boolean; 
var 
    ErrorCode: Integer; 
    netFrameWorkInstalled : Boolean; 
    isInstalled: Cardinal; 
begin 
    result := true; 

    // Check for the .Net 3.5 framework 
    isInstalled := 0; 
    netFrameworkInstalled := RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5', 'Install', isInstalled); 
    if ((netFrameworkInstalled) and (isInstalled <> 1)) then netFrameworkInstalled := false; 

    if netFrameworkInstalled = false then 
    begin 
    if (MsgBox(ExpandConstant('{cm:dotnetmissing}'), mbConfirmation, MB_YESNO) = idYes) then 
    begin 
     ShellExec('open', 
     'http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6&DisplayLang=en', 
     '','',SW_SHOWNORMAL,ewNoWait,ErrorCode); 
    end; 
    result := false; 
    end; 

end; 

उत्तर

6

धन्यवाद। जब आप उस हैंडलर पर झूठी वापसी करते हैं, तो सेटअप रद्द हो जाएगा, जब सत्य, सेटअप शुरू हो जाएगा। यहां आपके द्वारा पोस्ट की गई एक छोटी सी अनुकूलित स्क्रिप्ट है:

[Setup] 
AppName=My Program 
AppVersion=1.5 
DefaultDirName={pf}\My Program 

[CustomMessages] 
DotNetMissing=.NET Framework 3.5 is missing. Do you want to download it ? Setup will now exit! 

[Code] 
function IsDotNET35Detected: Boolean; 
var 
    ErrorCode: Integer; 
    InstallValue: Cardinal; 
begin 
    Result := True; 
    if not RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5', 
    'Install', InstallValue) or (InstallValue <> 1) then 
    begin 
    Result := False; 
    if MsgBox(ExpandConstant('{cm:DotNetMissing}'), mbConfirmation, MB_YESNO) = IDYES then 
     ShellExec('', 'http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6&DisplayLang=en', 
     '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode); 
    end; 
end; 

function InitializeSetup: Boolean; 
begin 
    Result := IsDotNET35Detected; 
end; 
+0

मुझे पता है कि मैंने आपके किसी भी प्रश्न का उत्तर नहीं दिया है। मैं जल्द ही एक अपडेट के साथ वापस आऊंगा ... लेकिन मुझे अब जाना है ... – TLama

+0

धन्यवाद। मैं इसे आजमाऊंगा। उच्च (> 3.5) संस्करणों के बारे में क्या? क्या यह कहना सच है कि अगर एफडब्ल्यू 4.0 स्थापित है, तो इसमें 3.5 की जरूरतों को शामिल किया गया है? –

+0

यह आपके आवेदन पर निर्भर करता है जैसा कि यह ['इस आलेख'] (http://msdn.microsoft.com/en-us/library/ff602939.aspx) में कहा गया है। लेकिन कोई भी स्पष्ट रूप से नहीं कहा, कि अगर आप उदा। .NET Framework 3.5 के बिना कंप्यूटर पर .NET 4.5 स्थापित है, कि आप एक पहचान के ['इस तरह'] (http://support.microsoft.com/kb/318785/en-us) को लागू करने में सक्षम होंगे। – TLama