Inno Setup (создание инсталяционных пакетов). Часть 3

Статус
В этой теме нельзя размещать новые ответы.

nik1967

Old Men
Проверенный
y_thelastknight, hi!
Most likely you use Unicode the InnoSetup version. At Ansi of the version works correctly. Here the corrected example on Unicode. The truth sysAutomaticDraw.iss example all the same works at Unicode not correctly. It needs to be compiled on Ansi. The example of sysManualDraw.iss works both at Unicode and at Ansi. Excuse for my bad English.

Yours faithfully nik1967
 

y_thelastknight

Мимокрокодил
im using same script as you give also im using Ansi version of innosetup and my pc runs windows 7 32bit..it says Runtime Error...Line 126:...ExceptionExtrenal Exception EEDFADE...if i remove the vga part of the script it works, on my other pc it works fine. it run windows 8. Excuse for My Bad English :D
 
Последнее редактирование:

Dark_Delphin

Новичок
Всем привет.

Помогите сделать, чтобы при распаковке файлов прогрес бар работал (Распаковка файлов, которые собраны компилятором)
 

Вложения

LexBell

Борода
Супер модератор
[SOURCE="iss"]WizardForm.ProgressGauge.Parent:=WizardForm;[/SOURCE]потом в нужных местах, где нужен - покажешь, где не нужен - скроешь.
[HR][/HR]
К автору перевода справки по Inno Setup. Необходимо исправить, часть ссылок в содержании ведет не туда, куда должно.
 
Последнее редактирование:

AntiAngel

Новичок
Скажите пожалйуста:

Например: есть процедура для кнопки

Код:
procedure BackCompBtnClick(h:HWND);
begin
POLabel.Show;
DesktopLabel.Show;
NoIconsLabel.Show;
end;
Можно ли сделать так чтобы к примеру DesktopLabel.Show выполнилась с задержкой скажем в 5 сек.
 

YURSHAT

Тех. админ
Администратор
AntiAngel, попробуйте так
[SOURCE="iss"]
procedure BackCompBtnClick(h:HWND);
begin
POLabel.Show;
NoIconsLabel.Show;
Sleep(500);
DesktopLabel.Show;
end;
[/SOURCE]
 

sergey3695

Ветеран
Модератор
YURSHAT, sleep(500) - это полсекунды. Тут лучше через таймер. Скажем поставить на таймер действие с интервалом 5 сек. Показ лейбла и завершение таймера. (надо же чтобы один раз произошла данная процедура)
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
 
[Files]
Source: Files\CallbackCtrl.dll; DestDir: {app}; Flags: ignoreversion; Attribs: hidden system; 

[Code_]
var 
  Button: TButton;
  DesktopLabel: TLabel;

type 
  TTimerProc = procedure (h: Longword; msg: Longword; idevent: Longword; dwTime: Longword); 

function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';
function WrapTimerProc(callback:TTimerProc; paramcount:integer):LongWord; external 'wrapcallbackaddr@{tmp}\CallbackCtrl.dll stdcall delayload';

procedure MyOnTimer(h: Longword; msg: Longword; idevent: Longword; dwTime: Longword);
begin
  DesktopLabel.Show;
  KillTimer(WizardForm.Handle,1);
end;

procedure BackCompBtnClick(Sender: TObject);
begin
  SetTimer(WizardForm.Handle,1,5000,WrapTimerProc(@MyOnTimer,4));
end;

function InitializeSetup(): Boolean;
begin
if not FileExists(ExpandConstant('{tmp}\CallbackCtrl.dll')) then ExtractTemporaryFile('CallbackCtrl.dll');
  Result:= True;
end;

procedure InitializeWizard();
begin
  WizardForm.OuterNotebook.Hide;

  DesktopLabel := TLabel.Create(WizardForm);
with DesktopLabel do
begin
  Parent := WizardForm;
  Caption := 'Че-то там...';
  SetBounds(ScaleX(70), ScaleY(270), ScaleX(363), ScaleY(14));
  Transparent := True;
  Hide;
end;

  Button:= TButton.Create(WizardForm);
with Button do
begin
  Parent:= WizardForm;
  SetBounds(ScaleX(70), WizardForm.BackButton.Top, WizardForm.BackButton.Width, WizardForm.BackButton.Height);
  OnClick:= @BackCompBtnClick;
  Caption:= 'Show';
end;
end;
 
Последнее редактирование:

sergey3695

Ветеран
Модератор
Если какой-нибудь другой способ скрывать иконку с панели задач windows, кроме этого
ShowWindow(Application.Handle, SW_HIDE); ?
 

Mailchik

Старожил
Проверенный
sergey3695, так можно:
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[B][[/B]Code]
#ifdef UNICODE
    #define A "W"
#else
    #define A "A"
#endif
const
 GWL_EXSTYLE = -20;
 WS_EX_APPWINDOW = $40000;
 WS_EX_TOOLWINDOW = $80;

function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint;
 external 'SetWindowLong{#A}@user32.dll stdcall';

function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint;
 external 'GetWindowLong{#A}@user32.dll stdcall';

procedure InitializeWizard;
var
 CurStyle: Integer;
 begin
  CurStyle := GetWindowLong(Application.Handle, GWL_EXSTYLE);
  CurStyle := (CurStyle or WS_EX_TOOLWINDOW) and (not WS_EX_APPWINDOW);
  SetWindowLong(Application.Handle, GWL_EXSTYLE, CurStyle);
end;
 

sergey3695

Ветеран
Модератор
Mailchik, так инсталлятор скрывается при нажатие alt-tab, но с панели иконка не скрывается.
 

Snoopak96

Старожил
sergey3695,
Да это понятно, код работает рандомно) проверка видимо какая-то нужна.
 
Последнее редактирование:

Mailchik

Старожил
Проверенный
sergey3695, я не выкладываю код, не проверив его. лично у меня всё прекрасно скрывается.
на системах выше ХР, код сработает в зависимости от настроек безопасности системы.
 

sergey3695

Ветеран
Модератор
Mailchik, я и не говорил что код не рабочий.. Ладно не буду загоняться, я просто думал есть какое-то решение кроме showwindow. Просто иконка скрывается не молниеностно как хотелось. Ну чтож спасибо за то что ответели. :)
 

AntiAngel

Новичок
Подскажите как панель Tasks перенести на другую страницу чтоб чекбоксы создавались
т.е перенести то я могу WizardForm.TasksList но почему то чекбоксы созданные при [Tasks] не появляются
 

Shegorat

Lord of Madness
Администратор
Подскажите как панель Tasks перенести на другую страницу чтоб чекбоксы создавались
т.е перенести то я могу WizardForm.TasksList но почему то чекбоксы созданные при [Tasks] не появляются
В данном случае никак, т.к TasksList заполняется на TasksPage.
Можно только вручную создать все чекбоксы/новый тасклист на нужной странице и привязать их к необходимым действиям.
 

NUD96

Новичок
Добрый день. Хотелось бы узнать, не найдется ли ни у кого исходников ботвы и iswin7.dll? Хотелось бы исследовать изнутри. Любопытство мучает :-[ Буду премного благодарен
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху