Скрипты Inno Setup. Помощь и советы [часть 8]

Ответить
 • Просмотры: 35
Аватара пользователя
AlekseyPopovv

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение AlekseyPopovv »

Как создать свой MsgBox со своими параметрами?
Аватара пользователя
Dodakaedr

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение Dodakaedr »

sergey3695, спасибо за ответ!

DelTree(ExpandConstant('{tmp}'),true,true,true); пробовал вставлять, почему-то удаляется только часть файлов из папки TEMP, а вот библиотеки (dll) и сама папка is-xxxx остаются.

Из второго примера, я так понял, вы предложили кнопки поменять местами. NextButtonClick отрабатывает корректный выход, а в CancelButtonClickFinishedPage уже можно запускать программу (через ShellExec). После компиляции в FinishPage только одна кнопка Finish, а кнопка 'RUN' не отображается, хотя должно быть WizardForm.CancelButton.Caption := 'Run';
Аватара пользователя
AlekseyPopovv

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение AlekseyPopovv »

Dodakaedr, Может не правильно выразился, мне надо поменять цвет окна во всех MsgBox...
Аватара пользователя
Dodakaedr

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение Dodakaedr »

doctor_allcome, а когда вставляли [_code] стерли?

Цитата dapa:

окна StartupPrompt
Скрипты Inno Setup. Помощь и советы [часть 8]


а что это за окно?
Аватара пользователя
AlekseyPopovv

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение AlekseyPopovv »

Dodakaedr, А как в стандартных MsgBox поменять цвет?
Аватара пользователя
solopavel

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение solopavel »

Цитата sergey3695:



а что это за окно?
Скрипты Inno Setup. Помощь и советы [часть 8]




Не корректно я наверное спросил... это то, что появляется перед запуском инсталла, когда в [Setup] DisableStartupPrompt=no
Аватара пользователя
El Sanchez

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение El Sanchez »

dapa, нет нельзя. это стандартные сообщения.
Аватара пользователя
ZVSRus

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение ZVSRus »

Цитата solopavel:



При установке, нужно удалить из "программы" две папки с файлами полностью "aircraft_1" и "aircraft1_2"



Как-то так.



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

[Files]
 Source: "{app}\traffic_3.bgl"; DestDir: "{app}";
 Source: "{app}\aircraft_3\*"; DestDir: "{app}\aircraft_3";
[InstallDelete]
 Type: files; Name: "{app}\traffic_1.bgl";
 Type: files; Name: "{app}\traffic_2.bgl";
 Type: filesandordirs; Name: "{app}\aircraft_1l";
 Type: filesandordirs; Name: "{app}\aircraft_2l";
Аватара пользователя
Dodakaedr

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение Dodakaedr »

Цитата sergey3695:



dapa, нет нельзя. это стандартные сообщения.
Скрипты Inno Setup. Помощь и советы [часть 8]




Понятно, благодарю за ответ.
Аватара пользователя
El Sanchez

Re: Скрипты Inno Setup. Помощь и советы [часть 8]

Сообщение El Sanchez »

doctor_allcome,



Скрытый текст

[spoiler][Setup]

AppName=My Program

AppVersion=1.5

DefaultDirName={pf}\My Program

OutputDir=.


Код: Выделить всё


/////===== Начало - ExecAndWait =====\\\\\

var

  lastproc: cardinal;



const

  NORMAL_PRIORITY_CLASS           = $00000020;

  REALTIME_PRIORITY_CLASS         = $00000100;



type

  _TStartupInfo = record

  cb: DWORD;

  lpReserved, lpDesktop: Longint;

  lpTitle: PAnsiChar;

  dwX, dwY, dwXSize, dwYSize, dwXCountChars, dwYCountChars, dwFillAttribute, dwFlags: DWORD;

  wShowWindow, cbReserved2: Word;

  lpReserved2: Byte;

  hStdInput, hStdOutput, hStdError: Longint;

end;

  _TProcessInformation = record

  hProcess, hThread: Longint;

  dwProcessId, dwThreadId: DWORD;

