Fórum Instalar o Mysql com Inno Setup Ajudem!!! #521387
29/05/2015
0
Boa Noite.
Assistir um video explicando como fazer o Setup do Sistema instalando o mysql fiz todos os procedimentos mais esta dando erro de Kernell.dll o video esta no site: http://www.4shared.com/file/45037371/67fff949/video_innosetup_mysql_delphi.html?dirPwdVerified=ab1866fd
Uso Delphi XE 2
Meu form:
unit PrincipalUnit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs,IniFiles, Vcl.StdCtrls,StrUtils,
Vcl.Buttons;
type
TForm1 = class(TForm)
lbl1: TLabel;
Spd1: TBitBtn;
function CreateProcessSimple(cmd:string):Boolean;
function ReplaceStr(Sstring: string; OldChar, NewChar:Char):string;
procedure FormShow(Sender: TObject);
procedure Spd1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.CreateProcessSimple(cmd:string):Boolean;
var
SUInfo:TStartupInfo;
ProcInfo:TProcessInformation;
begin
FillChar(SUInfo, SizeOf(SUInfo), #0);
SUInfo.cb :=SizeOf(SUInfo);
SUInfo.dwFlags :=STARTF_USESHOWWINDOW;
SUInfo.cb :=SW_HIDE;
Result:= CreateProcess(nil,PChar(cmd), nil,nil,False,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,SUInfo,ProcInfo);
if (Result) then
begin
WaitForSingleObject(ProcInfo.hProcess,INFINITE);
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end;
function TForm1.ReplaceStr(Sstring: string; OldChar, NewChar:Char):string;
var
Temp:string;
I:Integer;
begin
Temp:='';
for I := 1 to Length (Sstring) do
begin
if Sstring[I] <> OldChar then
begin
Temp:= Temp+Sstring[I];
end
else
begin
temp:=temp+NewChar;
end;
end;
Result:=Temp
end;
procedure TForm1.Spd1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormShow(Sender: TObject);
var
logo:TInifile;
begin
lbl1.Caption:='Aguarde...';
lbl1.Refresh;
logo:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'mysql\my.ini');
try
logo.WriteString('mysqld','basedir','"'+ReplaceStr(ExtractFilePath(Application.ExeName),'\','/')+'mysql/"');
logo.WriteString('mysqld','basedir','"'+ReplaceStr(ExtractFilePath(Application.ExeName),'\','/')+'mysql/data/'+'"');
finally
logo.Free;
end;
CreateProcessSimple('cmd.exe /c ""'+ExtractFilePath(Application.ExeName)+'mysql\bin\mysqld.exe" --install mysql_new --defaults-file="'+ExtractFilePath(Application.ExeName)+'mysql\my.ini""');
CreateProcessSimple('cmd.exe /c "net start mysql_new"');
Application.Terminate;
end;
Assistir um video explicando como fazer o Setup do Sistema instalando o mysql fiz todos os procedimentos mais esta dando erro de Kernell.dll o video esta no site: http://www.4shared.com/file/45037371/67fff949/video_innosetup_mysql_delphi.html?dirPwdVerified=ab1866fd
Uso Delphi XE 2
Meu form:
unit PrincipalUnit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs,IniFiles, Vcl.StdCtrls,StrUtils,
Vcl.Buttons;
type
TForm1 = class(TForm)
lbl1: TLabel;
Spd1: TBitBtn;
function CreateProcessSimple(cmd:string):Boolean;
function ReplaceStr(Sstring: string; OldChar, NewChar:Char):string;
procedure FormShow(Sender: TObject);
procedure Spd1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.CreateProcessSimple(cmd:string):Boolean;
var
SUInfo:TStartupInfo;
ProcInfo:TProcessInformation;
begin
FillChar(SUInfo, SizeOf(SUInfo), #0);
SUInfo.cb :=SizeOf(SUInfo);
SUInfo.dwFlags :=STARTF_USESHOWWINDOW;
SUInfo.cb :=SW_HIDE;
Result:= CreateProcess(nil,PChar(cmd), nil,nil,False,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,SUInfo,ProcInfo);
if (Result) then
begin
WaitForSingleObject(ProcInfo.hProcess,INFINITE);
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end;
function TForm1.ReplaceStr(Sstring: string; OldChar, NewChar:Char):string;
var
Temp:string;
I:Integer;
begin
Temp:='';
for I := 1 to Length (Sstring) do
begin
if Sstring[I] <> OldChar then
begin
Temp:= Temp+Sstring[I];
end
else
begin
temp:=temp+NewChar;
end;
end;
Result:=Temp
end;
procedure TForm1.Spd1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormShow(Sender: TObject);
var
logo:TInifile;
begin
lbl1.Caption:='Aguarde...';
lbl1.Refresh;
logo:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'mysql\my.ini');
try
logo.WriteString('mysqld','basedir','"'+ReplaceStr(ExtractFilePath(Application.ExeName),'\','/')+'mysql/"');
logo.WriteString('mysqld','basedir','"'+ReplaceStr(ExtractFilePath(Application.ExeName),'\','/')+'mysql/data/'+'"');
finally
logo.Free;
end;
CreateProcessSimple('cmd.exe /c ""'+ExtractFilePath(Application.ExeName)+'mysql\bin\mysqld.exe" --install mysql_new --defaults-file="'+ExtractFilePath(Application.ExeName)+'mysql\my.ini""');
CreateProcessSimple('cmd.exe /c "net start mysql_new"');
Application.Terminate;
end;
Carlos Junior
Curtir tópico
+ 0
Responder
Post mais votado
01/06/2015
Cara, também quebrei muito a cabeça com isso, quando parei de tentar usar esse programa ai que vc postou as coisas começaram a fluir, isso porquê você não precisa utilizar esse programa pra fazer a instalação do mysql, vc pode fazer tudo pelo inno setup.
Só executar diretamente no inno setup na seção [RUN] os comandos sc.exe e net.exe passando os parametros necessários.
Obs.: Você também terá problema com o .NET Framework 4, já que o mysql depende dele para funcionar. Então o seu instalador tem que fazer a verificação se o mesmo esta instalado no computador, caso não esteja efetuar a instalação. Tive essa dor de cabeça em um cliente, que fazia a instalação do meu programa pelo instalador e o mesmo não funcionava.
Att.
Só executar diretamente no inno setup na seção [RUN] os comandos sc.exe e net.exe passando os parametros necessários.
Obs.: Você também terá problema com o .NET Framework 4, já que o mysql depende dele para funcionar. Então o seu instalador tem que fazer a verificação se o mesmo esta instalado no computador, caso não esteja efetuar a instalação. Tive essa dor de cabeça em um cliente, que fazia a instalação do meu programa pelo instalador e o mesmo não funcionava.
Att.
Cauê Nishijima
Responder
Gostei + 1
Mais Posts
27/07/2016
Carlos Junior
Valeu
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)