Вопрос Запуск приложения через кнопку на FinishPage.

ZVSRus

Участник
Как в данном примере запустить приложение через кнопку. Но при этом финишная страница не должна закрываться.

[Setup]
AppName=Name
AppVerName=Name
DefaultDirName={pf}\Name
compression=none

Код:
var
 PuskButton: TNewButton;
 PuskCheck: TNewCheckBox;

////////////////////////////////////////
function Pusk2Check: Boolean; //
begin //
 Result:= PuskCheck.Checked; //
end; //
////////////////////////////////////////

procedure PuskButtonClick(Sender: TObject); forward;

procedure PuskButtonClick(Sender: TObject);
begin

end;

procedure InitializeWizard();
begin
 { PuskButton }
 PuskButton := TNewButton.Create(WizardForm);
 with PuskButton do
 begin
 Parent := WizardForm.FinishedPage;
 Left := ScaleX(176);
 Top := ScaleY(286);
 Width := ScaleX(75);
 Height := ScaleY(25);
 Caption := 'Запуск';
 OnClick := @PuskButtonClick;
 end;

 { PuskCheck }
 PuskCheck := TNewCheckBox.Create(WizardForm);
 with PuskCheck do
 begin
 Parent := WizardForm.FinishedPage;
 Left := ScaleX(280);
 Top := ScaleY(290);
 Width := ScaleX(150);
 Height := ScaleY(17);
 Caption := 'Ассоциация файлов';
 end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
 ResultCode: Integer;

begin
 /////

 if CurStep = ssInstall then /// перед устанновкой
 begin

 end;

 ///////

 if CurStep = ssPostInstall then /// после установки C:\Program Files\XnViewMP\Associate files with XnViewMP.exe

 begin

 end;

 //////

 if CurStep = ssDone then if Pusk2Check then /// то что тебе надо
 begin
 Exec(ExpandConstant('{sys}\calc.exe'), '', '', SW_SHOW, ewNoWait, ResultCode); /// запустим калькулятор
// Exec(ExpandConstant('C:\Program Files\XnViewMP\Associate files with XnViewMP.exe'), '', '', SW_SHOW, ewNoWait, ResultCode);
 // другой пример Exec(ExpandConstant('{src}\outer\DirectX\DXSETUP.exe'), '/silent', ExpandConstant('{src}\outer\DirectX'), SW_SHOW, ewWaitUntilTerminated, ResultCode);
 //////////////////////////////// расположение файла ///////////////////// параметры ////////// рабочая папка ///////////////////// флаги ////// (другие - SW_HIDE, ewNoWait)
 end;
end;

[ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D0030102B02000054504630F10B5457697A617264466F726D0A57697A617264466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C65667402000B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038E010D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D65506167650D4578706C69636974576964746803F1010E4578706C696369744865696768740339010000F110544E65774E6F7465626F6F6B506167650C46696E6973686564506167650D4578706C69636974576964746803F1010E4578706C69636974486569676874033901000A544E6577427574746F6E0A5075736B427574746F6E044C65667403B00003546F70031E01055769647468024B0648656967687402190743617074696F6E1206000000170430043F04430441043A04085461624F726465720205074F6E436C69636B070F5075736B427574746F6E436C69636B00000C544E6577436865636B426F78095075736B436865636B044C65667403180103546F700322010557696474680396000648656967687402110743617074696F6E1425000000D097D0B0D0BFD183D181D182D0B8D182D18C20D0BFD180D0BED0B3D180D0B0D0BCD0BCD183085461624F7264657202060000000000
 

Avengerz13

Участник
ZVSRus,
Код:
var
  Res:integer;
begin
  Exec(ExpandConstant('{src}\YourExeFile.exe'),'','',SW_SHOW,ewNoWait,Res)
end;
Код:
[Setup]
AppName=Name
AppVerName=Name
DefaultDirName={pf}\Name
compression=none

[_code]
var
PuskButton: TNewButton;
PuskCheck: TNewCheckBox;

////////////////////////////////////////
function Pusk2Check: Boolean; //
begin //
Result:= PuskCheck.Checked; //
end; //
////////////////////////////////////////

procedure PuskButtonClick(Sender: TObject); forward;

procedure PuskButtonClick(Sender: TObject);
var
  Res:integer;
begin
  Exec(ExpandConstant('{src}\YourExeFile.exe'),'','',SW_SHOW,ewNoWait,Res)
end;


procedure InitializeWizard();
begin
{ PuskButton }
PuskButton := TNewButton.Create(WizardForm);
with PuskButton do
begin
Parent := WizardForm.FinishedPage;
Left := ScaleX(176);
Top := ScaleY(286);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Запуск';
OnClick := @PuskButtonClick;
end;

{ PuskCheck }
PuskCheck := TNewCheckBox.Create(WizardForm);
with PuskCheck do
begin
Parent := WizardForm.FinishedPage;
Left := ScaleX(280);
Top := ScaleY(290);
Width := ScaleX(150);
Height := ScaleY(17);
Caption := 'Ассоциация файлов';
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
ResultCode: Integer;

begin
/////

if CurStep = ssInstall then /// перед устанновкой
begin

end;

///////

if CurStep = ssPostInstall then /// после установки C:\Program Files\XnViewMP\Associate files with XnViewMP.exe

begin

end;

//////

if CurStep = ssDone then if Pusk2Check then /// то что тебе надо
begin
Exec(ExpandConstant('{sys}\calc.exe'), '', '', SW_SHOW, ewNoWait, ResultCode); /// запустим калькулятор
// Exec(ExpandConstant('C:\Program Files\XnViewMP\Associate files with XnViewMP.exe'), '', '', SW_SHOW, ewNoWait, ResultCode);
// другой пример Exec(ExpandConstant('{src}\outer\DirectX\DXSETUP.exe'), '/silent', ExpandConstant('{src}\outer\DirectX'), SW_SHOW, ewWaitUntilTerminated, ResultCode);
//////////////////////////////// расположение файла ///////////////////// параметры ////////// рабочая папка ///////////////////// флаги ////// (другие - SW_HIDE, ewNoWait)
end;
end;
 

vint56

Ветеран
Проверенный
ZVSRus,
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application


[Code]
var
Runsoft: TNewButton;

procedure RunsoftClick(Sender: TObject);
var
ResultCode: Integer;
begin
Exec(ExpandConstant('{sys}\calc.exe'), '', '', SW_SHOW, ewNoWait, ResultCode);
end;

procedure InitializeWizard();
begin
  begin
  Runsoft := TNewButton.Create(WizardForm);
  with Runsoft do
  begin
    Parent := WizardForm;
    Left := ScaleX(32);
    Top := ScaleY(325);
    Width := ScaleX(75);
    Height := ScaleY(25);
    Caption := 'Runsoft';
    OnClick := @RunsoftClick;
  end;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
Runsoft.Hide;
case CurPageID of
wpFinished:
Runsoft.Show;
end;
end;
 

ZVSRus

Участник
Avengerz13, vint56 Спасибо! за оперативный ответ. Оба примера, то что нужно.
 
Сверху