Войти

Показать полную графическую версию : Скрипты 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

Nightwishh
16-04-2013, 10:47
Добрый день! Проблемка.
[Setup]
AppName=Example.Play.MP3.Music.On.Start.Up.With.Texture
AppVerName=Example.Play.MP3.Music.On.Start.Up.With.Texture
AppPublisher=genri.sampron.iTASmania_Inc.uncle
DefaultDirName=C:\Play.MP3
OutputBaseFilename=play.mp3.by.genri.sampron.iTASmania_Inc.uncle


[Files]
Source: BASS.dll; DestDir: {tmp}; Flags: dontcopy noencryption
Source: sound.mp3; DestDir: {tmp}; Flags: dontcopy noencryption nocompression
Source: MusicButton.bmp; DestDir: {tmp}; Flags: dontcopy


[ Code]
const
BASS_ACTIVE_STOPPED = 0;
BASS_ACTIVE_PLAYING = 1;
BASS_ACTIVE_STALLED = 2;
BASS_ACTIVE_PAUSED = 3;
BASS_SAMPLE_LOOP = 4;

var
mp3Handle: HWND;
mp3Name: String;
PlayButton, PauseButton, StopButton: TPanel;
PlayImage, PauseImage, StopImage: TBitmapImage;
PlayLabel, PauseLabel, StopLabel: TLabel;
MouseLabel: Tlabel;
MouseSiteLabel, SiteLabel: TLabel;

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';

procedure PlayMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PlayImage.Left := -96
end;

procedure PlayMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PlayImage.Left := 0
end;

procedure PlayMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if PlayImage.Left <> -96 then PlayImage.Left := -192
StopImage.Left := -64
end;

procedure PauseMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PauseImage.Left := -128
end;

procedure PauseMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
PauseImage.Left := -32
end;

procedure PauseMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if PauseImage.Left <> -128 then PauseImage.Left := -224
StopImage.Left := -64
end;

procedure StopMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
StopImage.Left := -160
end;

procedure StopMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
StopImage.Left := -64
end;

procedure StopMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if StopImage.Left <> -160 then StopImage.Left := -256
PlayImage.Left := 0
PauseImage.Left := -32
end;

procedure SiteLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://forum.ru-board.com', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
end;

procedure SiteLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clRed
end;

procedure SiteLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clBlue
end;

procedure SiteLabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clGreen
end;

