2011-07-25 25 views
8

वर्तमान में मेरी बैच फ़ाइल [रन] अनुभाग में है। मुझे [बैच] अनुभाग से पहले निष्पादित करने के लिए मेरी बैच फ़ाइल की आवश्यकता है। क्या इनो सेटअप में ऐसा करने का कोई तरीका है? वर्तमान में [चलाएं] अनुभाग हमेशा [फ़ाइलें] अनुभाग के बाद निष्पादित करता है।इनो सेटअप [बैच] से पहले बैच फ़ाइल निष्पादित करें

[Run] 
Filename: "C:\Users\Scripts\Install\Install.bat"; Parameters: {code:GetDatabaseName} 

[Files] 
Source: "C:\Users\MyApp\*"; DestDir: "\\MyServer\MyApp"; Flags: recursesubdirs createallsubdirs 

उत्तर

11

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

फ़ाइल सेटअप पहले से निकाले जाने की आवश्यकता है, तो आप यह ExtractTemporaryFile()

+0

+1 और सुझाव के लिए धन्यवाद और उस मार्ग का प्रयास करेंगे। – odez213

5

आप InitializeSetup ईवेंट + कुछ पास्कल स्क्रिप्टिंग का उपयोग कर सकते हैं।

देखें; How to run a file before setup with Inno Setup

उस उदाहरण में उल्लेख नहीं किया गया है; इंस्टॉलर से फ़ाइल प्राप्त करने के लिए आप इसे चलाने के लिए ExtractTemporaryFile('your.bat') का उपयोग करेंगे Exec(ExpandConstant('{tmp}\your.bat ...

+0

मैं सेटअप के बाद यह आवश्यक के बाद से मैं उपयोगकर्ता इनपुट मूल्य हड़पने के लिए की आवश्यकता होगी। सुझाव के लिए – odez213

+0

+1 – odez213

4

सतत Deanna के महान जवाब के साथ के बाद का होना कर सकते हैं, कोड उदाहरण:

[code] 
function PrepareToInstall(var NeedsRestart: Boolean): String; 
var 
    ResultCode: integer; 
begin 
    Exec(ExpandConstant('{app}\serviceDeployment\unInstallService.bat'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) 
end; 

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

आदेश एक त्रुटि स्ट्रिंग PrepareToInstall के दशक में इस लाइन को जोड़ने के वापस जाने के लिए में:

Result := 'Your Error Description'; 
+0

ठीक है, तो यह दिखाए जाने के लिए उचित होगा कि 'Exec' विफल होने पर त्रुटि को कैसे संभाला जाए, या जब निष्पादित लक्ष्य एक त्रुटि देता है (इस मामले में एक बैच स्क्रिप्ट कुछ' ERRORLEVEL 'लौटाती है)। – TLama

+0

एक्सेक बूलियन है। तो आप यह जांच सकते हैं कि यह सच है या गलत है। और परिणाम कोड में त्रुटि कोड है। यदि एक्सेक नहीं है (.........) तो प्रारंभ करें परिणाम: = 'आपका त्रुटि विवरण'; अंत – Danielle

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