PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 9]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 [57]

OldGamer
11-01-2025, 17:53
Dodakaedr, огромное Вам Спасибо!
Этот код рабочий! Возможно кому-то это также будет полезно ))
+ 1500 лайков :up
:oszone:

Beavimo
16-04-2025, 10:31
Здравствуйте уважаемые Форумчане!
может кто подскажет как сделать чтобы курсор не исчезал, когда вводишь текст в поле Edit?

Eugene_Пилигрим@vk
19-06-2025, 14:25
Такой вопрос. Есть Ехешник сделанный с помощью ПО GameScript Generator и скриптов Инно.
Можно ли этот Ехе как-то открыть и посмотреть. Естно в обучающих моментах для общего ознакомления \ обучения?

InnoExtractor 2025 10.3.0.137 Ultra пробовал, не открывает.

Вот сам ехе (https://www.upload.ee/files/18230193/Setup2.exe.html)

El Sanchez
23-06-2025, 20:14
Можно ли этот Ехе как-то открыть и посмотреть. »
Eugene_Пилигрим@vk, внутри браузер Yandex на 200Mb, 7zip консольный с плагинами для Far, какая-то unpacki.dll и непонятный setup.exe. В мусор.

Beavimo
30-06-2025, 05:33
может кто подскажет как замедлить (WizardForm.ProgressGauge), чтобы (WizardForm.ProgressGauge) не мелькал (при маленьком объеме .ехе), а работал как верхний - в зависимости от выбраных значений, заполнялся медленно?

[Setup]
AppName=ProgressBar
AppVerName=ProgressBar
OutputBaseFilename=ProgressBar
DefaultDirName=ProgressBar
OutputDir=userdocs:..\desktop
Uninstallable=no

[Files]
Source: "compiler:Examples\MyProg.exe"; DestDir: "{app}"
Source: "compiler:Examples\MyProg-x64.exe"; DestDir: "{app}";

[ Code]
procedure InitializeWizard;
begin
WizardForm.ProgressGauge.Parent:=WizardForm;
WizardForm.ProgressGauge.SetBounds(ScaleX(-1), ScaleY(290), ScaleX(500), ScaleY(30));
//WizardForm.ProgressGauge.Position:=10;
end;

var
ProgressPage: TOutputProgressWizardPage;
I, Step, Wait: Integer;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
Wait:=2000;
Step:=5;
ProgressPage:=CreateOutputProgressPage(WizardForm.PageNameLabel.Caption, WizardForm.PageDescriptionLabel.Caption);
ProgressPage.SetProgress(0, Wait);
ProgressPage.Show;
try

for I := 0 to Wait div Step do
begin

ProgressPage.SetProgress(I * Step, Wait);
Sleep(Step);
end;
finally
ProgressPage.Hide;
ProgressPage.Free;
end;
end;
end;

Beavimo
30-06-2025, 18:28
вот рабочий пример

[Setup]
AppName=ProgressBar
AppVerName=ProgressBar
OutputBaseFilename=ProgressBar
DefaultDirName=ProgressBar
OutputDir=userdocs:..\desktop
Uninstallable=no

[ Code]
function GetWindowLong(Wnd: HWnd; Index: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';
function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
function GetTickCount: DWord; external 'GetTickCount@kernel32 stdcall';
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord; external 'SetTimer@User32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@User32.dll stdcall';

var
ProgressBar: TNewProgressBar;
Timer: LongWord;
Done: Boolean;
InitialTime: DWord;

procedure Install;
var
ErrorCode: Integer;
begin
if ShellExec('Open', 'Timeout.exe', '/T ' + IntToStr(10000 div 1000), '', SW_HIDE, ewWaitUntilTerminated, ErrorCode) then
begin
Done:=True;
end;
end;

procedure UpdateProgressBar(HandleW, msg, idEvent, TimeSys: LongWord);
begin
if Done then
begin
KillTimer(0, Timer);
ProgressBar.Position:=ProgressBar.Max;
end
else
begin
ProgressBar.Position:=GetTickCount - InitialTime;
end;
end;

procedure InitializeWizard;
begin
WizardForm.OuterNotebook.SetBounds(ScaleX(0), ScaleY(0), ScaleX(0), ScaleY(0));

ProgressBar:=TNewProgressBar.Create(WizardForm);
ProgressBar.Parent:=WizardForm;
ProgressBar.SetBounds(ScaleX(-1), ScaleY(250), ScaleX(500), ScaleY(30));
ProgressBar.Max:=10000;

SetWindowLong(ProgressBar.Handle, -20, GetWindowLong(ProgressBar.Handle, -20) or $2000000);
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling then
begin
Timer:=SetTimer(0, 0, 50, CreateCallback(@UpdateProgressBar));
InitialTime:=GetTickCount;
Install;
end
end;

только он вешает систему (перетащить форму невозможно). может есть у кого другой вариант замедления прогресс бара - как в случае выше вместо (ProgressPage) применить (I, Step, Wait) к TNewProgressBar или к WizardForm.ProgressGauge

тоесть переписать этот кусок кода

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
Wait:=2000;
Step:=5;
ProgressPage:=CreateOutputProgressPage(WizardForm.PageNameLabel.Caption, WizardForm.PageDescriptionLabel.Caption);
ProgressPage.SetProgress(0, Wait);
ProgressPage.Show;
try

for I := 0 to Wait div Step do
begin

ProgressPage.SetProgress(I * Step, Wait);
Sleep(Step);
end;
finally
ProgressPage.Hide;
ProgressPage.Free;
end;
end;
end;


под TNewProgressBar




© OSzone.net 2001-2012