
Yapmak istediğim şey ise daha açık bir ifadeyle şu :
SQLEXPRESS kurulumunu çalıştırıp program içinden parametrelerini göndermek ve kurulumu kullanıcıya hiçbir şekilde göstermeden (SW_HIDE??) yaptırmak. Kodlarım ise şunlar:
Kod: Tümünü seç
unit SERVERKURULUMUNIT;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, StdCtrls, ShellApi;
type
TSERVERKURULUMFORM = class(TForm)
Bit32: TRadioButton;
Bit64: TRadioButton;
Secim_LB: TLabel;
Bilgilendirme: TLabel;
Resim: TImage;
Baslat: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure BaslatClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
SERVERKURULUMFORM: TSERVERKURULUMFORM;
implementation
{$R *.dfm}
function RunProcess(const AppPath:string; MustWait: Boolean; AppParams: string; Visibility: Word):DWORD;
var
SI: TStartupInfo;
PI: TProcessInformation;
Proc: THandle;
zFileName, zParams: array[0..512] of Char;
begin
FillChar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);
SI.wShowWindow := SW_HIDE;
if not CreateProcess(StrPCopy(zFileName, AppPath),StrPCopy(zParams, AppParams), nil, nil, false, Normal_Priority_Class, nil, nil, SI, PI) then
raise Exception.CreateFmt(AppPath +' Programı Çalışırken Hata Oluştu..'+#13#10+' Hata Kodu %d',[GetLastError]);
Proc := PI.hProcess;
CloseHandle(PI.hThread);
if MustWait then
if WaitForSingleObject(Proc, Infinite) <> Wait_Failed then
GetExitCodeProcess(Proc, Result);
CloseHandle(Proc);
end;
procedure TSERVERKURULUMFORM.FormCreate(Sender: TObject);
var
yol:String;
begin
yol:=ParamStr(0);
yol:=copy(yol,1,length(yol)-17); //serverkurulum.exe (17)
yol:=yol+'resimler\kurulacak.ico';
Resim.Picture.LoadFromFile(yol);
end;
procedure TSERVERKURULUMFORM.BaslatClick(Sender: TObject);
var
yol,parametre:String;
//stp:Array[0..512] of Char;
begin
if (Bit32.Checked=True) then
begin
Bilgilendirme.Caption:='SQL SERVER Kurulumu Yapılıyor. Lütfen Bekleyiniz...';
Bilgilendirme.Refresh;
Secim_LB.Visible:=False;
Secim_LB.Refresh;
Bit32.Visible:=False;
Bit32.Refresh;
Bit64.Visible:=False;
Bit64.Refresh;
Baslat.Visible:=False;
Baslat.Refresh;
Resim.Top:=Round(((SERVERKURULUMFORM.Height/2)-(Resim.Height/2)));
Resim.Left:=Round(((SERVERKURULUMFORM.Width/2)-(Resim.Width/2)));
Resim.Picture:=nil;
Resim.Refresh;
yol:=ParamStr(0);
yol:=copy(yol,1,length(yol)-17); //serverkurulum.exe (17)
yol:=yol+'resimler\kuruluyor.ico';
Resim.Picture.LoadFromFile(yol);
Resim.Refresh;
//StrPCopy(stp,'SQLSetup32.exe /qb ADDLOCAL=ALL INSTANCENAME=MSSQLSERVER SQLAUTOSTART=1 ADDUSERASADMIN=1 SQLBROWSERAUTOSTART=1 SECURITYMODE=SQL SAPWD='''' SQLCOLLATION=TURKISH_CI_AS DISABLENETWORKPROTOCOLS=0 SQLACCOUNT="NT AUTHORITY\SYSTEM"');
//ShellExecute(Handle,'open',stp,nil,nil,SW_HIDE);//Parametreli
//RunProcess('SQLSetup32.exe', True, 'ADDLOCAL=ALL INSTANCENAME=MSSQLSERVER SQLAUTOSTART=1 ADDUSERASADMIN=1 SQLBROWSERAUTOSTART=1 SECURITYMODE=SQL SAPWD='''' SQLCOLLATION=TURKISH_CI_AS DISABLENETWORKPROTOCOLS=0 SQLACCOUNT="NT AUTHORITY\SYSTEM"', SW_HIDE);
parametre:=' /qb ADDLOCAL=ALL INSTANCENAME=MSSQLSERVER SQLAUTOSTART=1 ADDUSERASADMIN=1 SQLBROWSERAUTOSTART=1 SECURITYMODE=SQL SAPWD='''' SQLCOLLATION=TURKISH_CI_AS DISABLENETWORKPROTOCOLS=0 SQLACCOUNT="NT AUTHORITY\SYSTEM"';
ShowMessage(parametre);
RunProcess('SQLSetup32.exe', True, parametre, SW_HIDE);
Bilgilendirme.Caption:='SQL SERVER Kurulumu Tamamlandı.';
Bilgilendirme.Refresh;
yol:=ParamStr(0);
yol:=copy(yol,1,length(yol)-17); //serverkurulum.exe (17)
yol:=yol+'resimler\kuruldu.ico';
Resim.Picture.LoadFromFile(yol);
Resim.Refresh;
Sleep(3000);
WakeMainThread(SERVERKURULUMFORM);
Close;
end
else if (Bit64.Checked=True) then
begin
Bilgilendirme.Caption:='SQL SERVER Kurulumu Yapılıyor. Lütfen Bekleyiniz...';
Bilgilendirme.Refresh;
Secim_LB.Visible:=False;
Secim_LB.Refresh;
Bit32.Visible:=False;
Bit32.Refresh;
Bit64.Visible:=False;
Bit64.Refresh;
Baslat.Visible:=False;
Baslat.Refresh;
Resim.Picture:=nil;
Resim.Refresh;
Resim.Top:=Round(((SERVERKURULUMFORM.Height/2)-(Resim.Height/2)));
Resim.Left:=Round(((SERVERKURULUMFORM.Width/2)-(Resim.Width/2)));
Resim.Refresh;
yol:=ParamStr(0);
yol:=copy(yol,1,length(yol)-17); //serverkurulum.exe (17)
yol:=yol+'resimler\kuruluyor.ico';
Resim.Picture.LoadFromFile(yol);
Resim.Refresh;
//StrPCopy(stp,'SQLSetup32.exe /qb ADDLOCAL=ALL INSTANCENAME=MSSQLSERVER SQLAUTOSTART=1 ADDUSERASADMIN=1 SQLBROWSERAUTOSTART=1 SECURITYMODE=SQL SAPWD='''' SQLCOLLATION=TURKISH_CI_AS DISABLENETWORKPROTOCOLS=0 SQLACCOUNT="NT AUTHORITY\SYSTEM"');
//ShellExecute(Handle,'open',stp,nil,nil,SW_HIDE);//Parametreli
RunProcess('SQLSetup64.exe', True, 'ADDLOCAL=ALL INSTANCENAME=MSSQLSERVER SQLAUTOSTART=1 ADDUSERASADMIN=1 SQLBROWSERAUTOSTART=1 SECURITYMODE=SQL SAPWD='''' SQLCOLLATION=TURKISH_CI_AS DISABLENETWORKPROTOCOLS=0 SQLACCOUNT="NT AUTHORITY\SYSTEM"', SW_HIDE);
Bilgilendirme.Caption:='SQL SERVER Kurulumu Tamamlandı.';
Bilgilendirme.Refresh;
yol:=ParamStr(0);
yol:=copy(yol,1,length(yol)-17); //serverkurulum.exe (17)
yol:=yol+'resimler\kuruldu.ico';
Resim.Picture.LoadFromFile(yol);
Resim.Refresh;
Sleep(3000);
WakeMainThread(SERVERKURULUMFORM);
Close;
end
else
ShowMessage('İşletim Sisteminizi Seçmeden Kuruluma Geçemezsiniz!');
end;
end.