Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 91
Благодарности: 7

Профиль | Сайт | Отправить PM | Цитировать


Помогите, пожалуйста, доработать, исправить, "усовершенствовать" скрипт!
Или поделитесь какими-нибудь другими кодами создания индикаторов процесса "для секции [Run]"

ПРОБЛЕМА: Индикатор работает НЕ на всех темах!!!

[Setup]
AppName=MyProg
AppVerName=MyProg
DefaultDirName={pf}\MyProg
OutputDir=.
Compression=lzma/ultra
SolidCompression=yes

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion

[code]
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';

const
PBM_SETMARQUEE = $040A;
GWL_STYLE = -16;
PBS_MARQUEE = $08;

var
AnimatePb: TNewProgressBar;

procedure CreateAnimatePb;
begin
AnimatePb := TNewProgressBar.Create(WizardForm);
with AnimatePb do
begin
Parent := WizardForm.InstallingPage;
SetBounds(WizardForm.ProgressGauge.Left, WizardForm.ProgressGauge.Top + WizardForm.ProgressGauge.Height + ScaleY(10),
WizardForm.ProgressGauge.Width, WizardForm.ProgressGauge.Height);
SetWindowLong (AnimatePb.Handle, GWL_STYLE, (GetWindowLong (AnimatePb.Handle, GWL_STYLE) or PBS_MARQUEE));
SendMessage(AnimatePb.Handle, PBM_SETMARQUEE, 1, 20);
end;
end;

procedure AnimatePbMsg(const msg: string);
begin
if AnimatePb = nil then
CreateAnimatePb;
WizardForm.FilenameLabel.Caption := msg;
end;

procedure AnimatePbFree;
begin
if AnimatePb <> nil then
begin
AnimatePb.Free;
AnimatePb := nil;
end;
end;

[Run]
Filename: {app}\MyProg.exe; BeforeInstall: AnimatePbMsg('Создание файла...'); Flags: skipifsilent
Filename: {app}\MyProg2.exe; BeforeInstall: AnimatePbMsg('Создание файла...'); Flags: skipifsilent
Filename: {app}\MyProg3.exe; BeforeInstall: AnimatePbMsg('Создание файла...'); AfterInstall: AnimatePbFree; Flags: skipifsilent

ПРОБЛЕМА: Индикатор работает НЕ на всех темах!!!

А также:
1. Нужно поднять индикатор выше, чтобы он был на том же самом месте, что и оригинальный и выглядел также.
2. Убрать сообщения, т.к. я использую "StatusMsg", а если не использовать, то появится сообщение "Завершение установки"
3. Сделать кнопку "Отмена" активной и вернуть возможность прерывания процесса установки.

Если нельзя ничего этого сделать, поделитесь какими-нибудь другими кодами создания индикаторов процесса "для секции [Run]"

У меня из секции [Run], выполняется ещё куча команд в скрытом режиме, которая занимает довольно много времени, поэтому нужна какая-то индикация...

ИЛИ МОЖЕТ ЕСТЬ КАКОЙ-НИБУДЬ ДРУГОЙ СПОСОБ, для запуска и выполнения дополнительных операций, во время и/или после установки, НЕ обязательно из секции [Run] со стандартной индикацией процесса?!

Отправлено: 18:49, 07-12-2011 | #334