procedure SiteLabelMouseMove2(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clBlue
end;

procedure MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
PlayImage.Left := 0
PauseImage.Left := -32
StopImage.Left := -64
end;

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('sound.mp3');
mp3Name := ExpandConstant('{tmp}\sound.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);
PlayButton.Hide
PauseButton.Show
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);
PlayButton.Hide
PauseButton.Show
end;
end;
end;

procedure PauseButtonOnClick(Sender: TObject);
begin
BASS_ChannelPause(mp3Handle);
PauseButton.Hide
PlayButton.Show
end;

procedure StopButtonOnClick(Sender: TObject);
begin
BASS_Stop();
BASS_Free();
PauseButton.Hide
PlayButton.Show
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('MusicButton.bmp')

WizardForm.WizardBitmapImage.Parent:= WizardForm
WizardForm.WizardBitmapImage.Height:= WizardForm.Height
MouseLabel := TLabel.Create(WizardForm)
MouseLabel.Width := WizardForm.Width
MouseLabel.Height := WizardForm.Height
MouseLabel.Autosize := False
MouseLabel.Transparent := True
MouseLabel.OnMouseMove := @MouseMove
MouseLabel.Parent := WizardForm

PlayButton := TPanel.Create(WizardForm)
PlayButton.Left := 50
PlayButton.Top := 320
PlayButton.Width := 32
PlayButton.Height := 33
PlayButton.Cursor := crHand
PlayButton.ShowHint := True
PlayButton.Hint := 'Воспроизведение музыки'
PlayButton.OnClick := @PlayButtonOnClick
PlayButton.Parent := WizardForm

PlayImage := TBitmapImage.Create(WizardForm)
PlayImage.Left := 0
PlayImage.Top := 0
PlayImage.Width := 288
PlayImage.Height := 33
PlayImage.Enabled := False
PlayImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'))
PlayImage.Parent := PlayButton
//
PlayImage.ReplaceColor:=$E2E2E2
PlayImage.ReplaceWithColor:=clBtnFace


PlayLabel := TLabel.Create(WizardForm)
PlayLabel.Width := PlayButton.Width
PlayLabel.Height := PlayButton.Height
PlayLabel.Autosize := False
PlayLabel.Transparent := True
PlayLabel.OnClick := @PlayButtonOnClick
PlayLabel.OnMouseDown := @PlayMouseDown
PlayLabel.OnMouseUp := @PlayMouseUp
PlayLabel.OnMouseMove := @PlayMouseMove
PlayLabel.Parent := PlayButton

PauseButton := TPanel.Create(WizardForm)
PauseButton.Left := 50
PauseButton.Top := 320
PauseButton.Width := 32
PauseButton.Height := 33
PauseButton.Cursor := crHand
PauseButton.ShowHint := True
PauseButton.Hint := 'Приостановить музыку'
PauseButton.OnClick := @PauseButtonOnClick
PauseButton.Parent := WizardForm

PauseImage := TBitmapImage.Create(WizardForm)
PauseImage.Left := -32
PauseImage.Top := 0
PauseImage.Width := 288
PauseImage.Height := 33
PauseImage.Enabled := False
PauseImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'))
PauseImage.Parent := PauseButton
//
PauseImage.ReplaceColor:=$E2E2E2
PauseImage.ReplaceWithColor:=clBtnFace

PauseLabel := TLabel.Create(WizardForm)
PauseLabel.Width := PauseButton.Width
PauseLabel.Height := PauseButton.Height
PauseLabel.Autosize := False
PauseLabel.Transparent := True
PauseLabel.OnClick := @PauseButtonOnClick
PauseLabel.OnMouseDown := @PauseMouseDown
PauseLabel.OnMouseUp := @PauseMouseUp
PauseLabel.OnMouseMove := @PauseMouseMove
PauseLabel.Parent := PauseButton

StopButton := TPanel.Create(WizardForm)
StopButton.Left := 82
StopButton.Top := 320
StopButton.Width := 32
StopButton.Height := 33
StopButton.Cursor := crHand
StopButton.ShowHint := True
StopButton.Hint := 'Остановить музыку'
StopButton.OnClick := @StopButtonOnClick
StopButton.Parent := WizardForm

StopImage := TBitmapImage.Create(WizardForm)
StopImage.Left := -64
StopImage.Top := 0
StopImage.Width := 288
StopImage.Height := 33
StopImage.Enabled := False
StopImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\MusicButton.bmp'))
StopImage.Parent := StopButton
//
StopImage.ReplaceColor:=$E2E2E2
StopImage.ReplaceWithColor:=clBtnFace

StopLabel := TLabel.Create(WizardForm)
StopLabel.Width := StopButton.Width
StopLabel.Height := StopButton.Height
StopLabel.Autosize := False
StopLabel.Transparent := True
StopLabel.OnClick := @StopButtonOnClick
StopLabel.OnMouseDown := @StopMouseDown
StopLabel.OnMouseUp := @StopMouseUp
StopLabel.OnMouseMove := @StopMouseMove
StopLabel.Parent := StopButton

MouseSiteLabel:=TLabel.Create(WizardForm)
MouseSiteLabel.Width:=WizardForm.Width
MouseSiteLabel.Height:=WizardForm.Height
MouseSiteLabel.Autosize:=False
MouseSiteLabel.Transparent:=True
MouseSiteLabel.OnMouseMove:= @SiteLabelMouseMove2
MouseSiteLabel.Parent:=WizardForm

SiteLabel:=TLabel.Create(WizardForm)
SiteLabel.Left:=200
SiteLabel.Top:=330
SiteLabel.Cursor:=crHand
SiteLabel.Font.Color:=clBlue
SiteLabel.Caption:='Forum Ru-Board'
SiteLabel.OnClick:=@SiteLabelOnClick
SiteLabel.OnMouseDown:=@SiteLabelMouseDown
SiteLabel.OnMouseUp:=@SiteLabelMouseUp
SiteLabel.OnMouseMove:=@SiteLabelMouseMove
SiteLabel.Parent:=WizardForm
end;

procedure DeinitializeSetup();
begin
BASS_Stop();
BASS_Free();
end;
В этом скрипте музыка с кнопками управления на которых лежат текстуры и я прилепил кликабельную ссылку. И теперь когда убираешь курсор мыши с муз. кнопки, кнопка не меняет текстуру на первоначальную, а остаётся как при наведении. По-моему всё дело в MouseSiteLabel:=TLabel.Create(WizardForm)
MouseSiteLabel.Width:=WizardForm.Width
MouseSiteLabel.Height:=WizardForm.Height
MouseSiteLabel.Autosize:=False
MouseSiteLabel.Transparent:=True
MouseSiteLabel.OnMouseMove:= @SiteLabelMouseMove2
MouseSiteLabel.Parent:=WizardForm
или в

MouseLabel := TLabel.Create(WizardForm)
MouseLabel.Width := WizardForm.Width
MouseLabel.Height := WizardForm.Height
MouseLabel.Autosize := False
MouseLabel.Transparent := True
MouseLabel.OnMouseMove := @MouseMove
MouseLabel.Parent := WizardForm

Но я не могу понять, почему они не могут дружить друг с другом?

GolD18
16-04-2013, 13:57
Помогите еще раз) С черным инсталлом стала сливаться верхняя надпись. Где изменить у нее цвет или сделать чтобы она была видна?

[Code]
const
dURL = 2;
Color = clblack;

var
URLLabel, URLLabelShadow: TLabel;
ResultCode: Integer;

procedure URLLabelClick(Sender: TObject);
begin
ShellExec('open', 'http://Сайт/', '', '', SW_SHOWNORMAL, ewNoWait, ResultCode);
end;

