2010-12-14 11 views
6

से इनो सेटअप स्थापना से बाहर निकलें क्या inno सेटअप के साथ बनाए गए इंस्टॉलर के [कोड] सेक्शन में किसी फ़ंक्शन से इंस्टॉलेशन से बाहर निकलना संभव है?[कोड]

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

+1

** हाँ, यह संभव है। ** आप उम्मीद कर रहे हैं किसी को आप के लिए कोड लिखने होगा? क्या आप कम से कम उस कोड को पोस्ट कर सकते हैं जो आपके पास पहले से ही '[code'] सेक्शन में है? –

+0

प्रश्न का उत्तर यहां दिया गया था: http://stackoverflow.com/questions/6345920/inno-setup-how-to-abort-terminate-setup-during-install – 010110110101

उत्तर

3

इनोइसेटअप सहायता में InitializeSetup और Abort पर एक नज़र डालें। जैसा कि कोडी ने कहा, यह संभव है। यदि आपको समस्याएं आ रही हैं, तो आपने जो किया है और जो समस्या हो रही है उसे पोस्ट करें।

0

कहीं भी अपने कोड अनुभाग में आप चेक करते हैं। सही? उस चेक के परिणामस्वरूप आप स्थापना से बाहर निकलना चाहते हैं। बाहर निकलें करने के लिए लाइन में कहें:

PostMessage (WizardForm.Handle, $0010, 0, 0); { quit setup, $0010=WM_CLOSE } 

उम्मीद है कि इस मदद करता है

+0

यह एक मूक मोड का उपयोग करके आसानी से पारित किया जा सकता है ('/मूक') –

7

तरह से मैं यह कर रहा है:

procedure ExitProcess(exitCode:integer); 
    external '[email protected] stdcall'; 

और यह का उपयोग करने का तरीका है:

[Code] 
    if .... then begin 
    ExitProcess(0); 
    end; 
+1

हालांकि यह उपयोगकर्ता परिप्रेक्ष्य से काम करता प्रतीत होता है, यह अस्थायी फ़ाइलों को पीछे छोड़ देता है। – gogowitsch

+0

यह उत्तर विज़ार्ड का उपयोग करता है। बंद करें जो इस समस्या से बचने के लिए प्रतीत होता है। http://stackoverflow.com/questions/6345920/inno-setup-how-to-abort-terminate-setup-during-install – 010110110101

+0

अब अगर मैं बाहर निकलना चाहता हूं तो मैं केवल प्रॉम्प्ट दबा सकता हूं ... –

10

आप abort() का उपयोग कर सकते हैं यदि आप इनमें हैं घटनाओं:

InitializeSetup 
InitializeWizard 
CurStepChanged(ssInstall) 
InitializeUninstall 
CurUninstallStepChanged(usAppMutexCheck) 
CurUninstallStepChanged(usUninstall) 
3

चल रहा है, जब आवश्यक शर्तें परीक्षण विफल रहता है, बस InitializeSetup से False लौटने से इंस्टॉलर को रोकने के लिए। विज़ार्ड शो से पहले यह इंस्टॉलर से बाहर निकल जाएगा।

function InitializeSetup(): Boolean; 
begin 
    Result := True; 

    if not PrerequisitesTest then 
    begin      
    SuppressibleMsgBox('Prerequisites test failed', mbError, MB_OK, MB_OK); 
    Result := False; 
    end; 
end; 

enter image description here


आप आवश्यक शर्तें परीक्षण करने के लिए की जरूरत है सही से पहले स्थापना केवल शुरू होता है (यानी InitializeSetup बहुत जल्दी है), तो आप CurStepChanged(ssInstall) से Abort function कॉल कर सकते हैं:

procedure CurStepChanged(CurStep: TSetupStep); 
begin 
    if CurStep = ssInstall then 
    begin 
    if not PrerequisitesTest then 
    begin      
     SuppressibleMsgBox('Prerequisites test failed', mbError, MB_OK, MB_OK); 
     Abort; 
    end; 
    end; 
end; 

enter image description here


हालांकि इस परिदृश्य के लिए, सेटअप से बाहर निकलने के बजाय PrepareToInstall event function तंत्र का उपयोग करने पर विचार करें।

function PrepareToInstall(var NeedsRestart: Boolean): String; 
begin 
    Result := ''; 

    if not PrerequisitesTest then 
    begin      
    Result := 'Prerequisites test failed'; 
    end; 
end; 

enter image description here


आप संस्थापक किसी अन्य समय समाप्त के लिए मजबूर करने की जरूरत है, ExitProcess WinAPI कॉल का उपयोग करें:

procedure ExitProcess(uExitCode: Integer); 
    external '[email protected] stdcall'; 

function NextButtonClick(CurPageID: Integer): Boolean; 
begin 
    if CurPageID = wpReady then 
    begin 
    if not PrerequisitesTest then 
    begin      
     SuppressibleMsgBox('Prerequisites test failed', mbError, MB_OK, MB_OK); 
     ExitProcess(1); 
    end; 
    end; 
    Result := True; 
end; 

हालांकि इस बल्कि असुरक्षित बाहर निकलें है, इसलिए इसका इस्तेमाल केवल अंतिम उपाय दृष्टिकोण के रूप में।

enter image description here