Всем привет. Возник такой вопрос:
Как запустить exe или bat файл до начала распаковки архивов.
Суть в том, что нужно убить процессы и службы на время установки.
Пробовал примеры из справки, ни один не помог.
Может быть есть какое-то другое решение.
Как запустить exe или bat файл до начала распаковки архивов.
Суть в том, что нужно убить процессы и службы на время установки.
Пробовал примеры из справки, ни один не помог.
[Files]
Source: ISTask.dll; DestDir: {app}; Flags: dontcopy
[Code_]
function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';
///**************************************************///
function InitializeSetup(): Boolean;
begin
If RunTask('winamp.exe', false) then
begin
if MsgBox('Программа Winamp используется. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then
begin
KillTask('winamp.exe');
Result:= True;
end else
Exit;
end;
Result:=True;
end;
Source: ISTask.dll; DestDir: {app}; Flags: dontcopy
[Code_]
function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';
///**************************************************///
function InitializeSetup(): Boolean;
begin
If RunTask('winamp.exe', false) then
begin
if MsgBox('Программа Winamp используется. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then
begin
KillTask('winamp.exe');
Result:= True;
end else
Exit;
end;
Result:=True;
end;
if CurStep = ssPostInstall then
begin
WizardForm.FileNameLabel.BringToFront;
lblExtractFileName.Caption:='Идет восстановление игровых архивов... это может занять 15-20 мин...ждите';
Exec(ExpandConstant('{app}\1.bat'), '','' , SW_SHOW, ewWaitUntilTerminated, n);
DeleteFile(ExpandConstant('{app}\1.bat'))
end;
begin
WizardForm.FileNameLabel.BringToFront;
lblExtractFileName.Caption:='Идет восстановление игровых архивов... это может занять 15-20 мин...ждите';
Exec(ExpandConstant('{app}\1.bat'), '','' , SW_SHOW, ewWaitUntilTerminated, n);
DeleteFile(ExpandConstant('{app}\1.bat'))
end;
[Setup]
AppName=MyApp
AppVername=MyApp
DefaultDirName={pf}\MyApp
DisableWelcomePage=True
[Code_]
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:= False;
Cancel:= True;
end;
function InitializeSetup(): Boolean;
var List: TStringList; src, dest, bat: string; res: Integer;
begin
src:= ExpandConstant('{src}');
BrowseForFolder('Choose destination dir', dest, True);
bat:= ExpandConstant('{userappdata}\exec.bat');
List:= TStringList.Create;
List.Add('echo off');
List.Add('set src='+src);
List.Add('set dest='+dest);
List.Add('@echo SourceDir: "%src%"');
List.Add('@echo DestinationDir: "%dest%"');
List.Add('pause');
List.Add('del "'+bat+'"');
List.Add('pause');
List.SaveToFile(bat);
List.Free;
Exec(bat, '', '', SW_SHOW, ewNoWait, Res);
end;[/Code]
AppName=MyApp
AppVername=MyApp
DefaultDirName={pf}\MyApp
DisableWelcomePage=True
[Code_]
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:= False;
Cancel:= True;
end;
function InitializeSetup(): Boolean;
var List: TStringList; src, dest, bat: string; res: Integer;
begin
src:= ExpandConstant('{src}');
BrowseForFolder('Choose destination dir', dest, True);
bat:= ExpandConstant('{userappdata}\exec.bat');
List:= TStringList.Create;
List.Add('echo off');
List.Add('set src='+src);
List.Add('set dest='+dest);
List.Add('@echo SourceDir: "%src%"');
List.Add('@echo DestinationDir: "%dest%"');
List.Add('pause');
List.Add('del "'+bat+'"');
List.Add('pause');
List.SaveToFile(bat);
List.Free;
Exec(bat, '', '', SW_SHOW, ewNoWait, Res);
end;[/Code]
Может быть есть какое-то другое решение.