procedure URLLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
URLLabel.Top := URLLabel.Top + dURL;
URLLabel.Left := URLLabel.Left + dURL;
URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];
URLLabel.Font.Color := clBlue;
URLLabelShadow.Hide;
end;

procedure URLLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
URLLabel.Top := URLLabel.Top - dURL;
URLLabel.Left := URLLabel.Left - dURL;
URLLabel.Font.Style := URLLabel.Font.Style - [fsUnderline];
URLLabel.Font.Color := clMaroon;
URLLabelShadow.Show;
end;

procedure InitializeWizard();
begin
WizardForm.Font.Color := clWhite;
WizardForm.Color := Color;
WizardForm.WelcomePage.Color := Color;
WizardForm.InnerPage.Color := Color;
WizardForm.FinishedPage.Color := Color;
WizardForm.LicensePage.Color := Color;
WizardForm.PasswordPage.Color := Color;
WizardForm.InfoBeforePage.Color := Color;
WizardForm.UserInfoPage.Color := Color;
WizardForm.SelectDirPage.Color := Color;
WizardForm.SelectComponentsPage.Color := Color;
WizardForm.SelectProgramGroupPage.Color := Color;
WizardForm.SelectTasksPage.Color := Color;
WizardForm.ReadyPage.Color := Color;
WizardForm.PreparingPage.Color := Color;
WizardForm.InstallingPage.Color := Color;
WizardForm.InfoAfterPage.Color := Color;
WizardForm.DirEdit.Color := Color;
WizardForm.DiskSpaceLabel.Color := Color;
WizardForm.DirEdit.Color := Color;
WizardForm.GroupEdit.Color := Color;
WizardForm.PasswordLabel.Color := Color;
WizardForm.PasswordEdit.Color := Color;
WizardForm.PasswordEditLabel.Color := Color;
WizardForm.ReadyMemo.Color := Color;
WizardForm.TypesCombo.Color := Color;
WizardForm.TypesCombo.ItemIndex := 0;
WizardForm.WelcomeLabel1.Color := Color;
WizardForm.InfoBeforeClickLabel.Color := Color;
WizardForm.MainPanel.Color := Color;
WizardForm.PageNameLabel.Color := Color;
WizardForm.PageDescriptionLabel.Color := Color;
WizardForm.ReadyLabel.Color := Color;
WizardForm.FinishedLabel.Color := Color;
WizardForm.YesRadio.Color := Color;
WizardForm.NoRadio.Color := Color;
WizardForm.WelcomeLabel2.Color := Color;
WizardForm.LicenseLabel1.Color := Color;
WizardForm.InfoAfterClickLabel.Color := Color;
WizardForm.ComponentsList.Color := Color;
WizardForm.ComponentsDiskSpaceLabel.Color := Color;
WizardForm.BeveledLabel.Color := Color;
WizardForm.StatusLabel.Color := Color;
WizardForm.FilenameLabel.Color := Color;
WizardForm.SelectDirLabel.Color := Color;
WizardForm.SelectStartMenuFolderLabel.Color := Color;
WizardForm.SelectComponentsLabel.Color := Color;
WizardForm.SelectTasksLabel.Color := Color;
WizardForm.LicenseAcceptedRadio.Color := Color;
WizardForm.LicenseNotAcceptedRadio.Color := Color;
WizardForm.UserInfoNameLabel.Color := Color;
WizardForm.UserInfoNameEdit.Color := Color;
WizardForm.UserInfoOrgLabel.Color := Color;
WizardForm.UserInfoOrgEdit.Color := Color;
WizardForm.PreparingLabel.Color := Color;
WizardForm.FinishedHeadingLabel.Color := Color;
WizardForm.UserInfoSerialLabel.Color := Color;
WizardForm.UserInfoSerialEdit.Color := Color;
WizardForm.TasksList.Color := Color;
WizardForm.RunList.Color := Color;
WizardForm.SelectDirBrowseLabel.Color := Color;
WizardForm.SelectStartMenuFolderBrowseLabel.Color := Color;

WizardForm.NoIconsCheck.Width := ScaleY(16)

URLLabelShadow := TLabel.Create(nil);
with URLLabelShadow do
begin
Parent := WizardForm;
SetBounds(ScaleX(25), ScaleY(331), 0, 0);
AutoSize := True;
Transparent := True;
Font.Color := $969696;
Font.Height := -12;
Font.Style := Font.Style + [fsBold];
Caption := 'http://Сайт/';
end;

URLLabel := TLabel.Create(nil);
with URLLabel do
begin
Parent := WizardForm;
SetBounds(ScaleX(25) - dURL, ScaleY(331) - dURL, 0, 0);
AutoSize := True;
Transparent := True;
Cursor := crHand;
Font.Color := clMaroon;
Font.Height := -12;
Font.Style := Font.Style + [fsBold];
Caption := 'http://Сайт/';
BringToFront;
OnClick := @URLLabelClick;
OnMouseDown := @URLLabelMouseDown;
OnMouseUp := @URLLabelMouseUp;
end;

