ईवेंट विधि से Exec
फ़ंक्शन को कॉल करके आप इसे निष्पादित कर सकते हैं, जब चरण ssInstall
होगा। में निम्न स्क्रिप्ट दिखाया गया है, कैसे शामिल करने के लिए अपना सेटअप और कैसे में MySQL संस्थापक निकालने और यह निष्पादित करने के लिए सही से पहले स्थापना शुरू होता है:
:
#define MySQLInstaller "mysql-essential-6.0.11-alpha-winx64.msi"
[Files]
Source: "{#MySQLInstaller}"; Flags: dontcopy
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
Params: string;
ResultCode: Integer;
begin
if (CurStep = ssInstall) then
begin
ExtractTemporaryFile('{#MySQLInstaller}');
Params := '/i ' + AddQuotes(ExpandConstant('{tmp}\{#MySQLInstaller}')) + ' /qn';
if not Exec('msiexec', Params, '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
MsgBox('Installation of MySQL failed. Exit code: ' + IntToStr(ResultCode),
mbInformation, MB_OK);
end;
end;
अप्रयुक्त प्रगति बार का उपयोग
चूंकि MySQL खत्म होने से पहले कुछ समय लगता है, और आपने इंस्टॉलर के उपयोगकर्ता इंटरफ़ेस को छिपाने का निर्णय लिया है (वैसे भी असुरक्षित भी हो सकता है), आप प्रगति पट्टी का उपयोग करने के लिए स्क्रिप्ट का विस्तार कर सकते हैं अपने शुरुआती पॉसी में दिखाया गया स्थापना के दौरान टयन और उस समय अप्रयुक्त है। निम्न कोड स्विच (कम से कम विंडोज एक्सपी सिस्टम पर) इनो सेटअप की स्थापना प्रगति बार marquee style
पर और स्थिति लेबल में एक विवरण दिखाता है। जब MySQL स्थापना किया जाता है, प्रगति बार सामान्य मोड और वास्तविक Inno सेटअप स्थापना शुरू होता है में वापस स्विच है:
#define MySQLInstaller "mysql-essential-6.0.11-alpha-winx64.msi"
[Files]
Source: "{#MySQLInstaller}"; Flags: dontcopy
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
Params: string;
ResultCode: Integer;
begin
if (CurStep = ssInstall) then
begin
WizardForm.ProgressGauge.Style := npbstMarquee;
WizardForm.StatusLabel.Caption := 'Installing MySQL. This may take a few minutes...';
ExtractTemporaryFile('{#MySQLInstaller}');
Params := '/i ' + AddQuotes(ExpandConstant('{tmp}\{#MySQLInstaller}')) + ' /qn';
if not Exec('msiexec', Params, '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
MsgBox('Installation of MySQL failed. Exit code: ' + IntToStr(ResultCode),
mbInformation, MB_OK);
WizardForm.ProgressGauge.Style := npbstNormal;
WizardForm.StatusLabel.Caption := '';
end;
end;
मैं व्यक्तिगत रूप से संस्थापक की इस तरह के लिए 'qn' विकल्प का उपयोग नहीं होता। इसमें कुछ समय लग सकता है (चूंकि यह एक डेटाबेस सिस्टम है), और ध्यान दें कि उस समय के दौरान MySQL की स्थापना प्रगति पर होगी, उपयोगकर्ता पृष्ठभूमि के साथ कुछ भी नोटिस के बिना "खाली" समग्र स्थापना प्रगति पट्टी को देखेगा। – TLama
उपयोगकर्ता नोटिस के लिए मैं का उपयोग कर रहा हूं इस तरह और उपयोगकर्ता इसे देख सकता है। क्या आपके पास बेहतर तरीका है? –
मुझे लगता है कि यह ठीक है, लेकिन आप 'ECHO' आदेश कहां निष्पादित करेंगे? क्या आपके पास बैच फ़ाइल है? – TLama