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

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

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

Сообщение Dodakaedr »

Dodakaedr, огромное Вам Спасибо!

Этот код рабочий! Возможно кому-то это также будет полезно ))

+ 1500 лайков Изображение

Изображение
Аватара пользователя
Beavimo

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

Сообщение Beavimo »

Здравствуйте уважаемые Форумчане!

может кто подскажет как сделать чтобы курсор не исчезал, когда вводишь текст в поле Edit?
Аватара пользователя
Beavimo

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

Сообщение Beavimo »

Такой вопрос. Есть Ехешник сделанный с помощью ПО GameScript Generator и скриптов Инно.

Можно ли этот Ехе как-то открыть и посмотреть. Естно в обучающих моментах для общего ознакомления \ обучения?



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



Вот сам
ехе
Аватара пользователя
El Sanchez

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

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

Цитата Eugene_Пилигрим@vk:



Можно ли этот Ехе как-то открыть и посмотреть.
Скрипты Inno Setup. Помощь и советы [часть 9]




Eugene_Пилигрим@vk, внутри браузер Yandex на 200Mb, 7zip консольный с плагинами для Far, какая-то unpacki.dll и непонятный setup.exe. В мусор.
Аватара пользователя
Beavimo

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

Сообщение Beavimo »

может кто подскажет как замедлить (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

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

Сообщение Beavimo »

вот рабочий пример



Код:

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

[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
Ответить

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