with TLabel.Create(nil) do
begin
Parent:= WizardForm.SelectProgramGroupPage;
SetBounds(WizardForm.NoIconsCheck.Left + 18, WizardForm.NoIconsCheck.Top + 2, 0, 0)
AutoSize:= True;
Transparent := True;
Font.Color := clWhite;
Caption := SetupMessage(msgNoProgramGroupCheck2);
end;
end;

vint56
16-04-2013, 14:37
GolD18
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[code]
const
dURL = 2;
Color = clblack;

var
URLLabel, URLLabelShadow: TLabel;
ResultCode: Integer;

procedure URLLabelClick(Sender: TObject);
begin
ShellExec('open', 'http://forum.oszone.net/thread-257328-21.html', '', '', SW_SHOWNORMAL, ewNoWait, ResultCode);
end;

procedure URLLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
URLLabel.Top := URLLabel.Top + dURL;
URLLabel.Left := URLLabel.Left + dURL;
URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];
URLLabel.Font.Color := clBlue;
URLLabelShadow.Hide;
end;

procedure URLLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
URLLabel.Top := URLLabel.Top - dURL;
URLLabel.Left := URLLabel.Left - dURL;
URLLabel.Font.Style := URLLabel.Font.Style - [fsUnderline];
URLLabel.Font.Color := clMaroon;
URLLabelShadow.Show;
end;

procedure InitializeWizard();
begin
WizardForm.Font.Color := clWhite;
WizardForm.Color := Color;
WizardForm.WelcomePage.Color := Color;
WizardForm.InnerPage.Color := Color;
WizardForm.FinishedPage.Color := Color;
WizardForm.LicensePage.Color := Color;
WizardForm.PasswordPage.Color := Color;
WizardForm.InfoBeforePage.Color := Color;
WizardForm.UserInfoPage.Color := Color;
WizardForm.SelectDirPage.Color := Color;
WizardForm.SelectComponentsPage.Color := Color;
WizardForm.SelectProgramGroupPage.Color := Color;
WizardForm.SelectTasksPage.Color := Color;
WizardForm.ReadyPage.Color := Color;
WizardForm.PreparingPage.Color := Color;
WizardForm.InstallingPage.Color := Color;
WizardForm.InfoAfterPage.Color := Color;
WizardForm.DirEdit.Color := Color;
WizardForm.DiskSpaceLabel.Color := Color;
WizardForm.DirEdit.Color := Color;
WizardForm.GroupEdit.Color := Color;
WizardForm.PasswordLabel.Color := Color;
WizardForm.PasswordEdit.Color := Color;
WizardForm.PasswordEditLabel.Color := Color;
WizardForm.ReadyMemo.Color := Color;
WizardForm.TypesCombo.Color := Color;
WizardForm.TypesCombo.ItemIndex := 0;
WizardForm.WelcomeLabel1.Color := Color;
WizardForm.InfoBeforeClickLabel.Color := Color;
WizardForm.MainPanel.Color := Color;
WizardForm.PageNameLabel.Color := Color;
WizardForm.PageDescriptionLabel.Color := Color;
WizardForm.ReadyLabel.Color := Color;
WizardForm.FinishedLabel.Color := Color;
WizardForm.YesRadio.Color := Color;
WizardForm.NoRadio.Color := Color;
WizardForm.WelcomeLabel2.Color := Color;
WizardForm.LicenseLabel1.Color := Color;
WizardForm.InfoAfterClickLabel.Color := Color;
WizardForm.ComponentsList.Color := Color;
WizardForm.ComponentsDiskSpaceLabel.Color := Color;
WizardForm.BeveledLabel.Color := Color;
WizardForm.StatusLabel.Color := Color;
WizardForm.FilenameLabel.Color := Color;
WizardForm.SelectDirLabel.Color := Color;
WizardForm.SelectStartMenuFolderLabel.Color := Color;
WizardForm.SelectComponentsLabel.Color := Color;
WizardForm.SelectTasksLabel.Color := Color;
WizardForm.LicenseAcceptedRadio.Color := Color;
WizardForm.LicenseNotAcceptedRadio.Color := Color;
WizardForm.UserInfoNameLabel.Color := Color;
WizardForm.UserInfoNameEdit.Color := Color;
WizardForm.UserInfoOrgLabel.Color := Color;
WizardForm.UserInfoOrgEdit.Color := Color;
WizardForm.PreparingLabel.Color := Color;
WizardForm.FinishedHeadingLabel.Color := Color;
WizardForm.UserInfoSerialLabel.Color := Color;
WizardForm.UserInfoSerialEdit.Color := Color;
WizardForm.TasksList.Color := Color;
WizardForm.RunList.Color := Color;
WizardForm.SelectDirBrowseLabel.Color := Color;
WizardForm.SelectStartMenuFolderBrowseLabel.Color := Color;

WizardForm.NoIconsCheck.Width := ScaleY(16)

URLLabelShadow := TLabel.Create(nil);
with URLLabelShadow do
begin
Parent := WizardForm.WelcomeLabel1;
SetBounds(ScaleX(25), ScaleY(25), 0, 0);
AutoSize := True;
Transparent := True;
Font.Color := $969696;
Font.Height := -12;
Font.Style := Font.Style + [fsBold];
Caption := 'http://forum.oszone.net';
end;