end;

  _TMsg = record

  hWnd: HWND;

  msg, wParam: Word;

  lParam: LongWord;

  Time: TFileTime;

  pt: TPoint;

end;



function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwProcessId: DWORD): THandle; external 'OpenProcess@kernel32.dll stdcall';

function CloseHandle(hObject: THandle): BOOL; external 'CloseHandle@kernel32.dll stdcall';

procedure GetStartupInfo(var lpStartupInfo: _TStartupInfo); external 'GetStartupInfoA@kernel32.dll stdcall';

function CreateProcess(lpApplicationName: PAnsiChar; lpCommandLine: PAnsiChar; lpProcessAttributes, lpThreadAttributes: DWORD; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: PAnsiChar; lpCurrentDirectory: PAnsiChar; const lpStartupInfo: _TStartupInfo; var lpProcessInformation: _TProcessInformation): BOOL; external 'CreateProcessA@kernel32.dll stdcall';

function WaitForSingleObject(hHandle: Longint; dwMilliseconds: DWORD): DWORD; external 'WaitForSingleObject@kernel32.dll stdcall';

function TerminateProcess(hProcess: Longint; uExitCode: UINT): BOOL; external 'TerminateProcess@kernel32.dll stdcall';

function PeekMessage(var lpMsg: _TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall';

function TranslateMessage(const lpMsg: _TMsg): BOOL; external 'TranslateMessage@user32.dll stdcall';

function DispatchMessage(const lpMsg: _TMsg): Longint; external 'DispatchMessageA@user32.dll stdcall';



procedure Application_ProcessMessages;

var

  Msg: _TMsg;

  begin

  while PeekMessage(Msg, 0, 0, 0, 1) do begin

    TranslateMessage(Msg);

    DispatchMessage(Msg);

  end;

end;



function ExecAndWait(filename, params: pansichar; showcmd: integer; Wait: boolean; Priority: Smallint): Boolean;

var

  SI : _TStartupInfo;

  PI : _TProcessInformation;

  CMD: string;

  prt: DWORD;

  begin

    Result:=false;

    CMD:='"' + filename + '" ' + params;

    GetStartupInfo(SI);

    SI.wShowWindow := showcmd;

    SI.dwFlags := 1;

  if Priority = 0  then prt:= NORMAL_PRIORITY_CLASS else

  prt:= REALTIME_PRIORITY_CLASS;

    Result:=CreateProcess('', PansiChar(CMD), 0, 0, false, prt,'', pansichar(ExtractFilePath(filename)), SI, PI);

    lastproc:=PI.dwProcessId;

  if wait then

  while WaitforSingleObject(PI.hProcess, 50) = $00000102 do

  Application_ProcessMessages;

  CloseHandle(PI.hProcess);

end;

/////===== Конец - ExecAndWait =====\\\\\



var

  OldEvent_NextButtonClick: TNotifyEvent;



procedure NextButtonClick2(Sender: TObject);

begin

  ExecAndWait(ExpandConstant('{sys}\calc.exe'), '', SW_SHOW, false, 0);

  OldEvent_NextButtonClick(Sender);

end;



procedure CancelButtonClickFinishedPage(Sender: TObject);

begin

if ExitSetupMsgBox then

  OldEvent_NextButtonClick(Sender);

end;



procedure InitializeWizard;

begin

  OldEvent_NextButtonClick := WizardForm.NextButton.OnClick;

end;



procedure CurPageChanged(CurPageID: Integer);

begin

if CurPageID = wpFinished then

begin

  WizardForm.CancelButton.Caption := SetupMessage(msgButtonFinish);

  WizardForm.CancelButton.Visible := True;

  WizardForm.CancelButton.OnClick := @CancelButtonClickFinishedPage;

//

  WizardForm.NextButton.Caption := 'Run';

  WizardForm.NextButton.OnClick := @NextButtonClick2;

end;

end;[/spoiler]
Ответить

Вернуться в «Автоматическая установка приложений»