Sanyk36
Цитата:
[more=Вот пример]
Код:
; Интерфейс установки максимально приближенный к InstallShield(я так думаю)реализованный стандартными(почти)средствами Inno Setup.Для создания слйд - шоу используется библиотека IsXbb.
; Используется Splash - заставка.
; При запуске инсталлятора отсутствует "мозолящий" глаза синий фон и имя программы.
; Скачать IsXbb.dll можно с http: //www.istool.org или http://data.cod.ru/381517258. Размер - ~33 Кб.
[Setup]
LicenseFile=License.rtf
InfoBeforeFile=Readme_rus.rtf
; Язык всех диалогов в инсталляторе:
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Files]
; RTF файлы
Source: "C:\License.rtf"; DestDir: {tmp}; Flags: dontcopy noencryption
Source: "C:\Readme_rus.rtf"; DestDir: {tmp}; Flags: dontcopy noencryption
; Библиотека для возможности проигрывания.mp3 музыки
Source: "C:\bass.dll"; DestDir: " {tmp} "; Flags: dontcopy noencryption nocompression
; .mp3 музыка
Source: "C:\Human1.mp3"; DestDir: " {tmp} "; Flags: dontcopy noencryption nocompression
; Рисунок используемый для отображения на странице подготовки(увидете - поймёте)
Source: "C:\Program Files\Inno Setup 5\WizModernSmallImage.bmp"; DestDir: {tmp}; Flags: dontcopy;
; Так же используется на странице подготовки как Splash - заставка
Source: "C:\Splash.bmp"; DestDir: {tmp}; Flags: dontcopy;
; В качестве фона используется изоброжение в формате.bmp.Уменьшить размер файла(почти без видимых потерь)монжо в Adobe Photoshop(Image = > Mode = > Idexed Color = > Palette: Local(_ANY_))
Source: "C:\Image.bmp"; DestDir: {tmp}; Flags: dontcopy;
; Библиотека для создания слайд - сшоу
Source: "C:\IsXbb.dll"; DestDir: {tmp}; Flags: dontcopy;
; Файлы для слайд - сшоу(их может быть и больше)
Source: "C:\1.jpg"; DestDir: {tmp}; Flags: dontcopy;
Source: "C:\2.jpg"; DestDir: {tmp}; Flags: dontcopy;
Source: "C:\3.jpg"; DestDir: {tmp}; Flags: dontcopy;
Source: "C:\4.jpg"; DestDir: {tmp}; Flags: dontcopy;
Source: "C:\5.jpg"; DestDir: {tmp}; Flags: dontcopy;
; Файлы проекта
; Source: "Work\ * . * "; DestDir: " {app} "; Flags: overwritereadonly ignoreversion recursesubdirs createallsubdirs;
[Code]
const
{"1,2,3,4" - в разных углах, "5" - по центру, "6" - растянуть изображения}
BACKGROUND = 6;
TIMER = 16;
BASS_ACTIVE_STOPPED = 0;
BASS_ACTIVE_PLAYING = 1;
BASS_ACTIVE_STALLED = 2;
BASS_ACTIVE_PAUSED = 3;
BASS_SAMPLE_LOOP = 4;
function isxbb_AddImage(Image: PChar; Flags: Cardinal): Integer;
external 'isxbb_AddImage@files:isxbb.dll stdcall';
function isxbb_Init(hWnd: Integer): Integer;
external 'isxbb_Init@files:isxbb.dll stdcall';
function isxbb_StartTimer(Seconds: Integer; Flags: Cardinal): Integer;
external 'isxbb_StartTimer@files:isxbb.dll stdcall';
function isxbb_KillTimer(Flags: Cardinal): Integer;
external 'isxbb_KillTimer@files:isxbb.dll stdcall';
function GetSystemMetrics(nIndex: Integer): Integer;
external 'GetSystemMetrics@user32.dll stdcall';
function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';
function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): DWORD;
external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';
function BASS_Start(): Boolean;
external 'BASS_Start@files:BASS.dll stdcall delayload';
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean;
external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';
function BASS_ChannelIsActive(handle: DWORD): Integer;
external 'BASS_ChannelIsActive@files:BASS.dll stdcall delayload';
function BASS_ChannelPause(handle: DWORD): Boolean;
external 'BASS_ChannelPause@files:BASS.dll stdcall delayload';
function BASS_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';
function BASS_Pause(): Boolean;
external 'BASS_Pause@files:BASS.dll stdcall delayload';
function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';
var
mp3Handle: HWND;
mp3Name: string;
Splash: TSetupForm;
function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('Human1.mp3');
mp3Name := ExpandConstant('{tmp}\Human1.mp3');
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
Result := True;
end;
procedure PlayButtonOnClick(Sender: TObject);
begin
case BASS_ChannelIsActive(mp3Handle) of
BASS_ACTIVE_PAUSED:
begin
BASS_ChannelPlay(mp3Handle, False);
end;
BASS_ACTIVE_STOPPED:
begin
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
end;
end;
end;
procedure PauseButtonOnClick(Sender: TObject);
begin
BASS_ChannelPause(mp3Handle);
end;
procedure StopButtonOnClick(Sender: TObject);
begin
BASS_Stop();
BASS_Free();
end;
procedure InitializeWizard();
var
BackgroundBitmapImage: TBitmapImage;
s: string;
Form: TSetupForm;
Width, Height: Integer;
ProgressBar: TNewProgressBar;
CancelButton: TButton;
StaticText: TNewStaticText;
BitmapImage: TBitmapImage;
BitmapImage1: TBitmapImage;
BitmapFileName: string;
License: string;
Readmerus: string;
i: Integer;
Name1: string;
PlayButton, PauseButton, StopButton: TButton;
Text: TNewStaticText;
Panel1: TPanel;
begin
WizardForm.Position := poScreenCenter;
MainForm.BORDERSTYLE := bsNone;
WizardForm.CancelButton.BringToFront;
{****************************************** [Для корректного отображения "License.rtf"] *********************************}
ExtractTemporaryFile('License.rtf');
LoadStringFromFile(ExpandConstant('{tmp}') + '\License.rtf', License)
WizardForm.LicenseMemo.RTFText := License;
{****************************************** [Для корректного отображения "License.rtf"] *********************************}
{****************************************** [Для корректного отображения "Readme_rus.rtf"] ******************************}
ExtractTemporaryFile('Readme_rus.rtf');
LoadStringFromFile(ExpandConstant('{tmp}') + '\Readme_rus.rtf', Readmerus)
WizardForm.InfoBeforeMemo.RTFText := Readmerus;
{****************************************** [Для корректного отображения "Readme_rus.rtf"] ******************************}
Splash := CreateCustomForm;
Splash.BorderStyle := bsNone;
BitmapImage1 := TBitmapImage.Create(Splash);
with BitmapImage1 do
begin
AutoSize := True;
Align := alClient;
Left := 0;
Top := 0;
Stretch := True;
Parent := Splash;
end;
ExtractTemporaryFile('Splash.bmp');
BitmapImage1.Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\Splash.bmp');
Splash.Width := BitmapImage1.Width;
Splash.Height := BitmapImage1.Height;
Splash.Center;
Splash.Show;
BitmapImage1.Refresh;
Form := CreateCustomForm();
try
with Form do
begin
ClientWidth := ScaleX(380);
ClientHeight := ScaleY(120);
BorderStyle := bsDialog;
Left := GetSystemMetrics(16) - ClientWidth - ScaleX(8);
Top := GetSystemMetrics(17) - ClientHeight - ScaleY(8);
end;
BitmapFileName := ExpandConstant('{tmp}\WizModernSmallImage.bmp');
ExtractTemporaryFile(ExtractFileName(BitmapFileName));
BitmapImage := TBitmapImage.Create(Form);
BitmapImage.Left := ScaleX(8);
BitmapImage.Top := ScaleY(8);
BitmapImage.AutoSize := True;
BitmapImage.Bitmap.LoadFromFile(BitmapFileName);
BitmapImage.Parent := Form;
StaticText := TNewStaticText.Create(Form);
StaticText.Top := BitmapImage.Top;
StaticText.Left := BitmapImage.Left + BitmapImage.Width + ScaleX(8)
{Надпись которая будет отображатся на странице поготовки}
StaticText.Caption := ''#10#13'"______" now preparing to install...';
StaticText.AutoSize := True;
StaticText.Parent := Form;
CancelButton := TButton.Create(Form);
CancelButton.Parent := Form;
CancelButton.Width := ScaleX(75);
CancelButton.Height := ScaleY(23);
CancelButton.Left := Form.ClientWidth - ScaleX(75 + 10);
CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10);
CancelButton.Caption := 'Cancel';
CancelButton.ModalResult := mrCancel;
CancelButton.Cancel := True;
Form.Caption := 'Prepering...';
ProgressBar := TNewProgressBar.Create(Form);
with ProgressBar do
begin
Height := CancelButton.Height - ScaleY(8);
Width := Form.Width - ScaleX(128);
Top := CancelButton.Top;
Left := BitmapImage.Left;
Parent := Form;
Min := 0;
Max := 30;
Position := 0;
end;
Form.ActiveControl := CancelButton;
Form.Show();
for i := 0 to 30 do
begin
ProgressBar.Position := i;
Form.Repaint;
Sleep(400);
i := i + 2;
end;
finally
Form.Free();
Splash.Close;
Width := GetSystemMetrics(0);
Height := GetSystemMetrics(1);
MainForm.Width := width;
MainForm.Height := height;
Width := MainForm.ClientWidth;
Height := MainForm.ClientHeight;
ExtractTemporaryFile('Image.bmp');
s := ExpandConstant('{tmp}') + '\Image.bmp';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Left := 0;
BackgroundBitmapImage.Top := 0;
BackgroundBitmapImage.Width := width;
BackgroundBitmapImage.Height := height;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch := True;
{Не забудте прописать здесь и ниже правильные имена и количество файлов для слайд-шоу!}
ExtractTemporaryFile('1.jpg');
ExtractTemporaryFile('2.jpg');
ExtractTemporaryFile('3.jpg');
ExtractTemporaryFile('4.jpg');
ExtractTemporaryFile('5.jpg');
MainForm.Visible := True;
begin
Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
Panel1.Parent := WizardForm;
Panel1.Left := ScaleX(1);
Panel1.Top := ScaleY(315);
Panel1.Width := ScaleX(165);
Panel1.Height := ScaleY(46);
Panel1.TabOrder := 0;
Panel1.Color := clWhite;
Panel1.BevelInner := bvLowered;
Panel1.BevelOuter := bvRaised;
Panel1.BorderStyle := bsSingle;
PlayButton := TButton.Create(WizardForm);
PlayButton.Left := 5;
PlayButton.Top := 335;
PlayButton.Width := 50;
PlayButton.Height := 20;
PlayButton.Caption := 'play';
PlayButton.OnClick := @PlayButtonOnClick;
PlayButton.Parent := WizardForm;
PlayButton.Cursor := crHand;
PauseButton := TButton.Create(WizardForm);
PauseButton.Left := 58;
PauseButton.Top := 335;
PauseButton.Width := 50;
PauseButton.Height := 20;
PauseButton.Caption := 'pause';
PauseButton.OnClick := @PauseButtonOnClick;
PauseButton.Parent := WizardForm;
PauseButton.Cursor := crHand;
StopButton := TButton.Create(WizardForm);
StopButton.Left := 111;
StopButton.Top := 335;
StopButton.Width := 50;
StopButton.Height := 20;
StopButton.Caption := 'stop';
StopButton.OnClick := @StopButtonOnClick;
StopButton.Parent := WizardForm;
StopButton.Cursor := crHand;
Text := TNewStaticText.Create(WizardForm);
Text.Caption := 'music';
Text.Parent := WizardForm;
Text.Font.Style := Text.Font.Style + [fsUnderline];
Text.Font.Color := clNavy;
Text.Top := 319;
Text.Left := 71;
Text.Color := clWhite;
end;
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall
then
begin
isxbb_AddImage(ExpandConstant('{tmp}') + '\1.jpg', BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}') + '\2.jpg', BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}') + '\3.jpg', BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}') + '\4.jpg', BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}') + '\5.jpg', BACKGROUND or TIMER);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));
{Указывается время отображения на экране каждого изображения}
isxbb_StartTimer(8, BACKGROUND)
end
else
if CurStep = ssPostInstall
then
isxbb_KillTimer(BACKGROUND);
end;
procedure CurPageChanged(CurPageID: Integer);
var
Width, Height: Integer;
begin
if CurPageID = wpInstalling
then
begin
{Здесь размер окна установки уменьшается, с него убирается всё лишнее и оно смещается в нижний правый угол экрана (не зависит от разрешения)}
WizardForm.CancelButton.BringToFront;
WizardForm.MainPanel.Visible := False;
WizardForm.Bevel1.Visible := False;
{Размер получемого окна установки}
Width := ScaleX(395);
Height := ScaleY(150);
WizardForm.Left := GetSystemMetrics(16) - Width - ScaleX(5);
WizardForm.Top := GetSystemMetrics(17) - Height - ScaleY(-50);
WizardForm.Width := ScaleX(395);
WizardForm.Height := ScaleY(150);
WizardForm.InnerNotebook.Left := ScaleX(10);
WizardForm.InnerNotebook.Top := ScaleY(10);
WizardForm.InnerNotebook.Width := ScaleX(370);
WizardForm.StatusLabel.Left := ScaleX(0);
WizardForm.StatusLabel.Top := ScaleY(0);
WizardForm.StatusLabel.Width := WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left := ScaleX(0);
WizardForm.FileNameLabel.Top := ScaleY(20);
WizardForm.FileNameLabel.Width := WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top := ScaleY(40);
WizardForm.ProgressGauge.Width := WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left := ScaleX(154);
WizardForm.CancelButton.Top := ScaleY(80);
end
if CurPageID = wpFinished
then
begin
{Окно установки принимает стандартный вид}
WizardForm.Width := 502;
WizardForm.Height := 392;
WizardForm.Position := poScreenCenter;
end
end;
procedure DeinitializeSetup();
begin
BASS_Stop();
BASS_Free();
end;
Цитата:
Ктонить поможет по этому вопросу : http://forum.ru-board.com/topic.cgi?forum=5&topic=4801&start=1460#5 ?
[more=Вот пример]
Код:
; Интерфейс установки максимально приближенный к InstallShield(я так думаю)реализованный стандартными(почти)средствами Inno Setup.Для создания слйд - шоу используется библиотека IsXbb.
; Используется Splash - заставка.
; При запуске инсталлятора отсутствует "мозолящий" глаза синий фон и имя программы.
; Скачать IsXbb.dll можно с http: //www.istool.org или http://data.cod.ru/381517258. Размер - ~33 Кб.
[Setup]
LicenseFile=License.rtf
InfoBeforeFile=Readme_rus.rtf
; Язык всех диалогов в инсталляторе:
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Files]
; RTF файлы
Source: "C:\License.rtf"; DestDir: {tmp}; Flags: dontcopy noencryption
Source: "C:\Readme_rus.rtf"; DestDir: {tmp}; Flags: dontcopy noencryption
; Библиотека для возможности проигрывания.mp3 музыки
Source: "C:\bass.dll"; DestDir: " {tmp} "; Flags: dontcopy noencryption nocompression
; .mp3 музыка
Source: "C:\Human1.mp3"; DestDir: " {tmp} "; Flags: dontcopy noencryption nocompression
; Рисунок используемый для отображения на странице подготовки(увидете - поймёте)
Source: "C:\Program Files\Inno Setup 5\WizModernSmallImage.bmp"; DestDir: {tmp}; Flags: dontcopy;
; Так же используется на странице подготовки как Splash - заставка
Source: "C:\Splash.bmp"; DestDir: {tmp}; Flags: dontcopy;
; В качестве фона используется изоброжение в формате.bmp.Уменьшить размер файла(почти без видимых потерь)монжо в Adobe Photoshop(Image = > Mode = > Idexed Color = > Palette: Local(_ANY_))
Source: "C:\Image.bmp"; DestDir: {tmp}; Flags: dontcopy;
; Библиотека для создания слайд - сшоу
Source: "C:\IsXbb.dll"; DestDir: {tmp}; Flags: dontcopy;
; Файлы для слайд - сшоу(их может быть и больше)
Source: "C:\1.jpg"; DestDir: {tmp}; Flags: dontcopy;
Source: "C:\2.jpg"; DestDir: {tmp}; Flags: dontcopy;
Source: "C:\3.jpg"; DestDir: {tmp}; Flags: dontcopy;
Source: "C:\4.jpg"; DestDir: {tmp}; Flags: dontcopy;
Source: "C:\5.jpg"; DestDir: {tmp}; Flags: dontcopy;
; Файлы проекта
; Source: "Work\ * . * "; DestDir: " {app} "; Flags: overwritereadonly ignoreversion recursesubdirs createallsubdirs;
[Code]
const
{"1,2,3,4" - в разных углах, "5" - по центру, "6" - растянуть изображения}
BACKGROUND = 6;
TIMER = 16;
BASS_ACTIVE_STOPPED = 0;
BASS_ACTIVE_PLAYING = 1;
BASS_ACTIVE_STALLED = 2;
BASS_ACTIVE_PAUSED = 3;
BASS_SAMPLE_LOOP = 4;
function isxbb_AddImage(Image: PChar; Flags: Cardinal): Integer;
external 'isxbb_AddImage@files:isxbb.dll stdcall';
function isxbb_Init(hWnd: Integer): Integer;
external 'isxbb_Init@files:isxbb.dll stdcall';
function isxbb_StartTimer(Seconds: Integer; Flags: Cardinal): Integer;
external 'isxbb_StartTimer@files:isxbb.dll stdcall';
function isxbb_KillTimer(Flags: Cardinal): Integer;
external 'isxbb_KillTimer@files:isxbb.dll stdcall';
function GetSystemMetrics(nIndex: Integer): Integer;
external 'GetSystemMetrics@user32.dll stdcall';
function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';
function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): DWORD;
external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';
function BASS_Start(): Boolean;
external 'BASS_Start@files:BASS.dll stdcall delayload';
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean;
external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';
function BASS_ChannelIsActive(handle: DWORD): Integer;
external 'BASS_ChannelIsActive@files:BASS.dll stdcall delayload';
function BASS_ChannelPause(handle: DWORD): Boolean;
external 'BASS_ChannelPause@files:BASS.dll stdcall delayload';
function BASS_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';
function BASS_Pause(): Boolean;
external 'BASS_Pause@files:BASS.dll stdcall delayload';
function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';
var
mp3Handle: HWND;
mp3Name: string;
Splash: TSetupForm;
function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('Human1.mp3');
mp3Name := ExpandConstant('{tmp}\Human1.mp3');
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
Result := True;
end;
procedure PlayButtonOnClick(Sender: TObject);
begin
case BASS_ChannelIsActive(mp3Handle) of
BASS_ACTIVE_PAUSED:
begin
BASS_ChannelPlay(mp3Handle, False);
end;
BASS_ACTIVE_STOPPED:
begin
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
end;
end;
end;
procedure PauseButtonOnClick(Sender: TObject);
begin
BASS_ChannelPause(mp3Handle);
end;
procedure StopButtonOnClick(Sender: TObject);
begin
BASS_Stop();
BASS_Free();
end;
procedure InitializeWizard();
var
BackgroundBitmapImage: TBitmapImage;
s: string;
Form: TSetupForm;
Width, Height: Integer;
ProgressBar: TNewProgressBar;
CancelButton: TButton;
StaticText: TNewStaticText;
BitmapImage: TBitmapImage;
BitmapImage1: TBitmapImage;
BitmapFileName: string;
License: string;
Readmerus: string;
i: Integer;
Name1: string;
PlayButton, PauseButton, StopButton: TButton;
Text: TNewStaticText;
Panel1: TPanel;
begin
WizardForm.Position := poScreenCenter;
MainForm.BORDERSTYLE := bsNone;
WizardForm.CancelButton.BringToFront;
{****************************************** [Для корректного отображения "License.rtf"] *********************************}
ExtractTemporaryFile('License.rtf');
LoadStringFromFile(ExpandConstant('{tmp}') + '\License.rtf', License)
WizardForm.LicenseMemo.RTFText := License;
{****************************************** [Для корректного отображения "License.rtf"] *********************************}
{****************************************** [Для корректного отображения "Readme_rus.rtf"] ******************************}
ExtractTemporaryFile('Readme_rus.rtf');
LoadStringFromFile(ExpandConstant('{tmp}') + '\Readme_rus.rtf', Readmerus)
WizardForm.InfoBeforeMemo.RTFText := Readmerus;
{****************************************** [Для корректного отображения "Readme_rus.rtf"] ******************************}
Splash := CreateCustomForm;
Splash.BorderStyle := bsNone;
BitmapImage1 := TBitmapImage.Create(Splash);
with BitmapImage1 do
begin
AutoSize := True;
Align := alClient;
Left := 0;
Top := 0;
Stretch := True;
Parent := Splash;
end;
ExtractTemporaryFile('Splash.bmp');
BitmapImage1.Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\Splash.bmp');
Splash.Width := BitmapImage1.Width;
Splash.Height := BitmapImage1.Height;
Splash.Center;
Splash.Show;
BitmapImage1.Refresh;
Form := CreateCustomForm();
try
with Form do
begin
ClientWidth := ScaleX(380);
ClientHeight := ScaleY(120);
BorderStyle := bsDialog;
Left := GetSystemMetrics(16) - ClientWidth - ScaleX(8);
Top := GetSystemMetrics(17) - ClientHeight - ScaleY(8);
end;
BitmapFileName := ExpandConstant('{tmp}\WizModernSmallImage.bmp');
ExtractTemporaryFile(ExtractFileName(BitmapFileName));
BitmapImage := TBitmapImage.Create(Form);
BitmapImage.Left := ScaleX(8);
BitmapImage.Top := ScaleY(8);
BitmapImage.AutoSize := True;
BitmapImage.Bitmap.LoadFromFile(BitmapFileName);
BitmapImage.Parent := Form;
StaticText := TNewStaticText.Create(Form);
StaticText.Top := BitmapImage.Top;
StaticText.Left := BitmapImage.Left + BitmapImage.Width + ScaleX(8)
{Надпись которая будет отображатся на странице поготовки}
StaticText.Caption := ''#10#13'"______" now preparing to install...';
StaticText.AutoSize := True;
StaticText.Parent := Form;
CancelButton := TButton.Create(Form);
CancelButton.Parent := Form;
CancelButton.Width := ScaleX(75);
CancelButton.Height := ScaleY(23);
CancelButton.Left := Form.ClientWidth - ScaleX(75 + 10);
CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10);
CancelButton.Caption := 'Cancel';
CancelButton.ModalResult := mrCancel;
CancelButton.Cancel := True;
Form.Caption := 'Prepering...';
ProgressBar := TNewProgressBar.Create(Form);
with ProgressBar do
begin
Height := CancelButton.Height - ScaleY(8);
Width := Form.Width - ScaleX(128);
Top := CancelButton.Top;
Left := BitmapImage.Left;
Parent := Form;
Min := 0;
Max := 30;
Position := 0;
end;
Form.ActiveControl := CancelButton;
Form.Show();
for i := 0 to 30 do
begin
ProgressBar.Position := i;
Form.Repaint;
Sleep(400);
i := i + 2;
end;
finally
Form.Free();
Splash.Close;
Width := GetSystemMetrics(0);
Height := GetSystemMetrics(1);
MainForm.Width := width;
MainForm.Height := height;
Width := MainForm.ClientWidth;
Height := MainForm.ClientHeight;
ExtractTemporaryFile('Image.bmp');
s := ExpandConstant('{tmp}') + '\Image.bmp';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Left := 0;
BackgroundBitmapImage.Top := 0;
BackgroundBitmapImage.Width := width;
BackgroundBitmapImage.Height := height;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch := True;
{Не забудте прописать здесь и ниже правильные имена и количество файлов для слайд-шоу!}
ExtractTemporaryFile('1.jpg');
ExtractTemporaryFile('2.jpg');
ExtractTemporaryFile('3.jpg');
ExtractTemporaryFile('4.jpg');
ExtractTemporaryFile('5.jpg');
MainForm.Visible := True;
begin
Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
Panel1.Parent := WizardForm;
Panel1.Left := ScaleX(1);
Panel1.Top := ScaleY(315);
Panel1.Width := ScaleX(165);
Panel1.Height := ScaleY(46);
Panel1.TabOrder := 0;
Panel1.Color := clWhite;
Panel1.BevelInner := bvLowered;
Panel1.BevelOuter := bvRaised;
Panel1.BorderStyle := bsSingle;
PlayButton := TButton.Create(WizardForm);
PlayButton.Left := 5;
PlayButton.Top := 335;
PlayButton.Width := 50;
PlayButton.Height := 20;
PlayButton.Caption := 'play';
PlayButton.OnClick := @PlayButtonOnClick;
PlayButton.Parent := WizardForm;
PlayButton.Cursor := crHand;
PauseButton := TButton.Create(WizardForm);
PauseButton.Left := 58;
PauseButton.Top := 335;
PauseButton.Width := 50;
PauseButton.Height := 20;
PauseButton.Caption := 'pause';
PauseButton.OnClick := @PauseButtonOnClick;
PauseButton.Parent := WizardForm;
PauseButton.Cursor := crHand;
StopButton := TButton.Create(WizardForm);
StopButton.Left := 111;
StopButton.Top := 335;
StopButton.Width := 50;
StopButton.Height := 20;
StopButton.Caption := 'stop';
StopButton.OnClick := @StopButtonOnClick;
StopButton.Parent := WizardForm;
StopButton.Cursor := crHand;
Text := TNewStaticText.Create(WizardForm);
Text.Caption := 'music';
Text.Parent := WizardForm;
Text.Font.Style := Text.Font.Style + [fsUnderline];
Text.Font.Color := clNavy;
Text.Top := 319;
Text.Left := 71;
Text.Color := clWhite;
end;
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall
then
begin
isxbb_AddImage(ExpandConstant('{tmp}') + '\1.jpg', BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}') + '\2.jpg', BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}') + '\3.jpg', BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}') + '\4.jpg', BACKGROUND or TIMER);
isxbb_AddImage(ExpandConstant('{tmp}') + '\5.jpg', BACKGROUND or TIMER);
isxbb_Init(StrToInt(ExpandConstant('{hwnd}')));
{Указывается время отображения на экране каждого изображения}
isxbb_StartTimer(8, BACKGROUND)
end
else
if CurStep = ssPostInstall
then
isxbb_KillTimer(BACKGROUND);
end;
procedure CurPageChanged(CurPageID: Integer);
var
Width, Height: Integer;
begin
if CurPageID = wpInstalling
then
begin
{Здесь размер окна установки уменьшается, с него убирается всё лишнее и оно смещается в нижний правый угол экрана (не зависит от разрешения)}
WizardForm.CancelButton.BringToFront;
WizardForm.MainPanel.Visible := False;
WizardForm.Bevel1.Visible := False;
{Размер получемого окна установки}
Width := ScaleX(395);
Height := ScaleY(150);
WizardForm.Left := GetSystemMetrics(16) - Width - ScaleX(5);
WizardForm.Top := GetSystemMetrics(17) - Height - ScaleY(-50);
WizardForm.Width := ScaleX(395);
WizardForm.Height := ScaleY(150);
WizardForm.InnerNotebook.Left := ScaleX(10);
WizardForm.InnerNotebook.Top := ScaleY(10);
WizardForm.InnerNotebook.Width := ScaleX(370);
WizardForm.StatusLabel.Left := ScaleX(0);
WizardForm.StatusLabel.Top := ScaleY(0);
WizardForm.StatusLabel.Width := WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left := ScaleX(0);
WizardForm.FileNameLabel.Top := ScaleY(20);
WizardForm.FileNameLabel.Width := WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top := ScaleY(40);
WizardForm.ProgressGauge.Width := WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left := ScaleX(154);
WizardForm.CancelButton.Top := ScaleY(80);
end
if CurPageID = wpFinished
then
begin
{Окно установки принимает стандартный вид}
WizardForm.Width := 502;
WizardForm.Height := 392;
WizardForm.Position := poScreenCenter;
end
end;
procedure DeinitializeSetup();
begin
BASS_Stop();
BASS_Free();
end;