URLLabel := TLabel.Create(nil);
with URLLabel do
begin
Parent := WizardForm.WelcomeLabel1;
SetBounds(ScaleX(25) - dURL, ScaleY(25) - dURL, 0, 0);
AutoSize := True;
Transparent := True;
Cursor := crHand;
Font.Color := clMaroon;
Font.Height := -12;
Font.Style := Font.Style + [fsBold];
Caption := 'http://forum.oszone.net';
BringToFront;
OnClick := @URLLabelClick;
OnMouseDown := @URLLabelMouseDown;
OnMouseUp := @URLLabelMouseUp;
end;

with TLabel.Create(nil) do
begin
Parent:= WizardForm.SelectProgramGroupPage;
SetBounds(WizardForm.NoIconsCheck.Left + 18, WizardForm.NoIconsCheck.Top + 2, 0, 0)
AutoSize:= True;
Transparent := True;
Font.Color := clWhite;
Caption := SetupMessage(msgNoProgramGroupCheck2);
end;
end;

Gnom_aka_Lexander
16-04-2013, 15:23
GolD18, моя вариация черного инсталла, на базе реализации модуля TransparentStatik от south:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[*Code]
const
bColor=clBlack; // Цвет фона
fColor=clWhite; // Цвет текста
rColor=clBtnFace;// Цвет цвет прозрачности у битмапов

procedure ColorChange(c:TWinControl);
var
i:integer;
wc:TWinControl;
begin
for i:=0 to c.ControlCount-1 do
begin
if c.Controls[i] is TGraphicControl then
begin
if TGraphicControl(c.Controls[i]) is TBevel then TBevel(c.Controls[i]).Height := 1;
if TGraphicControl(c.Controls[i]) is TBitmapImage then
begin
TBitmapImage(c.Controls[i]).BackColor := clNone;
TBitmapImage(c.Controls[i]).ReplaceColor := rColor;
TBitmapImage(c.Controls[i]).ReplaceWithColor := clNone;
end;
end;
if c.Controls[i] is TWinControl then
begin
wc:=TWinControl(c.Controls[i]);
if wc is TNewStaticText then TNewStaticText(c.Controls[i]).Font.Color := fColor;
if wc is TNewNotebookPage then TNewNotebookPage(c.Controls[i]).Color := bColor;
if wc is TPanel then TPanel(c.Controls[i]).Color := bColor;
if wc is TRichEditViewer then
begin
TRichEditViewer(c.Controls[i]).Color := bColor;
TRichEditViewer(c.Controls[i]).Font.Color := fColor;
end;
if wc is TMemo then
begin
TMemo(c.Controls[i]).Color := bColor;
TMemo(c.Controls[i]).Font.Color := fColor;
end;
if wc is TEdit then
begin
TEdit(c.Controls[i]).Color := bColor;
TEdit(c.Controls[i]).Font.Color := fColor;
end;
if wc is TNewEdit then
begin
TNewEdit(c.Controls[i]).Color := bColor;
TNewEdit(c.Controls[i]).Font.Color := fColor;
end;
if wc.ControlCount>0 then ColorChange(wc);
end;
end;
end;

procedure InitializeWizard();
begin
WizardForm.Color := bColor;
ColorChange(WizardForm);
end;

procedure InitializeUninstallProgressForm();
begin
UninstallProgressForm.Color := bColor;
ColorChange(UninstallProgressForm);
end;
Точно таким-же способом я делал замену статиков на прозрачные лейблы. только нужно учитывать, что некоторые статики динамичны и поэтому лейблы для них нужно создавать именованные отдельно.

ilya_klimovich
16-04-2013, 16:46
В is done прописал

if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\data1.bin'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
в процессе установке игры, сразу пишет откат изменений и ничего не устанавливается, как исправить?

vint56
16-04-2013, 17:04
ilya_klimovich
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data1.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;

ilya_klimovich
16-04-2013, 17:06
вопрос о define records. чтобы было все норм, нужно сначала установить игру с выкл define records, чтобы он считал файлы, а потом включить и снова установить. я прав?

vint56
16-04-2013, 17:23
ilya_klimovich почти после установки тебе на раскаментировать records и заново откомпилировать проект чтобы файл records добавился в setup

ilya_klimovich
16-04-2013, 18:35
после того как прописываю if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data1.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;выбивается ошибка при компиляции unknown identifier" notPCFonFLY"

