Inno Setup Прошу протестировать TofZ_Install

Silentman

Новичок
Теперь всё нормально:good:. Можно попросить пример отрисовки миниатюры? (Можно в ЛС).
 

sergey3695

Ветеран
Модератор
Можно попросить пример отрисовки миниатюры?
там используется Win6TaskBarV1_0A в wintb
Код:
#ifndef IS_ENHANCED
  #error Enhanced edition of Inno Setup (restools) is required to compile this script
#endif

[Setup]
AppName=Wintb.dll example
AppVersion=1.0.0.8
DefaultDirName={pf}\Wintb.dll example
DefaultGroupName=Wintb.dll example
OutputDir=.

[files]
Source: wintb.dll; Flags: dontcopy;

[code]
const
  TBPF_NOPROGRESS = 0;
  TBPF_INDETERMINATE = 1;
  TBPF_NORMAL = 2;
  TBPF_ERROR = 4;
  TBPF_PAUSED = 8;

procedure WintbStart(); external 'WintbStart@{tmp}\WinTB.dll cdecl delayload';
procedure WintbStop(); external 'WintbStop@{tmp}\WinTB.dll cdecl delayload';

procedure SetTaskBarProgressValue(Value: Longint); external 'SetTaskBarProgressValue@{tmp}\WinTB.dll cdecl delayload';
procedure SetTaskBarProgressState(Value: Longint); external 'SetTaskBarProgressState@{tmp}\WinTB.dll cdecl delayload';

procedure WinTaskBar(WForm, MForm: HWND; Time: Longint); external 'Win6TaskBarV1_0A@{tmp}\WinTB.dll cdecl delayload';

function DwmIsCompositionEnabled(var pfEnabled: BOOL): Longint; external 'DwmIsCompositionEnabled@dwmapi.dll stdcall delayload';

function isWin6: boolean; var ver: TWindowsVersion;
begin
  GetWindowsVersionEx(ver);
if (ver.Major >= 6) then result:=true
else result:=false;
end;

function CompositionEnabled: boolean;var r: bool;
begin
if isWin6 then
if DwmIsCompositionEnabled(r) = 0 then
  result:=r else result:=false;
end;

procedure TaskBar;
var
  r: TRect;
begin
if CompositionEnabled then
begin
with TBitmapImage.Create(MainForm)do
begin
  Parent:=MainForm;
  Width:=WizardForm.ClientWidth;
  Height:=WizardForm.ClientHeight;
with Bitmap do begin
  Width:=WizardForm.ClientWidth;
  Height:=WizardForm.ClientHeight;
  Canvas.Brush.Color:=clWindow;
  r.Left:=0;
  r.Top:=0;
  r.Right:=WizardForm.ClientWidth;
  r.Bottom:=WizardForm.ClientHeight;
  Canvas.FillRect(r);
end;
end;
  WinTaskBar(WizardForm.Handle, MainForm.Handle, 300);
end;
end;

procedure TBChange(Sender: TObject);
begin
  SetTaskBarProgressState(TBPF_NORMAL);
  SetTaskBarProgressValue(TTrackBar(Sender).Position);
end;

procedure InitializeWizard();
var
  TBar: TTrackBar;
begin
  ExtractTemporaryFile('wintb.dll');

  WintbStart();

  SetTaskBarProgressValue(40);
  SetTaskBarProgressState(TBPF_PAUSED);

  TaskBar;

  TBar := TTrackBar.Create(WizardForm);
  TBar.Parent := WizardForm;
  TBar.Max := 100;
  TBar.SetBounds(ScaleX(10), ScaleY(320), ScaleX(200), ScaleY(20));
  TBar.OnChange := @TBChange;
end;

procedure DeinitializeSetup();
begin
  WintbStop;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm:=false;
end;
только у меня Style:= bsNone поэтому я поправил малость там
C++:
void DLL_EXPORT WinTaskBar(HWND wf, HWND mf, int time)
{
    if (winver >= 6)
    {
        wizardform = wf;
        mainform = mf;

        RECT cr;
        GetWindowRect(wf, &cr);

        SetWindowLong(mf, GWL_STYLE, GetWindowLong(mf, GWL_STYLE) & !WS_CAPTION);
        SetWindowPos(mf, 0, -10000, 0, cr.right - cr.left, cr.bottom - cr.top, SWP_NOACTIVATE);

        ShowWindow(mf, SW_SHOW);

        SetTimer(wf, 100500, time, Ontimer);
    }
}
 

sergey3695

Ветеран
Модератор
Прикольно как на Windows 10. 1) там не рисовалось миниатюра из-за проверки на систему в библиотеке. выпилил. ок. 2) когда выбора языка нет все теперь как надо. 3) выбор есть. ситуация таже что на скринах. пока установщик не свернешь миниатюра не меняется. сделал для 10-ки исключение, там перезапуск установщика. В шапке обновил. Если не сложно посмотрите пожалуйста у кого 10-ка стоит.
 

Timick

Старожил
Все нормально! :good: Хотя у меня, например, и до этого все ок было))
 
Последнее редактирование:

Silentman

Новичок
У меня теперь такая ситуация: при запуске инсталлятора и нажатии кнопки "инфо" инсталлятор виснет, после чего само окно "информация" появляется в течение 10~30 секунд. Но если на "подвисшем" инсталляторе нажать "закрыть окно", то сразу появляется окно "информация". После чего всё работает как положено. Хотя, возможно, дело не в инсталляторе, а винда глючит...
 

sergey3695

Ветеран
Модератор
По-моему и до этого все нормально было ...
нет это мой косяк. у формы был стиль поверх окон и при нажатии на инфо форму просто не было видно. удалил ненужный код теперь норм. ну это я экспериментировал на 10-ке.
 
Сверху