scripting - MySQL स्थापित और लोड इनडो-सेटअप पर डाटाबेस लिपि




installer inno-setup (2)

आपके द्वारा MySQL स्थापित करने के बाद और इसे शुरू किया गया, MySQL स्क्रिप्ट फ़ाइल को लोड करना आसान है।

मुख्य पॉइंट mysql.exe -e पैरामीटर को " स्रोत " कमांड को पारित कर रहा है, इसलिए यह मेरी स्क्रिप्ट फ़ाइल लोड कर सकता है। "<" संकेत के साथ स्क्रिप्ट नाम पास करना मेरे लिए काम नहीं कर रहा था

[Files]
Source: "script.sql"; DestDir: "{tmp}"; Flags: deleteafterinstall;

[Run]
Filename: "{reg:HKLM\SOFTWARE\MySQL AB\MySQL Server 5.6,Location}\bin\mysql.exe"; \
 Parameters: "-u root -prootpassword -e ""source {tmp}\script.sql"""; \
 StatusMsg: "Loading MySQL Database Initial Data"; \
 Flags: runhidden waituntilterminated;

मैं स्टैक ओवरफ्लो पर बहुत सारी दस्तावेज़ों के माध्यम से पढ़ रहा हूं, आप लोग महान हैं! मैंने कुछ कोड लिया है जो किसी अन्य पोस्ट पर सुझाया गया था। मदद महान था! मैं mysql को लोड करने में सक्षम था और आरबेएन के लिए धन्यवाद करना शुरू कर दिया। हालांकि मैंने उस दस्तावेज को पढ़ा था जो अनुक्रम में डेटाबेस को स्वत: लोड करने का सुझाव दिया गया था। मुझे यह समझ नहीं आ रहा है। कोई भी मदद बहुत अच्छी रहेगी!

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Test"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "DispatchSystem.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{790A9827-137F-4D93-A981-1A5C38FFB8F8}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=C:\gd\FL\Project\xsbucks_vc\inno\
OutputBaseFilename=Logistics Dispatch
Compression=lzma
SolidCompression=yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "D:\SWW\CaLogistics\EXE\mysql-5.5.11-win32.msi"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\SWW\CaLogistics\EXE\DispatchSystem.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\SWW\CaLogistics\EXE\background.fw.png"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\SWW\CaLogistics\EXE\background.png"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\SWW\CaLogistics\EXE\background234.jpg"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\SWW\CaLogistics\EXE\database.sql"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\SWW\CaLogistics\EXE\ds.ini"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\SWW\CaLogistics\EXE\Ionic.Zip.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\SWW\CaLogistics\EXE\logo.jpg"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\SWW\CaLogistics\EXE\logo.png"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\SWW\CaLogistics\EXE\MySql.Data.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\SWW\CaLogistics\EXE\MySqlBackup.dll"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: msiexec; Parameters: "/i mysql-5.5.11-win32.msi /qn INSTALLDIR=""C:\mysql"""; WorkingDir:{app}; StatusMsg: Please wait while we install Mysql 5.5.11;  Flags: runhidden

Filename: C:\mysql\bin\mysqld.exe; Parameters:" --install"; WorkingDir: {app}; StatusMsg: Installing MySQL services; Description: Installing MySQL Service; Flags: runhidden

Filename: net.exe; Parameters: start mysql; StatusMsg: Starting MySQL server; Description: Starting MySQL Server; Flags: runhidden

Filename: C:\mysql\bin\mysql.exe; Parameters: "-e ""update mysql.user set password=PASSWORD('admin') where user='root';"" -u root"; WorkingDir: {app}; StatusMsg: Configuring MYSQL ; Flags: runhidden

Filename: C:\mysql\bin\mysql.exe; Parameters: "-e ""flush privileges;"" -u root -padmin"; WorkingDir: {app}; StatusMsg: Configuring Database Servers; Flags: runhidden

Filename: C:\mysql\bin\mysql.exe; Parameters: "-u root -padmin -h localhost --execute=""SOURCE database.sql"""; WorkingDir: {app}; StatusMsg: Loading Database; Flags: runhidden
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

[Code]
function MySQL_Is(): Boolean;
var
iResultCode: Integer;
begin
  Result := true;
  if (not RegKeyExists(HKLM, 'SOFTWARE\MySQL AB\MySQL Server 5.5')) or 
   (not FileExists(ExpandConstant('{reg:HKLM\SOFTWARE\MySQL AB\MySQL Server 5.5,Location}\bin\mysql.exe'))) 
  then begin
     ExtractTemporaryFile('mysql-5.5.11-win32.msi');
     Exec('msiexec.exe', '/i mysql-5.5.11-win32.msi /qn INSTALLDIR="C:\mysql"', 
      ExpandConstant('{tmp}'), SW_HIDE, ewWaitUntilTerminated, iResultCode);
         if not FileExists(ExpandConstant('{reg:HKLM\SOFTWARE\MySQL AB\MySQL Server 5.5,Location}\bin\mysql.exe')) then begin
            MsgBox('Something went wrong! Installation should be terminated', 
              mbInformation, MB_OK);
            Result := false;
         end;
  end;
end;

मैं इस समस्या को हल करने में कामयाब रहा। डेटाबेस को सीधे इनो स्क्रिप्ट से लोड करने के बजाय, मैंने एक बैच फ़ाइल में एसक्यूएल आज्ञाएं लिखीं और स्क्रिप्ट से .bat निष्पादित की।

इसे नोटपैड दस्तावेज़ में टाइप करें और इसे loadDB.bat के रूप में सहेजें। पहली पंक्ति आपके निर्देशिका का पथ सेट करती है जहां आपका mysql.exe स्थापित है। अगली पंक्ति एक खाली डेटाबेस बनाता है। (मुझे नहीं पता कि क्यों, लेकिन मैं पहले से ही सर्वर पर रिक्त डेटाबेस बनाने के बिना डेटाबेस फ़ाइल को लोड करने के लिए mysql नहीं मिल सकता है) अंतिम पंक्ति है mysql आदेश को डेटाबेस को अपने डेटाबेस से लोड करने के लिए , एसक्यूएल फ़ाइल

सीडी / डी सी: \ प्रोग्राम फ़ाइलें \ MySQL \ MySQL सर्वर 5.1 \ बिन

mysql -रूट -पाडमिन- "डेटाबेस mydatabase बनाएँ;"

mysql -रूट -पाडमिन mydatabase <"C: \ database.sql"

अब, [FILES] अनुभाग के नीचे आपकी INNO स्क्रिप्ट में .bat फ़ाइल जोड़ें

स्रोत: "पथ-टू-फाइल \ loadDB.bat"; DestDir: "{app}"; झंडे: उपेक्षा

और [RUN] सेक्शन के नीचे .bat को निष्पादित करें नोट करें कि यह पंक्ति [RUN] सेक्शन में अंतिम पंक्ति होनी चाहिए क्योंकि यह केवल MySQL सर्वर स्थापित होने के बाद ही निष्पादित होना चाहिए।

फ़ाइल नाम: "{app} \ loadDB.bat"

अब संकलन करें और सेटअप चलाएं।

एक तरफ नोट के रूप में: मैंने इसे करने का प्रयास किया लेकिन शायद अगर आप सही पैरामीटर के साथ सीधे आईरो स्क्रिप्ट में .bat में mysql कमांड जोड़ते हैं, तो आप बैच फ़ाइल की आवश्यकता के बिना डेटाबेस को लोड कर सकते हैं।

आशा है इससे तुम्हारी समस्या का समाधान हो गया होगा।





inno-setup