Nightwishh
16-04-2013, 20:58
ilya_klimovich, Попробуй такif not ISArcExtract ( 0, 0, ExpandConstant('{src}\data1.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), False {PCFonFLY}) then break;

ilya_klimovich
16-04-2013, 21:06
Nightwishh
все равно ошибка при компиляции, чуть другая но все равно есть

saurn
16-04-2013, 21:24
unknown identifier" notPCFonFLY" »
В скрипте отсутствуют данные константы:
const
PCFonFLY = true;
notPCFonFLY = false;
Отсюда и ругань на неизвестный идентификатор. А вообще, когда обращаетесь с проблемой, прикрепляйте к сообщению скрипт(под спойлером), а то получается игра в угадайку.

habib2302, ну серьёзно, вы это можете сделать и сами
#define Components

#ifdef Components
[Components]
Name: AIDA641; Description: {#AIDA641}; Flags: exclusive; ExtraDiskSpaceRequired: 70000000;
Name: AIDA642; Description: {#AIDA642}; Flags: exclusive; ExtraDiskSpaceRequired: 70000000;
Name: AIDA643; Description: {#AIDA643}; Flags: exclusive; ExtraDiskSpaceRequired: 70000000;
#endif

[code]
...
Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
TmpValue:=1;
if IsComponentSelected('AIDA641') then Comps1:=Comps1+TmpValue; //компонент 1
TmpValue:=TmpValue*2;
if IsComponentSelected('AIDA642') then Comps1:=Comps1+TmpValue; //компонент 2
TmpValue:=TmpValue*2;
if IsComponentSelected('AIDA643') then Comps1:=Comps1+TmpValue; //компонент 3
#endif

/////////////////////////////////////////////////////////////////////////////////////

if not ISArcExtract ( 1, 0, ExpandConstant('{src}\AIDA641.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
if not ISArcExtract ( 2, 0, ExpandConstant('{src}\AIDA642.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
if not ISArcExtract ( 3, 0, ExpandConstant('{src}\AIDA643.arc'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
...

ilya_klimovich
16-04-2013, 21:33
isdone[CustomMessages]
rus.ArcTitle=Распаковка игровых архивов...
rus.ExtractedInfo=Распаковано %1 Мб из %2 Мб
rus.ArcInfo=Архив: %1 из %2
rus.AllProgress=Прогресс распаковки архивов:
rus.Extracting=Распаковывается: %1
rus.Taskbar=%1%%, ждите %2
rus.ArcRemains=Осталось ждать %1
rus.LongTime=вечно
rus.Ending=завершение
rus.ArcFail=Распаковка архивов не завершена!
rus.ArcBreak=Распаковка архивов прервана!
rus.ArcFinishedHeading=Установка игры {#AppName} не завершена
rus.ArcError=Установка игры {#MyAppName} не была завершена.
rus.ArcTrouble=Пожалуйста, устраните проблему и запустите установку снова.
rus.ArcBroken=Возможно, архив %1 повреждён или недостаточно места на диске назначения.
rus.ExtractedFile=Распаковывается файл:
rus.CancelButton=Отменить распаковку
rus.ArcTitleBack=Откат изменений...
rus.ISDoneError=Ошибка распаковки!

[UninstallDelete]
Type: filesandordirs; Name: {app}

[Code]
var
LabelPct, LabelCurrFileName, LabelStatusRollback, LabelStatus: TLabel;
ISDoneProgressBar: TNewProgressBar;
CancelUnpackingBtn: HWND;
OveralPct,Cancel, n:integer;
CallBack:longword;
MyError:boolean;
pr:Extended;
msgError: string;
ISDonePB: TImgPB;

type
TCallback = function (Pct: integer;CurrentFile:string): longword;

TMessage = record hWnd: HWND; msg, wParam: Word; lParam: LongWord; Time: TFileTime; pt: TPoint; end;

function PeekMessage(var lpMsg: TMessage; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall';
function TranslateMessage(const lpMsg: TMessage): BOOL; external 'TranslateMessage@user32.dll stdcall';
function DispatchMessage(const lpMsg: TMessage): Longint; external 'DispatchMessageA@user32.dll stdcall';
function WrapMyCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:innocallback.dll stdcall';
function ISArcExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutPath: string; DeleteInFile:boolean; callback: longword; Password, CfgFile, WorkPath: String):BOOL; external 'ISArcExtract@files:ISDone.dll stdcall';
function IS7ZipExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutPath: string; DeleteInFile:boolean; callback: longword; Password: String):BOOL; external 'IS7zipExtract@files:ISDone.dll stdcall';
function ISRarExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutPath: string; DeleteInFile:boolean; callback: longword; Password: String):BOOL; external 'ISRarExtract@files:ISDone.dll stdcall';
function ISPrecompExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutFile: string; DeleteInFile:boolean; callback: longword):BOOL; external 'ISPrecompExtract@files:ISDone.dll stdcall';
function ISSRepExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutFile, IdxFile: string; DeleteInFile:boolean; callback: longword):BOOL; external 'ISSrepExtract@files:ISDone.dll stdcall';
function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:string):BOOL; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall';
function StartRecord(RecordFileName:string; AllComponents:longword):BOOL; external 'StartRecord@files:ISDone.dll stdcall';
function CheckPoint(CurComponent:Integer):BOOL; external 'CheckPoint@files:ISDone.dll stdcall';
function StopRecord:BOOL; external 'StopRecord@files:ISDone.dll stdcall';
function GetWindowLong(hWnd, nIndex: Integer): Longint; external 'GetWindowLongA@user32 stdcall delayload';
function SetWindowText(hWnd: Longint; lpString: AnsiString): Longint; external 'SetWindowTextA@user32 stdcall delayload';
function cm(Message: String): String; Begin Result:= ExpandConstant('{cm:'+ Message +'}') End;

Procedure SetTaskBarTitle(Title: AnsiString); var h: Integer;
begin
h:= GetWindowLong(MainForm.Handle, -8); if h <> 0 then SetWindowText(h, Title);
end;

procedure AppProcessMessage;
var
Msg: TMessage;
begin
while PeekMessage(Msg, 0, 0, 0, 1) do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;

function ProgressCallback(Pct: integer; CurrentFile:string): longword;
begin
ImgPBSetPosition(ISDonePB,Pct/10);
LabelPct.Caption :=ExpandConstant('{cm:AllProgress} ')+IntToStr(Pct div 10)+'.'+IntToStr(Pct mod 10)+'%';
LabelCurrFileName.Caption :=ExpandConstant('{app}\')+CurrentFile;
AppProcessMessage;
Result := Cancel;
ImgApplyChanges(WizardForm.Handle);
end;

procedure Error;
var n:integer;
begin
Cancel:= -1;
Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n);
end;

procedure CreateISDoneComponents;
begin
LabelPct := TLabel.Create(WizardForm);
with LabelPct do begin
AutoSize:=False;
SetBounds(ScaleX(-70), ScaleY(170), ScaleX(638), ScaleY(17));
Alignment := taCenter;
Transparent:=True;
Font.Name:= 'Georgia'
Font.Size:= 8;
Font.Color:=$FFFFFF;
Font.Style:=[fsItalic];
Parent := WizardForm;
end;
LabelCurrFileName := TLabel.Create(WizardForm);
with LabelCurrFileName do begin
AutoSize:=False;
SetBounds(ScaleX(41), ScaleY(105), ScaleX(638), ScaleY(17));
Transparent:=True;
Font.Name:= 'Georgia'
Font.Size:= 8;
Font.Color:=$FFFFFF;
Font.Style:=[fsItalic];
Caption:= '';
Parent := WizardForm;
Hide;
end;
LabelStatusRollback := TLabel.Create(WizardForm);
with LabelStatusRollback do begin
Parent := WizardForm;
AutoSize := False;
SetBounds(ScaleX(41), ScaleY(80), ScaleX(400), ScaleY(17));
Transparent:=True;
Font.Name:= 'Georgia';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold,fsItalic];
Caption := cm('ArcTitleBack');
end;
LabelStatus := TLabel.Create(WizardForm);
with LabelStatus do begin
Parent := WizardForm;
AutoSize := False;
SetBounds(ScaleX(41), ScaleY(80), ScaleX(400), ScaleY(17));
Transparent:=True;
Font.Name:= 'Georgia';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold,fsItalic];
Caption := cm('ArcTitle');
end;
end;

procedure CancelUnpackingOnEnter(hBtn:HWND);
begin
sndPlaySound(ExpandConstant('{tmp}\WFEnter.wav'),$0001);
end;

procedure CancelUnpackingOnClick(hBtn:HWND);
begin
sndPlaySound(ExpandConstant('{tmp}\Click.wav'),$0001);
if MsgBox( SetupMessage( msgExitSetupMessage ), mbConfirmation, MB_YESNO ) = IDYES then Cancel:= 1;
end;

Procedure UnpackingISDoneFinished(CurPageID: Integer);
begin
if (CurPageID = wpFinished) and (Cancel <> 0) then
begin
WizardForm.Caption:= ExpandConstant('{cm:ISDoneError}');
SetTaskBarTitle(SetupMessage(msgErrorTitle));
FinishedHeadingLabel.Caption:=cm('ArcFinishedHeading');
FinishedHeadingLabel.Font.Color:= $0000C0; // red (красный)
FinishedLabel.Caption:= msgError + ExpandConstant(' {cm:ArcTrouble}') + #10#13#10#13+ExpandConstant('{cm:FinishedLabel2}');
FinishedLabel.Font.Color:= $0000C0; // red (красный)
end;
CancelUnpackingBtn:=BtnCreate(WizardForm.Handle,408,297,80,80,ExpandConstant('{tmp}\button.png'),10, False);
BtnSetEvent(CancelUnpackingBtn,BtnMouseEnterEventID,WrapBtnCallback(@CancelUnpackingOnEnter,1));
BtnSetEvent(CancelUnpackingBtn,BtnClickEventID,WrapBtnCallback(@CancelUnpackingOnClick,1));
BtnSetFont(CancelUnpackingBtn,WFButtonFont.Handle);
BtnSetFontColor(CancelUnpackingBtn,$ffffff,$000000,$ffffff,$B6B6B6);
BtnSetCursor(CancelUnpackingBtn,GetSysCursorHandle(32649));
BtnSetVisibility(CancelUnpackingBtn, False);
end;

procedure UnpackingISDone(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
if MyError then Error;
if CurStep = ssInstall then begin
ISDonePB:=ImgPBCreate(WizardForm.Handle, ExpandConstant('{tmp}\ProgressBackground.png'), ExpandConstant('{tmp}\ProgressImg.png'),ScaleX(41),ScaleY(130),ScaleX(330),WizardForm.ProgressGauge. Height);
NewPB:=ImgPBCreate(WizardForm.Handle, ExpandConstant('{tmp}\ProgressBackground2.png'), ExpandConstant('{tmp}\ProgressImg.png'),376,130,80,WizardForm.ProgressGauge.Height);
ImgApplyChanges(WizardForm.Handle);
PBOldProc:=SetWindowLong(WizardForm.ProgressGauge.Handle,-4,CallBackProc(@PBProc,4));
LabelStatus.Show;
BtnSetText(CancelUnpackingBtn,WizardForm.CancelButton.Caption);
BtnSetVisibility(CancelUnpackingBtn, True);
BtnSetVisibility(hCancelBtn, False);
LabelPct.Show;
LabelCurrFileName.Show;
ProgressInfoLabel.Hide;
CallBack:=WrapMyCallback(@ProgressCallback,2);
Cancel:=0;
OveralPct:=0;

// Распаковка всех необходимых файлов в папку {tmp}. Это необходимо для того, чтобы
//выполнять установку в момент ssInstall, и секция [Run] выполнялась после установки.
#ifdef records
ExtractTemporaryFile('records.inf');
#endif
#ifdef precomp04
ExtractTemporaryFile('packjpg_dll.dll');
ExtractTemporaryFile('RTconsole.exe');
ExtractTemporaryFile('precomp04.exe');
#endif
#ifdef precomp038
ExtractTemporaryFile('packjpg_dll.dll');
ExtractTemporaryFile('RTconsole.exe');
ExtractTemporaryFile('precomp038.exe');
ExtractTemporaryFile('zlib1.dll');
#endif
#ifdef unrar
ExtractTemporaryFile('Unrar.dll');
#endif

StartRecord(ExpandConstant('{src}\records.inf'),0);
repeat
MyError:=true;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data1.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), False {PCFonFLY}) then break;
//if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\data1.bin'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
//if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\data2.bin'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
//if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\data3.bin'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
//if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\data4.bin'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
//if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\data5.bin'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
//if not ISSRepExtract ( 0, OveralPct, 0, ExpandConstant('{app}\White Gold.srp'), ExpandConstant('{app}\White Gold.7z'), '', true, CallBack ) then break;
//if not ISPrecompExtract( 0, OveralPct, 0, ExpandConstant('{app}\NFS.pcf'), ExpandConstant('{app}\NFS.7z'), true, CallBack ) then break;
//if not IS7ZipExtract ( 0, OveralPct, 0, ExpandConstant('{app}\White Gold.7z'), ExpandConstant('{app}'), true, CallBack, '' ) then break;
// if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW2_Disk2.arc' ) then break;
// if not ISArcExtract ( 1, OveralPct, 0, ExpandConstant('{src}\rustext.arc'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
// if not ISArcExtract ( 2, OveralPct, 0, ExpandConstant('{src}\engtext.arc'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
// if not ISArcExtract ( 3, OveralPct, 0, ExpandConstant('{src}\rusvoice.arc'),ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
// if not ISArcExtract ( 4, OveralPct, 0, ExpandConstant('{src}\engvoice.arc'),ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
MyError:=false;
until true;
StopRecord;
BtnSetVisibility(CancelUnpackingBtn, False);
BtnSetVisibility(hCancelBtn, True);
BtnSetEnabled(hCancelBtn, False);
LabelStatus.Hide;
LabelPct.Hide;
LabelCurrFileName.Hide;
ProgressInfoLabel.Show;
end;
end;

inno[Code]
const
PCFonFLY = true;
notPCFonFLY = false;
BASS_ACTIVE_PAUSED = 3;
BASS_SAMPLE_LOOP = 4;
WFDiskTimerID = 1;
WFSysReqTimerID = 2;
ARTitleTimerID = 2;
в const прописываю и все равно ошибка

vint56
16-04-2013, 22:07
ilya_klimovich а версия isdone какая 5 или 6

ilya_klimovich
16-04-2013, 22:11
а что такое?? просто я не знаю какая версия

vint56
16-04-2013, 22:48
ilya_klimovich у тебя версия ISDone0.4.2.5
if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\Data-A.bin'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;

ilya_klimovich
16-04-2013, 23:32
vint56
но когда я прописываю так if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\Data-A.bin'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
то у меня сразу в процессе установки пишет откат изменений, и ничего не устанавливается

vint56
17-04-2013, 00:00
ilya_klimovich либо метод сжатия не известен либо возле setup есть еще один файл с расшерением .bin но родной от inno setup вот по этому что не может распаковать архив идёт откат изменений

ilya_klimovich
17-04-2013, 00:23
блин ничего не помогает, помогите кто)

habib2302
17-04-2013, 01:22
saurn, выдает ошибку
http://img35.imageshack.us/img35/6981/thumbqt.png (http://img571.imageshack.us/img571/417/snagit00011704201302032.png)




© OSzone.net 2001-2012