PDA

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


Страниц : 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 58 59 60 61 62 63 [64] 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Nordek
14-10-2013, 14:18
Все галочки сразу выставлены и немного не удобно постоянно убирать галочки »
Для задач можешь использовать Flags: unchecked.
Для компонентов смотри в сторону Types, там есть выбор custom, compact или full.
Например может присутствовать
Types: full, Types: compact или Types: custom. Удали строчку что касается Types.

Alloc
14-10-2013, 15:29
audiofeel, Зачем скрипт, если я его не модифицировал вообще, он такой какой есть, единственное что я изменил так это вот:


if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-2.bin'), ExpandConstant('{app}'), '', false, '321989', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;

vint56
14-10-2013, 15:50
Alloc если один архив сделай так
if not ISArcExtract ( 0, 100, ExpandConstant('{src}\Data-2.bin'), ExpandConstant('{app}'), '', false, '321989', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;

El Sanchez
14-10-2013, 17:01
Nordek, Mat_y, месье знают толк в извращениях. Mat_y, вместо того, чтобы использовать для патча другой AppId дабы тот прописывался в своей ветке реестра и не трогал ветку основной программы, вы занимаетесь ерундой.
AppId программы выглядит так:
Код:
[Setup]
AppId={{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU} »
Вот и хорошо. Теперь сочиняете что-нибудь другое, например, {B7EB229F-2DFB-4612-AFC0-99773E1E14A8} или {C90E626C-6E7C-44A4-A8B3-77D584F4BCD8}, или {1EAC1D02-C6AC-4FA6-9A44-96258C37C812RUPATCH}, или WordOfTanksPatch, или еще около 10 млрд. примеров и пишете в AppId патча. Это значение будет использовано инсталлятором при регистрации самого себя в реестре, например, в ветке HKEY_LOCAL_MACHINE\SOFTWARE\...\Uninstall\{B7EB229F-2DFB-4612-AFC0-99773E1E14A8}_is1, т.е. не в ветке основной программы. В свою ветку он пропишет и свои типы, компоненты, задачи и т.д. Пишете в скрипте патча:

[Setup]
AppId={{B7EB229F-2DFB-4612-AFC0-99773E1E14A8}


Благодаря этому AppId мой установщик находит правильный путь к установленной программе. »
Мало только найти путь установленной программы, чтобы потом указать его на странице выбора папки установки, нужно еще и недопустить запуск патча при отсутствии установленной программы. Согласитесь, глупо устанавливать патч на программу, если ее нет. Пишете в скрипте патча:

[Setup]
AppId={{B7EB229F-2DFB-4612-AFC0-99773E1E14A8}
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU%7d_is1,InstallLocation|}

...
function InitializeSetup(): Boolean;
begin
Result := DirExists(ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU%7d_is1,InstallLocation|}'));
if not Result then MsgBox('Программа не найдена!', mbError, MB_OK);
end;


Но если я удаляю установленные сверху программы файлы (через Uninstall ), то удаляется и запись о программе в реестре (точнее она остается, но даже не открывается, выдавая ошибку). »
Mat_y, не держите запущенный regedit на открытой ветке Uninstall (или ветке удаляемой программы) во время удаления программы, чтобы не пришлось потом удивляться присутствию фактически удаленной ветки.

Nightwishh
14-10-2013, 17:05
Всем здраствуйте. Объясните почему мирцают лейблы и др. объекты, которые находяться на картинке, при переходе с одной страницы на другую (причём видно задний фон этих объектов), продолжительностью доли секунды? Ботву неиспользую. И как с этим бороться? Надеюсь вопрос понятен :) Спасибо!!!

Mat_y
15-10-2013, 16:33
Nordek, Mat_y, месье знают толк в извращениях. »
Спасибо... благодаря Вам я меняю ход мышления... проверю Ваш способ... думаю это идеально (я просто на самой первой ступени изучения всех этих скриптов и самого Inno, но благодаря подобным советам начинаю лучше понимать сами подходы)

Можете объяснить вот это место
%7d_is1
и вот это
InstallLocation

Mat_y, не держите запущенный regedit на открытой ветке Uninstall (или ветке удаляемой программы) во время удаления программы, чтобы не пришлось потом удивляться присутствию фактически удаленной ветки. »
Вах! Телепат!

Shkutu
15-10-2013, 17:13
Приветствую!
Возник вопрос, а можно ли использовать компоненты, но при этом не использовать типы установки? Просто столкнулась с тем, что даже если вообще не вводить секцию types, при установке все равно получается выбор типа установки (из тех стандартных, что у него есть: полный, выборочный, компактный)

El Sanchez
15-10-2013, 21:01
%7d_is1 »
Mat_y, %7d - шестнадцатиричное представление символа }. Константа {reg} имеет следующий синтаксис: {reg:HKxx\SubkeyName,ValueName|DefaultValue}. SubkeyName может содержать в себе символы { и }, как в вашем случае, и , чтобы при парсинге константы эти символы воспринялись в литеральном смысле, а не как часть синтаксиса константы, нужно их экранировать. Открывающая скобка { экранируется собой же, закрывающая шестнадцатиричным представлением. Все это в справке есть, кстати.
Просто столкнулась с тем, что даже если вообще не вводить секцию types, при установке все равно получается выбор типа установки (из тех стандартных, что у него есть: полный, выборочный, компактный) »
Shkutu, пропишите только это:

[Types]
Name: custom; Description: Custom installation; Flags: iscustom

Mat_y
16-10-2013, 09:10
Мало только найти путь установленной программы, чтобы потом указать его на странице выбора папки установки, нужно еще и недопустить запуск патча при отсутствии установленной программы. Согласитесь, глупо устанавливать патч на программу, если ее нет. Пишете в скрипте патча:
Код:
[Setup]
AppId={{B7EB229F-2DFB-4612-AFC0-99773E1E14A8}
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU%7d_is1,InstallLocation|}
...
function InitializeSetup(): Boolean;
begin
Result := DirExists(ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU%7d_is1,InstallLocation|}'));
if not Result then MsgBox('Программа не найдена!', mbError, MB_OK);
end; »

Ну тут я не соглашусь... у многих полный бардак в системе и реестре... так что пользователь может и просто обломаться. Достаточно просто находить путь к папке с игрой, а если он не найден, то давать возможность делать это самостоятельно.

Но у меня появился к Вам еще вопрос.
Сейчас я проверяю правильность выбранной папки...
///////////ПРОВЕРЯЕМ ПРАВИЛЬНОСТЬ ДИРЕКТОРИИ/////////////////////
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;

case CurPageID of
wpSelectDir:
begin
Result := FileExists(ExpandConstant('{app}')+'\GameName.exe');
if not Result then MsgBoxEx(WizardForm.Handle, 'По данному пути игра не найдена! Еще раз проверьте путь установки!', 'Неверно указан путь к игре', MB_OK or MB_ICONWARNING, 0, 0);
end;
end;
end;
////////////////////////////////////////////////////////////////////

Проверяемый фаил содержит в свойствах номер версии... можно ли как-то еще и версию фала проверять?

nik1967
16-10-2013, 12:39
можно ли как-то еще и версию фала проверять? »[setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}
OutputDir=.
VersionInfoVersion=1.0.0.3

[ code]
function FileVersion(FilePath:string):string; // версия файла
var
oFS: Variant;
begin
oFS := CreateOleObject('Scripting.FileSystemObject');
Result := oFS.GetFileVersion(FilePath);
end;

procedure InitializeWizard();
begin
if FileExists(ExpandConstant('{src}\setup.exe')) then
MsgBox(FileVersion(ExpandConstant('{src}\setup.exe')), mbInformation, MB_OK);
end;

Shkutu
16-10-2013, 13:07
El Sanchez, спасибо!
А вот еще вопрос. Если в инсталляторе на странице выбора доп. задач есть чекбоксы для создания нескольких ярлыков на рабочем столе, то можно кроме них сделать чекбокс "выставить все" и, если можно, то как? Т е можно ли как-то программно выставлять чекбокс таска на странице wpSelectTasks?

nik1967
16-10-2013, 13:43
Shkutu, [setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
OutputDir=.

[Tasks]
Name: desktopicon; Description: Выставить все; GroupDescription: Создать ярлыки:
Name: desktopicon\di1; Description: 1 ярлык; Flags: unchecked
Name: desktopicon\di2; Description: 2 ярлык; Flags: unchecked
Name: desktopicon\di3; Description: 3 ярлык; Flags: unchecked

Shkutu
16-10-2013, 14:36
nik1967, это не совсем то, насколько я поняла. GroupDescription просто позволяет объединить несколько задач в группу. В прошлый раз я наверное не совсем корректно задала вопрос. Смысл в том, что если, допустим, у меня есть 10 чек боксов для создания 10 ярлыков, то хотелось бы иметь еще 1 чек бокс "выставить все", после выставления которого остальные 10 автоматически станут выставлены (ну просто чтобы можно было кликнуть 1 раз вместо 10 :))
И еще вопрос. Можно ли на странице выбора компонентов эти самые компоненты разделить на группы, ну или выводить какой-нибудь текст между перечислением этих самых компонентов на странице wpSelectComponents. Т е как раз что-то вроде GroupDescription, но для компонентов?

nik1967
16-10-2013, 14:42
Shkutu, а попробовать скомпилировать пример и посмотреть - не?Смысл в том, что если, допустим, у меня есть 10 чек боксов для создания 10 ярлыков, то хотелось бы иметь еще 1 чек бокс "выставить все", после выставления которого остальные 10 автоматически станут выставлены (ну просто чтобы можно было кликнуть 1 раз вместо 10 ) »Вот как раз это и происходит в данном примере, но без заморочек с секцией [ code]. А GroupDescription если не нужен, можно и не использовать.

Shkutu
16-10-2013, 15:13
nik1967, пробовать-то пробовала, но изначально читала невнимательно, так что сразу не поняла, как оно работает, извините. Да, действительно, это как раз то, что нужно. :)

Mat_y
16-10-2013, 17:24
Можно
Код:
[setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}
OutputDir=.
VersionInfoVersion=1.0.0.3
[ code]
function FileVersion(FilePath:string):string; // версия файла
var
oFS: Variant;
begin
oFS := CreateOleObject('Scripting.FileSystemObject');
Result := oFS.GetFileVersion(FilePath);
end;
procedure InitializeWizard();
begin
if FileExists(ExpandConstant('{src}\setup.exe')) then
MsgBox(FileVersion(ExpandConstant('{src}\setup.exe')), mbInformation, MB_OK);
end; »
Так.. что-то я не догнал... а в каком тут месте проверяется версия файла? И как сделать так, чтобы сообщение о неверной версии проверяемого файла выскакивало при нажатии кнопки кнопки далее... ну как тут:
///////////ПРОВЕРЯЕМ ПРАВИЛЬНОСТЬ ДИРЕКТОРИИ/////////////////////
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;

case CurPageID of
wpSelectDir:
begin
Result := FileExists(ExpandConstant('{app}')+'\GameName.exe');
if not Result then MsgBoxEx(WizardForm.Handle, 'По данному пути игра не найдена! Еще раз проверьте путь установки!', 'Неверно указан путь к игре', MB_OK or MB_ICONWARNING, 0, 0);
end;
end;
end;
////////////////////////////////////////////////////////////////////

APTEM2
16-10-2013, 23:36
Всем хай ребят выручайте что с этой ошибкой делать
http://i58.fastpic.ru/thumb/2013/1016/85/e644d2707988eadc58b4178c73260385.jpeg (http://fastpic.ru/view/58/2013/1016/e644d2707988eadc58b4178c73260385.png.html)

nik1967
16-10-2013, 23:53
APTEM2, удалить повторный идентификатор 'CancelBtn'
Mat_y, если не забуду, завтра пример набросаю.

APTEM2
17-10-2013, 00:05
nik1967,
Ещё вопрос как в свой инстолятор добавить слайд шоу ?????????

Mat_y
17-10-2013, 08:52
APTEM2, кнопка Cancel у Вас 2 раза прописана в коде.
Ещё вопрос как в свой инстолятор добавить слайд шоу ????????? »

Слайдшоу по процентам установки (из справки)
[Setup]
AppName=My Program
AppVerName=My Program
CreateAppDir=No
WindowVisible=Yes

[Files]
Source: innocallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: pic1.bmp; DestDir: {tmp}; Flags: dontcopy
Source: pic2.bmp; DestDir: {tmp}; Flags: dontcopy
Source: pic3.bmp; DestDir: {tmp}; Flags: dontcopy

[Code
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
BackgroundBitmapImage: TBitmapImage;
TimerID: LongWord;

function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';

procedure InitializeWizard();
begin
ExtractTemporaryFile('pic1.bmp')
ExtractTemporaryFile('pic2.bmp')
ExtractTemporaryFile('pic3.bmp')
end;

function PercentProgress(): Integer;
begin
with WizardForm.ProgressGauge do begin
Result:=(Position-Min)/((Max - Min)/100)
end
end;

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
var
percent: integer;
begin
percent:=PercentProgress
with BackgroundBitmapImage do begin
if ((percent>0) and (percent<33) and (Tag<>1)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\pic1.bmp')
Tag:=1
end else
if ((percent>34) and (percent<66) and (Tag<>2)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\pic2.bmp')
Tag:=2
end else
if ((percent>67) and (percent<100) and (Tag<>3)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\pic3.bmp')
Tag:=3
end
end
end;

procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;
Width, Height: Integer;
begin
If CurPageID=wpInstalling
then
begin
pfunc:=WrapTimerProc(@OnTimer, 4)
TimerID:=SetTimer(0, 0, 500, pfunc)
BackgroundBitmapImage:=TBitmapImage.Create(MainForm)
with BackgroundBitmapImage do begin
BackColor:=clBlack
Center:=True
Align:=alClient
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\pic1.bmp')
Parent:=MainForm
Tag:=1
end
end
if CurPageID=wpFinished
then
begin
BackgroundBitmapImage.Hide
end
end;

procedure DeinitializeSetup();
begin
KillTimer(0, TimerID)
end;

Полноэкранный рисунок на фоновом окне и полноэкранное слайд-шоу по процентам (из справки):
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName=My Program
BackColor=0

[Files]
Source: InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: BackImage.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 1.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 2.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 3.bmp; DestDir: {tmp}; Flags: dontcopy

[Code
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
BackImage, SlideImage: TBitmapImage;
TimerID: LongWord;
s:string;
Width, Height:Integer;

function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';

procedure InitializeWizard();
begin
WizardForm.Position:=poScreenCenter
Width:=GetSystemMetrics(0)
Height:=GetSystemMetrics(1)
MainForm.BORDERSTYLE:=bsNone
MainForm.Left:=0
MainForm.Top:=0
MainForm.Width:=Width
MainForm.Height:=Height
ExtractTemporaryFile('BackImage.bmp')
s:=ExpandConstant('{tmp}')+'\BackImage.bmp '
BackImage:=TBitmapImage.Create(MainForm)
BackImage.Bitmap.LoadFromFile(s)
BackImage.Align:=alClient
BackImage.Parent:=MainForm
BackImage.Stretch:=True
MainForm.Visible:=True

ExtractTemporaryFile('BackImage.bmp')
ExtractTemporaryFile('1.bmp')
ExtractTemporaryFile('2.bmp')
ExtractTemporaryFile('3.bmp')
end;

function PercentProgress(): Integer;
begin
with WizardForm.ProgressGauge do begin
Result:=(Position-Min)/((Max - Min)/100)
end
end;

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
var
percent: integer;
begin
percent:=PercentProgress
with SlideImage do begin
if ((percent>0) and (percent<10) and (Tag<>1)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\1.bmp')
Tag:=1
end else
if ((percent>11) and (percent<20) and (Tag<>2)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\2.bmp')
Tag:=2
end else
if ((percent>21) and (percent<100) and (Tag<>3)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\3.bmp')
Tag:=3
end
end
end;

procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;
Width, Height: Integer;
begin
If CurPageID=wpInstalling
then
begin
pfunc:=WrapTimerProc(@OnTimer, 4)
TimerID:=SetTimer(0, 0, 500, pfunc)
SlideImage:=TBitmapImage.Create(MainForm)
with SlideImage do begin
Stretch:=True
Align:=alClient
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\1.bmp')
Parent:=MainForm
Tag:=1
end
end
if CurPageID=wpFinished
then
begin
SlideImage.Hide
end
end;

procedure DeinitializeSetup();
begin
KillTimer(0, TimerID)
end;

Inno Setup Faq. Слайд-шоу в окне инсталляции

#define TIME_FOR_VIEW 10

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program

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

[Files]
Source: InnoCallback.dll; Flags: dontcopy noencryption nocompression solidbreak;
Source: .bmp; Flags: dontcopy noencryption nocompression solidbreak;

Source: D:\Games\StarCraft enGB\StarDat.mpq; DestDir: {app}

[Code
const
n=21; ///количество слайдов
type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);
TRandNumbers = array[1..N] of byte;

function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:InnoCallback.dll stdcall';

function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';

function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';

function get_unique_r andom_number(X:byte):TRandNumbers;
var
A,b,c: string;
i,j,k:byte;
begin
For i:=1 to X do A:=A+chr(i);
B:='';
For i:=1 to X do begin
j:=Random(Length(A)-1)+1;
C:='';
B:=B + A[j];
for k:=1 to Length(A) do
if k<>j then C:=C+A[k];
A:=C;
end;
for i:=1 to X do Result[i]:=ord(B[i]);
end;

var
TimerID: LongWord;
currTime: Integer;
SplashImage: TBitmapImage;
StatusMessages: TNewStaticText;
bmp: TRandNumbers;
z:byte;

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
currTime := currTime + 1;
if (currTime mod {#TIME_FOR_VIEW} = 0)
then begin
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_'+ inttostr(bmp[currTime/{#TIME_FOR_VIEW}])+'.bmp'));
if (currTime/{#TIME_FOR_VIEW} = N) then currTime:=0;
end;
end;

procedure InitializeWizard;
begin
bmp:=get_unique_random_number(N);
ExtractTemporaryFile('Image_'+inttostr(bmp[1])+'.bmp');

currTime := 0;

WizardForm.ProgressGauge.Parent := WizardForm;
WizardForm.ProgressGauge.Top := WizardForm.CancelButton.Top + ScaleY (12);
WizardForm.ProgressGauge.Left := ScaleX(10);
WizardForm.ProgressGauge.Width := WizardForm.MainPanel.Width - ScaleX(20);
WizardForm.ProgressGauge.Height := 16;
WizardForm.ProgressGauge.Hide;

WizardForm.StatusLabel.Parent := WizardForm;
WizardForm.StatusLabel.Top := WizardForm.ProgressGauge.Top - ScaleY(18);
WizardForm.StatusLabel.Left := ScaleX(10);
WizardForm.StatusLabel.Width := ScaleX(397);
WizardForm.StatusLabel.Hide;

SplashImage := TBitmapImage.Create(WizardForm);
SplashImage.Top := 0;
SplashImage.Left := 0;
SplashImage.Width := WizardForm.MainPanel.Width;
SplashImage.Height := WizardForm.Bevel.Top;
SplashImage.Parent := WizardForm.InnerPage;
SplashImage.Stretch := True;
SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_'+inttostr(bmp[1])+'.bmp'));
SplashImage.Hide;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
WizardForm.StatusLabel.Caption := 'Распаковка слайдов ...';
for z:=2 to N do ExtractTemporaryFile('Image_ '+inttostr(bmp[z])+'.bmp');
end;
end;

procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;
begin
if (CurPageID = wpInstalling) then
begin
pfunc := WrapTimerProc(@OnTimer, 5);
TimerID := SetTimer(0, 0, 1000, pfunc);
WizardForm.PageNameLabel.Visible := False;
WizardForm.PageNameLabel.Visible := False;
WizardForm.InnerNotebook.Hide;
WizardForm.Bevel1.Hide;
WizardForm.MainPanel.Hide;
WizardForm.PageNameLabel.Hide;
WizardForm.PageNameLabel.Hide;
WizardForm.ProgressGauge.Show;
WizardForm.StatusLabel.Show;
SplashImage.Show;
WizardForm.CancelButton.Enabled := True;
WizardForm.CancelButton.Top := WizardForm< /FONT> .Bevel.Top + ScaleY(100);
end else
begin
WizardForm.ProgressGauge.Hide;
SplashImage.Hide;
WizardForm.FileNameLabel.Hide;
WizardForm.StatusLabel.Hide;
if (CurPageID > wpInstalling) and (CurPageID < wpFinished) then
begin
WizardForm.InnerNotebook.Show;
WizardForm.Bevel1.Show;
WizardForm.MainPanel.Show;
WizardForm.PageNameLabel.Show;
WizardForm.PageNameLabel.Show;
end;
If CurPageID = wpFinished then
end;
end;

procedure DeInitializeSetup();
begin
KillTimer(0, TimerID);
end;




nik1967, напоминаю о своей проблеме.




© OSzone.net 2001-2012