PDA

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


Страниц : 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

tem000
21-02-2009, 13:42
Serega_, ну ты крут!!! РЕСПЕКТ :teeth: :teeth: :teeth:

de_MAX
23-02-2009, 14:50
Serega_, а есть возможность добавить в скрипт, чтоб и во время установки тоже была картинка (возможно смещение прогрессбара вниз и показ слайд-шоу в окне инсталлятора)?

Serega
23-02-2009, 16:05
чтоб и во время установки тоже была картинка (возможно смещение прогрессбара вниз и показ слайд-шоу в окне инсталлятора)? »Вы имеете ввиду http://s41.radikal.ru/i092/0902/35/25f211c5344a.jpg http://s40.radikal.ru/i089/0902/1b/19ebb04b8e1b.jpg

То на сколько я понимаю, там картинка просто накладывается сверху мастера и прогресс бар ничто иное, как обычный .gif. Ну мне тяжело судить я не видел сам инсталлятор и могу делать только предположения...

de_MAX
23-02-2009, 16:23
Вы имеете ввиду
так? »
Именно так. Но насколько я знаю это именно прогрессбар установки. Где-то встречал подобный скрипт, но не могу найти.

Serega
23-02-2009, 16:45
de_MAX, не знаю, надо подумать...

de_MAX
26-02-2009, 12:09
Serega_, нашел нечто подобное. Там конечно много всего лишнего.

Code]
////////////////////////////////////////////////////
{Установка слайдшоу на окне инсталятора}
type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);

var
URLLabel: TNewStaticText;
TimerID: LongWord;
currTime: Integer;
SplashImage: TBitmapImage;

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

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
currTime := currTime + 1;
case currTime of
{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_2.bmp')) end;
2*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_3.bmp')) end;
3*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_4.bmp')) end;
4*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_5.bmp')) end;
5*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_6.bmp')) end;
6*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_7.bmp')) end;
7*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_8.bmp')) end;
8*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_9.bmp')) end;
9*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image_10.bmp'))end;
end;
if CurrTime = 9*{#TIME_FOR_VIEW} then CurrTime := -1;
end;
///////////////////////////////////////////////////
const
BASS_SAMPLE_LOOP = 4; //повторение

type
HSTREAM = DWORD; //тип звукового потока

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): HSTREAM;
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_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';

function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';
///////////////////////////////
var
state, soft: boolean;
Image1, Image2: TBitmapImage;
const
NeedSize = 6;
DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVEABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;

var
ListBox: TListBox;

function GetLogicalDrives: DWORD;
external 'GetLogicalDrives@kernel32.dll stdcall';

function GetDriveType(nDrive: string): Longint;
external 'GetDriveTypeA@kernel32.dll stdcall';

function GetVideoCardName(): PChar;
external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall';

function GetSoundCardName(): PChar;
external 'hwc_GetSoundCardName@files:get_hw_caps.dll stdcall';

function DetectHardware(): Integer;
external 'hwc_DetectHardware@files:get_hw_caps.dll stdcall';

function GetHardDriveFreeSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveFreeSpace@files:get_hw_caps.dll stdcall';

function GetHardDriveName(hdd: integer): PChar;
external 'hwc_GetHardDriveName@files:get_hw_caps.dll stdcall';

function GetHardDriveTotalSpace(hdd: integer): Integer;
external 'hwc_GetHardDriveTotalSpace@files:get_hw_caps.dll stdcall';

function GetHardDrivesCount(): Integer;
external 'hwc_GetHardDrivesCount@files:get_hw_caps.dll stdcall';

function GetSoundCards(): Integer;
external 'hwc_GetSoundCards@files:get_hw_caps.dll stdcall';

function GetSystemPage(): Integer;
external 'hwc_GetSystemPage@files:get_hw_caps.dll stdcall';

function GetSystemPhys(): Integer;
external 'hwc_GetSystemPhys@files:get_hw_caps.dll stdcall';

function GetVidMemLocal(): Integer;
external 'hwc_GetVidMemLocal@files:get_hw_caps.dll stdcall';

function GetVidMemNonLocal(): Integer;
external 'hwc_GetVidMemNonLocal@files:get_hw_caps.dll stdcall';

function GetVideoCardDev(): Integer;
external 'hwc_GetVideoCardDev@files:get_hw_caps.dll stdcall';

function GetVideoCardVen(): Integer;
external 'hwc_GetVideoCardVen@files:get_hw_caps.dll stdcall';

function DelSp(const s: string): string; // функция удаления пробелов в начале строки
var
c, i: integer;
stt, st, st1: string;
begin
c := 0;
st := s;

for i := 1 to Length(st) do
begin

stt := copy(st, i, 1);
if (stt = ' ') and (c >= 1) then
begin
st1 := st1;
c := c + 1;
end
else if (stt = ' ') and (c = 0) then
begin
c := c + 1;
st1 := st1 + stt;
end
else if (stt <> ' ') then
begin
c := 0;
st1 := st1 + stt;
end
end;

Result := st1;
end;

procedure URLLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://game-torrent.info', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;

procedure ListBoxOnClick(Sender: TObject);
var
NewLetter, OldString: string;
i: Integer;
begin
for i := 0 to ListBox.Items.Count - 1 do
begin
if ListBox.Selected[i] then
begin
NewLetter := Copy(ListBox.Items[i], 0, 1);
OldString := Copy(WizardForm.DirEdit.Text, 2, Length(WizardForm.DirEdit.Text));
WizardForm.DirEdit.Text := NewLetter + OldString;
end;
end;
end;


procedure InitializeWizard();
var
Name1: string;
i: Integer;
Text: TNewStaticText;
Path: string;
FreeMB, TotalMB: Cardinal;
drives: DWORD;

begin
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('my.mp3');
if BASS_Init(-1, 44100, 0, 0, 0) then
begin
BASS_Start();
Name1:=ExpandConstant('{tmp}\my.mp3');
i:=BASS_StreamCreateFile(FALSE, PChar(Name1), 0, 0, 4);
if i <> 0 then
begin
BASS_ChannelPlay(i, True);
end
end

///////////////////////////////////////////////////////////
{Изменение окна инсталятора с пермещение прогрессбара}
ExtractTemporaryFile('Image_1.bmp');
ExtractTemporaryFile('Image_2.bmp');
ExtractTemporaryFile('Image_3.bmp');
ExtractTemporaryFile('Image_4.bmp');
ExtractTemporaryFile('Image_5.bmp');
ExtractTemporaryFile('Image_6.bmp');
ExtractTemporaryFile('Image_7.bmp');
ExtractTemporaryFile('Image_8.bmp');
ExtractTemporaryFile('Image_9.bmp');
ExtractTemporaryFile('Image_10.bmp');

currTime := 0;

WizardForm.ProgressGauge.Parent := WizardForm;
WizardForm.ProgressGauge.Top := WizardForm.CancelButton.Top + 10;
WizardForm.ProgressGauge.Left := ScaleX(10);
WizardForm.ProgressGauge.Width := WizardForm.Width - WizardForm.CancelButton.Width - ScaleX(40);
WizardForm.ProgressGauge.Height := 12;
WizardForm.ProgressGauge.Hide;
WizardForm.StatusLabel.Parent := WizardForm;
WizardForm.StatusLabel.Left := ScaleX(10);
WizardForm.StatusLabel.Width := WizardForm.ProgressGauge.Width;
WizardForm.StatusLabel.Top := WizardForm.ProgressGauge.Top - ScaleY(18);
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_1.bmp'));
SplashImage.Hide;
///////////////////////////////////////////////////////////

URLLabel := TNewStaticText.Create(WizardForm);
URLLabel.Caption := 'Special for Game-Torrent.info';
URLLabel.Cursor := crHand;
URLLabel.OnClick := @URLLabelOnClick;
URLLabel.Parent := WizardForm;
{ Alter Font *after* setting Parent so the correct defaults are inherited first }
URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];
URLLabel.Font.Color := clBlue;
URLLabel.Top := 330;
URLLabel.Left := 30;

ExtractTemporaryFile('Welcome.bmp')
ExtractTemporaryFile('Finish.bmp')
WizardForm.WizardSmallBitmapImage.Top:=0
WizardForm.WizardSmallBitmapImage.Left:=0
WizardForm.WizardSmallBitmapImage.Width:=498
WizardForm.WizardSmallBitmapImage.Height:=58
WizardForm.PageNameLabel.Visible:=false
WizardForm.PageDescriptionLabel.Visible:=false
WizardForm.FinishedLabel.Visible:=False
WizardForm.FinishedHeadingLabel.Visible:=False
WizardForm.WelcomeLabel1.Visible:=False
WizardForm.WelcomeLabel2.Visible:=False
Text := TNewStaticText.Create(WizardForm);
Text.Top := 102;
Text.Width := 332;
Text.Height := 14;
Text.Caption := 'Список жестких дисков и свободного места';
Text.Parent := WizardForm.SelectDirPage;

ListBox := TListBox.Create(WizardForm);
ListBox.Top := 120;
ListBox.Width := 332;
ListBox.Height := ScaleY(90);
ListBox.Parent := WizardForm.SelectDirPage;
ListBox.OnClick := @ListBoxOnClick;
ListBox.Font.Name := 'Courier New';
ListBox.Font.Size := 10;
ListBox.Font.Style := [fsBold];
ListBox.Color := clBtnFace;

drives := GetLogicalDrives();
for i := 0 to 31 do
begin
if (drives and (1 shl i)) > 0 then
begin
Path := chr(ord('A') + i) + ':\';
if GetDriveType(Path) = DRIVE_FIXED then
begin
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB>1024 then ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + floatToStr(round(FreeMB/1024*100)/100) + ' GB')
else ListBox.Items.Add(Path + ' ' + IntToStr(round(FreeMB / TotalMB * 100)) + '% ' + IntToStr(FreeMB) + ' MB');
end;
end;
end;
end;


function NextButtonClick(CurPageID: Integer): Boolean;
var
Path,s,z: String;
FreeMB, TotalMB: Cardinal;
begin
Result:= True;
if CurPageID = wpSelectDir then
begin
Path:= ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB < (NeedSize*1024) then
begin
if FreeMB>1024 then
begin
s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ floatToStr(round(FreeMB/1024*100)/100) + ' GB!'
end
else s:='Для установки приложения необходимо '+ IntTostr(NeedSize)+ ' GB,'#13+'а на выбранном Вами диске доступно только '+ + IntToStr(FreeMB)+' MB';
MsgBox(s, mbCriticalError, MB_OK)
Result := False;
end;
end;
////////////////////////////////
begin
if CurPageID = wpUserInfo then
begin
Result:=true;
if not state
or not soft
then
begin
z:='Не все компоненты удовлетворяют требованиям игры.' #13+#13 'Вы действительно хотите продолжить установку?'
if MsgBox(z, mbInformation, MB_YESNO)=idNo
then Result:=false;
end
end
end
end;

procedure CurPageChanged(CurPageID: Integer);
var
Text: TNewStaticText;
Windows,WindowsName: TMemo;
Os,OS1,OS2,OS3,OS4,OS5,OS6,OS7,OS8,OS9,OS10,HARD: string; // строка с названием необходимой ОС
ProcessorName: string;
Processor, VideoCardPanel, AudioCardPanel, RAMPanel, PageFilePanel: TMemo;
ProcessorNamePanel, VideoCardNamePanel, AudioCardNamePanel, RAMTotalPanel, PageFileTotalPanel: TMemo;
ProcessorMHZ: Cardinal;
StaticText: TNewStaticText;
VidRam: integer;
pfunc: LongWord;
begin
/////////////////////////////////////////
{Здесь код показа на странице Инсталл измененного прогрессбара}
if (CurPageID = wpInstalling) then
begin
pfunc := WrapTimerProc(@OnTimer, 5);
TimerID := SetTimer(0, 0, 1000, pfunc);

WizardForm.InnerNotebook.Hide;
WizardForm.Bevel1.Hide;
WizardForm.MainPanel.Hide;
WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
URLLabel.Hide;

WizardForm.ProgressGauge.Show;
SplashImage.Show;
WizardForm.StatusLabel.Show;

WizardForm.CancelButton.Enabled :=True;
end
else
begin
URLLabel.Show;
WizardForm.ProgressGauge.Hide;
SplashImage.Hide;
WizardForm.StatusLabel.Hide;
//WizardForm.FilenameLabel.Hide;

if (CurPageID > wpInstalling) and (CurPageID < wpFinished) then
begin
WizardForm.InnerNotebook.Show;
WizardForm.Bevel1.Show;
WizardForm.MainPanel.Show;
WizardForm.PageNameLabel.Show;
WizardForm.PageDescriptionLabel.Show;
end;

end;
//////////////////////////////////////////////////////////////
If CurPageID=wpFinished then
begin
Image2:=TBitmapImage.Create(WizardForm)
with Image2 do begin
Left:=0
Top:=0
Width:=497
Height:=313
Parent:=WizardForm.FinishedPage
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Finish.bmp')
end
WizardForm.NextButton.Left:=380;
WizardForm.NextButton.Top:=325;
end
//////////////////////////////
If CurPageID=wpWelcome then
begin
If WizardForm.FindComponent('NextButton') is TButton
then
TButton(WizardForm.FindComponent('NextButton')).Caption:='Начать>';
end
begin
Image1:=TBitmapImage.Create(WizardForm)
with Image1 do begin
Left:=0
Top:=0
Width:=497
Height:=313
Parent:=WizardForm.WelcomePage
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Welcome.bmp')
end
end
if CurPageID=wpSelectTasks then
begin
If WizardForm.FindComponent('NextButton') is TButton
then
TButton(WizardForm.FindComponent('NextButton')).Caption:='Установка';
If WizardForm.FindComponent('CancelButton') is TButton
then
TButton(WizardForm.FindComponent('CancelButton')).Caption:='Выход';
end
if CurPageID = wpUserInfo then
begin
//подменяем сраницу информации о пользователе на информацию об ОС
wizardForm.UserInfoNameEdit.visible:=false;
wizardForm.UserInfoNameEdit.text:='Игрок'; //на случай, когда имя пользователя не указано в системе
wizardForm.UserInfoNameLabel.visible:=false;
wizardForm.UserInfoOrgLabel.visible:=false;
wizardForm.UserInfoOrgEdit.visible:=false;
wizardForm.UserInfoOrgEdit.text:='Группа игроков ';//на случай, когда организация не указано в системе
wizardForm.PageNameLabel.Caption := 'Аппаратное обеспечение и Операционная система';
wizardForm.PageDescriptionLabel.Caption := 'Программа установки обнаружила следующие необходимые компоненты и Операционную систему ';
RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', 'ProcessorNameString', ProcessorName);
RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', '~MHz', ProcessorMHZ);

OS:=' Microsoft Windows XP Service Pack 2';
OS10:=' Microsoft Windows XP Service Pack 3'; //строка является записью из реестра
OS1:=' Microsoft Windows 2000 Service Pack 4'; //строка является записью из реестра
OS2:=' Windows Vista (TM) Ultimate ';
OS3:=' Windows Vista (TM) Home Basic ';
OS4:=' Windows Vista (TM) Home Premium ';
OS5:=' Windows Vista (TM) Business ';
OS6:=' Windows Vista (TM) Ultimate Service Pack 1'
OS7:=' Windows Vista (TM) Home Basic Service Pack 1';
OS8:=' Windows Vista (TM) Home Premium Service Pack 1';
OS9:=' Windows Vista (TM) Business Service Pack 1';
HARD:='Все компоненты удовлетворяют требованиям игры.';
Windows := TMemo.Create(WizardForm);

StaticText := TNewStaticText.Create(TNewStaticText.Create(WizardForm));
with StaticText do begin
Left := 0;
Top := 52;
Width := 417;
Height := 14;
Caption := 'Все компоненты удовлетворяют требованиям игры.';
Parent := WizardForm.UserInfoPage;
StaticText.font.color:=clGreen;
end


with Windows do
begin
Text := ' Операц. система';
Parent := WizardForm.UserInfoPage;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(20);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end
Processor := TMemo.Create(WizardForm);
with Processor do begin
Text := ' Процессор';
Parent := WizardForm.UserInfoPage;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(77);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end
VideoCardPanel := TMemo.Create(WizardForm);
with VideoCardPanel do begin
Text := ' Видеоадаптер';
Parent := WizardForm.UserInfoPage;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(104);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := clBtnFace;
end
AudioCardPanel := TMemo.Create(WizardForm);
with AudioCardPanel do begin
Text := ' Звуковая карта';
Parent := WizardForm.UserInfoPage;
Color := clBtnFace;
Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(131);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;

end
RAMPanel := TMemo.Create(WizardForm);
with RAMPanel do begin
Text := ' ОЗУ';
Parent := WizardForm.UserInfoPage;
Color := clBtnFace;
Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(158);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.


ReadOnly := True;

end

PageFilePanel := TMemo.Create(WizardForm);
with PageFilePanel do begin
Text := ' Файл подкачки';
Parent := WizardForm.UserInfoPage;
Color := clBtnFace;
Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(185);
Width := ScaleX(106); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.


ReadOnly := True;

ProcessorNamePanel := TMemo.Create(WizardForm);
with ProcessorNamePanel do begin

Text := DelSP(ProcessorName) + ' ' + IntToStr(ProcessorMHZ) + 'MHz'; //новое обработанное значение строки
Parent := WizardForm.UserInfoPage;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(77);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;

if ProcessorMHZ < 2800 then
begin
ProcessorNamePanel.Color := $ccccff;
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
StaticText.font.color:=clRed;
end;

VideoCardNamePanel := TMemo.Create(WizardForm);
with VideoCardNamePanel do begin
Text := ' ' + GetVideoCardName + 'MB'; //+' ОЗУ-'+inttostr(round(GetVidMemLocal/1000000))+' МБ'
Parent := WizardForm.UserInfoPage;
VidrAM := GetVidMemLocal / 1000000;

if VidRam > 127 then
begin
if VidRam < 200 then text := text + ' ОЗУ - 128 МB'
else if VidRam < 300 then text := text + ' ОЗУ - 256 МB'
else if VidRam < 400 then text := text + ' ОЗУ - 384 МB'
else if VidRam > 500 then text := text + ' ОЗУ - 512 МB';
end;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(104);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;

if GetVidMemLocal < 255000000 then //128 MB
begin
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
StaticText.font.color:=clRed;
VideoCardNamePanel.Color := $ccccff;
end;


end
AudioCardNamePanel := TMemo.Create(WizardForm);
with AudioCardNamePanel do begin
Text := ' ' + GetSoundCardName;
Parent := WizardForm.UserInfoPage;
Color := $CCFFCC;
Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(131);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R

ReadOnly := True;

end
RAMTotalPanel := TMemo.Create(WizardForm);
with RAMTotalPanel do begin
Text := ' ' + IntToStr(GetSystemPhys + 1) + ' MB';
Parent := WizardForm.UserInfoPage;
Color := $CCFFCC;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(158);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
if GetSystemPhys + 1 < 1024 then
begin
RAMTotalPanel.Color := $ccccff;
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
StaticText.font.color:=clRed;
end;
end;

PageFileTotalPanel := TMemo.Create(WizardForm);
with PageFileTotalPanel do begin
Text := ' ' + IntToStr(GetSystemPage) + ' MB';
Parent := WizardForm.UserInfoPage;
Color := $CCFFCC;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(185);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
if GetSystemPage < 1247 then
begin
PageFileTotalPanel.Color := $ccccff;
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
StaticText.font.color:=clRed;
end;
end;


end

if ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')='' then
begin

WindowsName := TMemo.Create(WizardForm);
with WindowsName do begin
Text := ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,ProductName|}')+ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion,CSDVersion|}');
Parent := WizardForm.UserInfoPage;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(20);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;
Color := $CCFFCC;
end

end

end;

// Проверка Windows 9x
if ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')<>'' then
begin
WindowsName := TMemo.Create(WizardForm);
with WindowsName do begin
Text := ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProductName|}')+ExpandConstant(' {reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,CSDVersion|}');
Parent := WizardForm.UserInfoPage;
Color := $CCFFCC;
Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(20);
Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.

ReadOnly := True;

end

end;


if OS=(WindowsName.Text) then state:=true else
if OS2=(WindowsName.Text) then state:=true else
if OS3=(WindowsName.Text) then state:=true else
if OS4=(WindowsName.Text) then state:=true else
if OS5=(WindowsName.Text) then state:=true else
if OS6=(WindowsName.Text) then state:=true else
if OS7=(WindowsName.Text) then state:=true else
if OS8=(WindowsName.Text) then state:=true else
if OS9=(WindowsName.Text) then state:=true else
if OS10=(WindowsName.Text) then state:=true else
if OS1=(WindowsName.Text) then state:=true else state:=false;

////////////////////////////////////////////////////////////////////////
{условие проверки оборудования}
if HARD=(StaticText.Caption) then soft:=true else soft:=false;
////////////////////////////////////////////////////////////////////////
Text := TNewStaticText.Create(WizardForm);
with Text do begin
Left := 0;
Top := 0;
Width := 417;
Height := 14;
if state then
begin
Font.Color:=clGreen;
WindowsName.color:=$CCFFCC;
// SP_Num.color:=$CCFFCC;
Caption := 'Операционная система соответствует требованиям игры.';
end
else
begin
Font.Color:=clREd;
WindowsName.color:=clRed;

WindowsName.Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
WindowsName.Top := ScaleY(20);
WindowsName.Width := ScaleX(304); //оригинал S.T.A.L.K.E.R.
WindowsName.Height := ScaleY(22); //оригинал S.T.A.L.K.E.R.
WindowsName.ReadOnly := True;



Caption := 'Операционная система не соответствует требованиям игры.';
end
Parent := WizardForm.UserInfoPage;
end
Text := TNewStaticText.Create(TNewStaticText.Create(WizardForm));
with Text do begin
Left := 0;
Top := 220;
Width := 417;
Height := 14;
Caption := 'Когда Вы будете готовы продолжить установку, нажмите «Далее».';
Parent := WizardForm.UserInfoPage;
end

end;
end;

procedure DeInitializeSetup();
begin
KillTimer(0, TimerID);
BASS_Stop(); //нужно для остановки проигрывания
BASS_Free(); //нужно для быстрой выгрузки библиотеки вместе с муз. файлом
end;

tem000
26-02-2009, 15:36
Serega_, еще пару вопросов. При создании инсталятора с несколькими прогами как исправить создание ярлыков на рабочем столе, при указании создать ярлык для какой то одной http://pic.ipicture.ru/uploads/090226/TVIvWZVkWa.jpg (http://ipicture.ru/)
почему то на столе появляются ярлыки всех программ. И по поводу секции CODE, как добавить чекбоксы для запуска по выбору всех 3 программ. HELP PLIZZZZ!!! Скрипт приложил
[Setup]
AppName=Any FLV Player Pack
AppVerName=Any FLV Player Pack
AppPublisher=www.any-flv-player.com
DefaultDirName={pf}\Any FLV Player Pack
DefaultGroupName=Any FLV Player Pack
OutputBaseFilename=Any FLV Player Pack ©
AllowNoIcons=true
Compression=lzma
SolidCompression=true
VersionInfoVersion=1.1.3.1
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=embedded\WizardSmallImage.bmp
SetupIconFile=C:\Documents and Settings\Пользователь\Рабочий стол\Any FLV Player Pack\embedded\Install.ico
UninstallDisplayIcon={app}\Uninstall\unins000.exe
UninstallFilesDir={app}\Uninstall

[Files]
;Any FLV Player
Source: "C:\Documents and Settings\Пользователь\Рабочий стол\Any FLV Player Pack\{app}\Any FLV Player 1.1.3.1\*"; DestDir: "{app}\Any FLV Player 1.1.3.1"; Components: Any_FLV_Player; MinVersion: 4.1,4.0; Flags: ignoreversion recursesubdirs createallsubdirs
;Any Video Converter Professional
Source: "C:\Documents and Settings\Пользователь\Рабочий стол\Any FLV Player Pack\{app}\Any Video Converter Pro 2.7.1\*"; DestDir: "{app}\Any Video Converter Pro 2.7.1"; Components: Any_Video_Converter; MinVersion: 4.1,4.0; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{userappdata}\Any Video Converter Professional\profiles_v2.xml"; DestDir: "{userappdata}\Any Video Converter Professional"; Flags: ignoreversion
;Any DVD Converter Professional
Source: "C:\Documents and Settings\Пользователь\Рабочий стол\Any FLV Player Pack\{app}\Any DVD Converter Pro 3.7.1.0\*"; DestDir: "{app}\Any DVD Converter Pro 3.7.1.0"; Components: Any_DVD_Converter; MinVersion: 4.1,4.0; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{userappdata}\Any DVD Converter Professional\profiles_v2.xml"; DestDir: "{userappdata}\Any DVD Converter Professional"; Flags: ignoreversion

[Registry]
;Any FLV Player
Root: HKCR; SubKey: Applications\FlvPlayer.exe\shell\open\command; ValueType: string; ValueName: ; ValueData: """C:\Program Files\Any FLV Player Pack\Any FLV Player 1.1.3.1\FlvPlayer.exe"" ""%1"""
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.flv; ValueType: string; ValueName: Application; ValueData: FlvPlayer.exe; Tasks: fileassoc
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.flv\OpenWithList; ValueType: string; ValueName: a; ValueData: FlvPlayer.exe; Tasks: fileassoc
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.flv\OpenWithProgids; ValueType: string; ValueName: flv_auto_file; ValueData: hex(0):; Tasks: fileassoc
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.flv\OpenWithProgids; ValueType: string; ValueName: Winamp.File.FLV; ValueData: hex(0):; Tasks: fileassoc
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.flv\OpenWithProgids; ValueType: string; ValueName: SWF.max.flv; ValueData: hex(0):; Tasks: fileassoc
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.flv\OpenWithProgids; ValueType: string; ValueName: Flash.VideoFile; ValueData: hex(0):; Tasks: fileassoc
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: AutoPlay; ValueData: $00000001
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: AutoRepeat; ValueData: $00000001
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: ShowTitle; ValueData: $00000001
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: ShowTime; ValueData: $00000001
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: nControlPanelPosition; ValueData: $00000000
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: nControlPanelDisplay; ValueData: $00000001
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: colorControlPanel; ValueData: $00141414
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: colorButton; ValueData: $002525da
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: colorTime1; ValueData: $00ffffff
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: colorSlide; ValueData: $00f0f0f0
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: colorBufferSlide; ValueData: $00000000
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: colorBKSlide; ValueData: $00333333
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: CopyVideoFile; ValueData: $00000001
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: nBufferTime; ValueData: $00000005
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: nControlBarStyle; ValueData: $00000000
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: string; ValueName: language; ValueData: auto
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: string; ValueName: languageIni; ValueData: lang_rus.ini
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: languageAuto; ValueData: $00000000
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: nSizeRatio; ValueData: $00000001
;Any Video Converter Professional
Root: HKCU; Subkey: "Software\Any Video Converter Professional"; Flags: uninsdeletekey
Root: HKCU; Subkey: "Software\Any Video Converter Professional\Setting\Output"; ValueName: "UseTitleAsFileName"; ValueType: Dword; ValueData: "$1";
Root: HKCU; Subkey: "Software\Any Video Converter Professional\Setting\Output"; ValueName: "Video Aspect"; ValueType: String; ValueData: "4/3";
Root: HKCU; Subkey: "Software\Any Video Converter Professional\Setting\Output"; ValueName: "RetryTimes"; ValueType: Dword; ValueData: "$5";
;Any DVD Converter Professional
Root: HKCU; Subkey: "Software\Any DVD Converter Professional"; Flags: uninsdeletekey
Root: HKCU; Subkey: "Software\Any DVD Converter Professional\Setting\Output"; ValueName: "UseTitleAsFileName"; ValueType: Dword; ValueData: "$1";
Root: HKCU; Subkey: "Software\Any DVD Converter Professional\Setting\Output"; ValueName: "RetryTimes"; ValueType: Dword; ValueData: "$5";

[Run]
;Any FLV Player
;Filename: {app}\Any FLV Player 1.1.3.1\FlvPlayer.exe; Description: Запустить Any Flv Player; Flags: nowait postinstall skipifsilent unchecked
;Any Video Converter Professional
;Filename: {app}\Any Video Converter Pro 2.7.1\VideoConvPro.exe; Description: Запустить Any Video Converter Pro; Flags: nowait postinstall skipifsilent unchecked

[Icons]
;Any FLV Player
Name: {group}\Any Flv Player; Filename: {app}\Any FLV Player 1.1.3.1\FlvPlayer.exe
Name: {commondesktop}\Any Flv Player; Filename: {app}\Any FLV Player 1.1.3.1\FlvPlayer.exe; Tasks: desktopicon
;Any Video Converter Professional
Name: {group}\Any Video Converter Pro; Filename: {app}\Any Video Converter Pro 2.7.1\VideoConvPro.exe
Name: {commondesktop}\Any Video Converter Pro; Filename: {app}\Any Video Converter Pro 2.7.1\VideoConvPro.exe; Tasks: desktopicon
;Any DVD Converter Professional
Name: {group}\Any DVD Converter Pro; Filename: {app}\Any DVD Converter Pro 3.7.1.0\DVDConvPro.exe
Name: {commondesktop}\Any DVD Converter Pro; Filename: {app}\Any DVD Converter Pro 3.7.1.0\DVDConvPro.exe; Tasks: desktopicon

[Tasks]
Name: desktopicon; Description: Создать ярлык Any Flv Player на рабочем столе; GroupDescription: Дополнительные ярлыки:; Flags: unchecked
Name: desktopicon; Description: Создать ярлык Any Video Converter Pro на рабочем столе; GroupDescription: Дополнительные ярлыки:; Flags: unchecked
Name: desktopicon; Description: Создать ярлык Any DVD Converter Pro на рабочем столе; GroupDescription: Дополнительные ярлыки:; Flags: unchecked

Name: fileassoc; Description: Связать Any FLV Player, с файлами имеющими расширение .flv; MinVersion: 4.1,4.0; Flags: unchecked

[Components]
Name: Any_FLV_Player; Description: Any FLV Player 1.1.3.1; Types: full compact custom; MinVersion: 4.1,4.0
Name: Any_Video_Converter; Description: Any Video Converter Pro 2.7.1; Types: full; MinVersion: 4.1,4.0
Name: Any_DVD_Converter; Description: Any DVD Converter Pro 3.7.1.0; Types: full; MinVersion: 4.1,4.0

[Types]
Name: full; Description: Полная установка
Name: compact; Description: Компактная установка
Name: custom; Description: Выборочная установка; Flags: iscustom

[Messages]
BeveledLabel=Copyright © 2009

[Languages]
Name: Russian; MessagesFile: embedded\Russian.isl

[Code]
var
WelcomeLabel1,WelcomeLabel2,FinishedHeadingLabel,RunLabel,
FinishedLabel,PageNameLabel,PageDescriptionLabel:TLabel;
RunMyProg: TCheckBox;

procedure RLabelOnClick(Sender: TObject);
begin
if RunMyProg.Checked=false then
begin
RunMyProg.Checked := true;
end else
RunMyProg.Checked := false;
end;

// функция для запуска программы если отмечен чебокс
procedure CurStepChanged(CurStep: TSetupStep);
var
ErrorCode: Integer;
begin
if CurStep = ssDone then
begin
if RunMyProg.Checked then
Exec(ExpandConstant('{app}\Any FLV Player 1.1.3.1\FlvPlayer.exe'), '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;
end;

procedure InitializeWizard();
begin
WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
WizardForm.FinishedHeadingLabel.Hide;
WizardForm.FinishedLabel.Hide;
// не знаю почему, но Hide не действует. Поэтому просто уменьшил размер.
WizardForm.RunList.Height := 0;
WizardForm.RunList.Width := 0;

WizardForm.WizardBitmapImage.Align:=true;
WizardForm.WizardBitmapImage2.Align:=true;
WizardForm.WizardSmallBitmapImage.Align:=true;

WelcomeLabel1:=TLabel.Create(WizardForm);
WelcomeLabel1.Left:=ScaleX(150);
WelcomeLabel1.Top := ScaleY(22);
WelcomeLabel1.Width := ScaleX(320);
WelcomeLabel1.Height := ScaleY(75);
WelcomeLabel1.AutoSize := False;
WelcomeLabel1.WordWrap := True;
WelcomeLabel1.Font.Color := clBlack;
// здесь можно поиграть шрифтом.
WelcomeLabel1.Font.Style := [fsBold];
WelcomeLabel1.Font.Name:='Cambria';
WelcomeLabel1.Font.Size := 14;
WelcomeLabel1.Transparent := True;
WelcomeLabel1.Parent := WizardForm.WelcomePage;

WelcomeLabel2:=TLabel.Create(WizardForm);
WelcomeLabel2.Left := ScaleX(150);
WelcomeLabel2.Top := ScaleY(85);
WelcomeLabel2.Width := ScaleX(320);
WelcomeLabel2.Height := ScaleY(200);
WelcomeLabel2.AutoSize := False;
WelcomeLabel2.WordWrap := True;
WelcomeLabel2.Font.Color := clBlack;
WelcomeLabel2.Font.Size := 8;
WelcomeLabel2.Transparent := True;
WelcomeLabel2.Parent := WizardForm.WelcomePage;

PageNameLabel := TLabel.Create(WizardForm);
PageNameLabel.Left := ScaleX(35);
PageNameLabel.Top := ScaleY(13);
PageNameLabel.Width := ScaleX(300);
PageNameLabel.Height := ScaleY(14);
PageNameLabel.AutoSize := False;
PageNameLabel.WordWrap := True;
PageNameLabel.Font.Color := clBlack;
PageNameLabel.Font.Style := [fsBold];
PageNameLabel.Transparent := True;
PageNameLabel.Parent := WizardForm.MainPanel;

PageDescriptionLabel := TLabel.Create(WizardForm);
PageDescriptionLabel.Left := ScaleX(35);
PageDescriptionLabel.Top := ScaleY(30);
PageDescriptionLabel.Width := ScaleX(400);
PageDescriptionLabel.Height := ScaleY(30);
PageDescriptionLabel.AutoSize := False;
PageDescriptionLabel.WordWrap := True;
PageDescriptionLabel.Font.Color := clBlack;
PageDescriptionLabel.Transparent := True;
PageDescriptionLabel.Parent := WizardForm.MainPanel;

FinishedHeadingLabel:=TLabel.Create(WizardForm);
FinishedHeadingLabel.Left := ScaleX(150);
FinishedHeadingLabel.Top := ScaleY(22);
FinishedHeadingLabel.Width := ScaleX(320);
FinishedHeadingLabel.Height := ScaleY(75);
FinishedHeadingLabel.AutoSize := False;
FinishedHeadingLabel.WordWrap := True;
FinishedHeadingLabel.Font.Color := clBlack;
// здесь можно поиграть шрифтом.
FinishedHeadingLabel.Font.Style := [fsBold];
FinishedHeadingLabel.Font.Name:='Cambria';
FinishedHeadingLabel.Font.Size := 14;
FinishedHeadingLabel.Transparent := True;
FinishedHeadingLabel.Parent := WizardForm.FinishedPage;

FinishedLabel:=TLabel.Create(WizardForm);
FinishedLabel.Left := ScaleX(150);
FinishedLabel.Top := ScaleY(85);
FinishedLabel.Width := ScaleX(320);
FinishedLabel.Height := ScaleY(200);
FinishedLabel.AutoSize := False;
FinishedLabel.WordWrap := True;
FinishedLabel.Font.Color := clBlack;
FinishedLabel.Font.Size := 8;
FinishedLabel.Transparent := True;
FinishedLabel.Parent := WizardForm.FinishedPage;

RunMyProg := TCheckBox.Create(WizardForm);
RunMyProg.Parent := WizardForm.FinishedPage;
RunMyProg.Left := ScaleX(150);
RunMyProg.Top := ScaleY(185);
RunMyProg.Width := ScaleX(14);
RunMyProg.Height := ScaleX(14);
// RunMyProg.Checked := true; // чтоб чебокс был отмечен, раскоментируй строку

RunLabel:=TLabel.Create(WizardForm);
RunLabel.Left := ScaleX(170);
RunLabel.Top := ScaleY(185);
RunLabel.Width := ScaleX(200);
RunLabel.Height := ScaleY(20);
RunLabel.AutoSize := False;
RunLabel.WordWrap := True;
RunLabel.Font.Color := clBlack;
RunLabel.Font.Size := 8;
RunLabel.OnClick := @RLabelOnClick;
RunLabel.Transparent := True;
RunLabel.Parent := WizardForm.FinishedPage;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
WelcomeLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WelcomeLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
FinishedHeadingLabel.Caption := WizardForm.FinishedHeadingLabel.Caption;
FinishedLabel.Caption := WizardForm.FinishedLabel.Caption;
// здесь придётся вручную вводить требуемый текст
RunLabel.Caption := 'Запустить Any Flv Player';
end;

Serega
26-02-2009, 18:29
tem000, [Setup]
AppName=Any FLV Player Pack
AppVerName=Any FLV Player Pack
AppPublisher=www.any-flv-player.com
DefaultDirName={pf}\Any FLV Player Pack
DefaultGroupName=Any FLV Player Pack
OutputBaseFilename=Any FLV Player Pack ©
AllowNoIcons=true
Compression=lzma
SolidCompression=true
VersionInfoVersion=1.1.3.1
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=embedded\WizardSmallImage.bmp
SetupIconFile=C:\Documents and Settings\Пользователь\Рабочий стол\Any FLV Player Pack\embedded\Install.ico
UninstallDisplayIcon={app}\Uninstall\unins000.exe
UninstallFilesDir={app}\Uninstall

[Languages]
Name: Russian; MessagesFile: embedded\Russian.isl

[Messages]
BeveledLabel=Copyright © 2009

[Types]
Name: full; Description: Полная установка
; compact - не определена отдельно, следовательно не нужна... имхо
Name: compact; Description: Компактная установка
Name: custom; Description: Выборочная установка; Flags: iscustom

[Components]
Name: Any_FLV_Player; Description: Any FLV Player 1.1.3.1; Types: full compact custom; MinVersion: 4.1,4.0
Name: Any_Video_Converter; Description: Any Video Converter Pro 2.7.1; Types: full; MinVersion: 4.1,4.0
Name: Any_DVD_Converter; Description: Any DVD Converter Pro 3.7.1.0; Types: full; MinVersion: 4.1,4.0

[Tasks]
Name: AnyFlvPlayer; Description: Создать ярлык Any Flv Player на рабочем столе; GroupDescription: Дополнительные ярлыки:; Components: Any_FLV_Player; Flags: unchecked
Name: AnyVideoConverter; Description: Создать ярлык Any Video Converter Pro на рабочем столе; GroupDescription: Дополнительные ярлыки:; Components: Any_Video_Converter; Flags: unchecked
Name: AnyDVDConverter; Description: Создать ярлык Any DVD Converter Pro на рабочем столе; GroupDescription: Дополнительные ярлыки:; Components: Any_DVD_Converter; Flags: unchecked

Name: fileassoc; Description: Связать Any FLV Player, с файлами имеющими расширение .flv; MinVersion: 4.1,4.0; Components: Any_FLV_Player; Flags: unchecked

[Files]
Any FLV Player
Source: "C:\Documents and Settings\Пользователь\Рабочий стол\Any FLV Player Pack\{app}\Any FLV Player 1.1.3.1\*"; DestDir: "{app}\Any FLV Player 1.1.3.1"; Components: Any_FLV_Player; MinVersion: 4.1,4.0; Flags: ignoreversion recursesubdirs createallsubdirs
Any Video Converter Professional
Source: "C:\Documents and Settings\Пользователь\Рабочий стол\Any FLV Player Pack\{app}\Any Video Converter Pro 2.7.1\*"; DestDir: "{app}\Any Video Converter Pro 2.7.1"; MinVersion: 4.1,4.0; Components: Any_Video_Converter; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{userappdata}\Any Video Converter Professional\profiles_v2.xml"; DestDir: "{userappdata}\Any Video Converter Professional"; Components: Any_Video_Converter; Flags: ignoreversion
Any DVD Converter Professional
Source: "C:\Documents and Settings\Пользователь\Рабочий стол\Any FLV Player Pack\{app}\Any DVD Converter Pro 3.7.1.0\*"; DestDir: "{app}\Any DVD Converter Pro 3.7.1.0"; MinVersion: 4.1,4.0; Components: Any_DVD_Converter; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{userappdata}\Any DVD Converter Professional\profiles_v2.xml"; DestDir: "{userappdata}\Any DVD Converter Professional"; Components: Any_DVD_Converter; Flags: ignoreversion

[Registry]
Any FLV Player
Root: HKCR; SubKey: Applications\FlvPlayer.exe\shell\open\command; ValueType: string; ValueName: ; ValueData: """C:\Program Files\Any FLV Player Pack\Any FLV Player 1.1.3.1\FlvPlayer.exe"" ""%1"""; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.flv; ValueType: string; ValueName: Application; ValueData: FlvPlayer.exe; Components: Any_FLV_Player; Tasks: fileassoc
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.flv\OpenWithList; ValueType: string; ValueName: a; ValueData: FlvPlayer.exe; Components: Any_FLV_Player; Tasks: fileassoc
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.flv\OpenWithProgids; ValueType: string; ValueName: flv_auto_file; ValueData: hex(0):; Components: Any_FLV_Player; Tasks: fileassoc
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.flv\OpenWithProgids; ValueType: string; ValueName: Winamp.File.FLV; ValueData: hex(0):; Components: Any_FLV_Player; Tasks: fileassoc
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.flv\OpenWithProgids; ValueType: string; ValueName: SWF.max.flv; ValueData: hex(0):; Components: Any_FLV_Player; Tasks: fileassoc
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.flv\OpenWithProgids; ValueType: string; ValueName: Flash.VideoFile; ValueData: hex(0):; Components: Any_FLV_Player; Tasks: fileassoc
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: AutoPlay; ValueData: $00000001; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: AutoRepeat; ValueData: $00000001; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: ShowTitle; ValueData: $00000001; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: ShowTime; ValueData: $00000001; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: nControlPanelPosition; ValueData: $00000000; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: nControlPanelDisplay; ValueData: $00000001; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: colorControlPanel; ValueData: $00141414; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: colorButton; ValueData: $002525da; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: colorTime1; ValueData: $00ffffff; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: colorSlide; ValueData: $00f0f0f0; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: colorBufferSlide; ValueData: $00000000; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: colorBKSlide; ValueData: $00333333; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: CopyVideoFile; ValueData: $00000001; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: nBufferTime; ValueData: $00000005; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: nControlBarStyle; ValueData: $00000000; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: string; ValueName: language; ValueData: auto; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: string; ValueName: languageIni; ValueData: lang_rus.ini; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: languageAuto; ValueData: $00000000; Components: Any_FLV_Player
Root: HKCU; SubKey: Software\Any Flv Player; ValueType: dword; ValueName: nSizeRatio; ValueData: $00000001; Components: Any_FLV_Player
Any Video Converter Professional
Root: HKCU; Subkey: "Software\Any Video Converter Professional"; Flags: uninsdeletekey
Root: HKCU; Subkey: "Software\Any Video Converter Professional\Setting\Output"; ValueName: "UseTitleAsFileName"; ValueType: Dword; ValueData: "$1"; Components: Any_Video_Converter
Root: HKCU; Subkey: "Software\Any Video Converter Professional\Setting\Output"; ValueName: "Video Aspect"; ValueType: String; ValueData: "4/3"; Components: Any_Video_Converter
Root: HKCU; Subkey: "Software\Any Video Converter Professional\Setting\Output"; ValueName: "RetryTimes"; ValueType: Dword; ValueData: "$5"; Components: Any_Video_Converter
Any DVD Converter Professional
Root: HKCU; Subkey: "Software\Any DVD Converter Professional"; Flags: uninsdeletekey
Root: HKCU; Subkey: "Software\Any DVD Converter Professional\Setting\Output"; ValueName: "UseTitleAsFileName"; ValueType: Dword; ValueData: "$1"; Components: Any_DVD_Converter
Root: HKCU; Subkey: "Software\Any DVD Converter Professional\Setting\Output"; ValueName: "RetryTimes"; ValueType: Dword; ValueData: "$5"; Components: Any_DVD_Converter

[Run]
;Any FLV Player
;Filename: {app}\Any FLV Player 1.1.3.1\FlvPlayer.exe; Description: Запустить Any Flv Player; Flags: nowait postinstall skipifsilent unchecked
;Any Video Converter Professional
;Filename: {app}\Any Video Converter Pro 2.7.1\VideoConvPro.exe; Description: Запустить Any Video Converter Pro; Flags: nowait postinstall skipifsilent unchecked

[Icons]
;Any FLV Player
Name: {group}\Any Flv Player; Filename: {app}\Any FLV Player 1.1.3.1\FlvPlayer.exe; Components: Any_FLV_Player
Name: {commondesktop}\Any Flv Player; Filename: {app}\Any FLV Player 1.1.3.1\FlvPlayer.exe; Components: Any_FLV_Player; Tasks: AnyFlvPlayer
;Any Video Converter Professional
Name: {group}\Any Video Converter Pro; Filename: {app}\Any Video Converter Pro 2.7.1\VideoConvPro.exe; Components: Any_Video_Converter
Name: {commondesktop}\Any Video Converter Pro; Filename: {app}\Any Video Converter Pro 2.7.1\VideoConvPro.exe; Components: Any_Video_Converter; Tasks: AnyVideoConverter
;Any DVD Converter Professional
Name: {group}\Any DVD Converter Pro; Filename: {app}\Any DVD Converter Pro 3.7.1.0\DVDConvPro.exe; Components: Any_DVD_Converter
Name: {commondesktop}\Any DVD Converter Pro; Filename: {app}\Any DVD Converter Pro 3.7.1.0\DVDConvPro.exe; Components: Any_DVD_Converter; Tasks: AnyDVDConverter

[_Code]
var
WelcomeLabel1,WelcomeLabel2,FinishedHeadingLabel,Any_FLV_Player_Label,Any_Video_Converter_Label,
Any_DVD_Converter_Label,FinishedLabel,PageNameLabel,PageDescriptionLabel:TLabel;
Any_FLV_Player,Any_Video_Converter,Any_DVD_Converter: TCheckBox;

procedure Any_FLV_Player_Label_OnClick(Sender: TObject);
begin
if Any_FLV_Player.Checked = false then
begin
Any_FLV_Player.Checked := true;
end else
Any_FLV_Player.Checked := false;
end;

procedure Any_Video_Converter_Label_OnClick(Sender: TObject);
begin
if Any_Video_Converter.Checked = false then
begin
Any_Video_Converter.Checked := true;
end else
Any_Video_Converter.Checked := false;
end;

procedure Any_DVD_Converter_Label_OnClick(Sender: TObject);
begin
if Any_DVD_Converter.Checked = false then
begin
Any_DVD_Converter.Checked := true;
end else
Any_DVD_Converter.Checked := false;
end;

// функция для запуска программы если отмечен чебокс
procedure CurStepChanged(CurStep: TSetupStep);
var
ErrorCode: Integer;
begin
if CurStep = ssDone then
begin
if Any_FLV_Player.Checked then
Exec(ExpandConstant('{app}\Any FLV Player 1.1.3.1\FlvPlayer.exe'), '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);

if Any_Video_Converter.Checked then
Exec(ExpandConstant('{app}\Any_Video_Converter\Any_Video_Converter.exe'), '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);

if Any_DVD_Converter.Checked then
Exec(ExpandConstant('{app}\Any_DVD_Converter\Any_DVD_Converter.exe'), '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;
end;

procedure InitializeWizard();
begin
WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
WizardForm.FinishedHeadingLabel.Hide;
WizardForm.FinishedLabel.Hide;
// не знаю почему, но Hide не действует. Поэтому просто уменьшил размер.
WizardForm.RunList.Height := 0;
WizardForm.RunList.Width := 0;

WizardForm.WizardBitmapImage.Align:=true;
WizardForm.WizardBitmapImage2.Align:=true;
WizardForm.WizardSmallBitmapImage.Align:=true;

WelcomeLabel1:=TLabel.Create(WizardForm);
WelcomeLabel1.Left:=ScaleX(150);
WelcomeLabel1.Top := ScaleY(22);
WelcomeLabel1.Width := ScaleX(320);
WelcomeLabel1.Height := ScaleY(75);
WelcomeLabel1.AutoSize := False;
WelcomeLabel1.WordWrap := True;
WelcomeLabel1.Font.Color := clBlack;
// здесь можно поиграть шрифтом.
WelcomeLabel1.Font.Style := [fsBold];
WelcomeLabel1.Font.Name:='Cambria';
WelcomeLabel1.Font.Size := 14;
WelcomeLabel1.Transparent := True;
WelcomeLabel1.Parent := WizardForm.WelcomePage;

WelcomeLabel2:=TLabel.Create(WizardForm);
WelcomeLabel2.Left := ScaleX(150);
WelcomeLabel2.Top := ScaleY(85);
WelcomeLabel2.Width := ScaleX(320);
WelcomeLabel2.Height := ScaleY(200);
WelcomeLabel2.AutoSize := False;
WelcomeLabel2.WordWrap := True;
WelcomeLabel2.Font.Color := clBlack;
WelcomeLabel2.Font.Size := 8;
WelcomeLabel2.Transparent := True;
WelcomeLabel2.Parent := WizardForm.WelcomePage;

PageNameLabel := TLabel.Create(WizardForm);
PageNameLabel.Left := ScaleX(35);
PageNameLabel.Top := ScaleY(13);
PageNameLabel.Width := ScaleX(300);
PageNameLabel.Height := ScaleY(14);
PageNameLabel.AutoSize := False;
PageNameLabel.WordWrap := True;
PageNameLabel.Font.Color := clBlack;
PageNameLabel.Font.Style := [fsBold];
PageNameLabel.Transparent := True;
PageNameLabel.Parent := WizardForm.MainPanel;

PageDescriptionLabel := TLabel.Create(WizardForm);
PageDescriptionLabel.Left := ScaleX(35);
PageDescriptionLabel.Top := ScaleY(30);
PageDescriptionLabel.Width := ScaleX(400);
PageDescriptionLabel.Height := ScaleY(30);
PageDescriptionLabel.AutoSize := False;
PageDescriptionLabel.WordWrap := True;
PageDescriptionLabel.Font.Color := clBlack;
PageDescriptionLabel.Transparent := True;
PageDescriptionLabel.Parent := WizardForm.MainPanel;

FinishedHeadingLabel:=TLabel.Create(WizardForm);
FinishedHeadingLabel.Left := ScaleX(150);
FinishedHeadingLabel.Top := ScaleY(22);
FinishedHeadingLabel.Width := ScaleX(320);
FinishedHeadingLabel.Height := ScaleY(75);
FinishedHeadingLabel.AutoSize := False;
FinishedHeadingLabel.WordWrap := True;
FinishedHeadingLabel.Font.Color := clBlack;
// здесь можно поиграть шрифтом.
FinishedHeadingLabel.Font.Style := [fsBold];
FinishedHeadingLabel.Font.Name:='Cambria';
FinishedHeadingLabel.Font.Size := 14;
FinishedHeadingLabel.Transparent := True;
FinishedHeadingLabel.Parent := WizardForm.FinishedPage;

FinishedLabel:=TLabel.Create(WizardForm);
FinishedLabel.Left := ScaleX(150);
FinishedLabel.Top := ScaleY(85);
FinishedLabel.Width := ScaleX(320);
FinishedLabel.Height := ScaleY(200);
FinishedLabel.AutoSize := False;
FinishedLabel.WordWrap := True;
FinishedLabel.Font.Color := clBlack;
FinishedLabel.Font.Size := 8;
FinishedLabel.Transparent := True;
FinishedLabel.Parent := WizardForm.FinishedPage;

Any_FLV_Player := TCheckBox.Create(WizardForm);
Any_FLV_Player.Parent := WizardForm.FinishedPage;
Any_FLV_Player.Left := ScaleX(150);
Any_FLV_Player.Top := ScaleY(185);
Any_FLV_Player.Width := ScaleX(14);
Any_FLV_Player.Height := ScaleX(14);
// Any_FLV_Player.Checked := true; // чтоб чебокс был отмечен, раскоментируй строку

Any_FLV_Player_Label :=TLabel.Create(WizardForm);
Any_FLV_Player_Label.Left := ScaleX(170);
Any_FLV_Player_Label.Top := ScaleY(185);
Any_FLV_Player_Label.Width := ScaleX(300);
Any_FLV_Player_Label.Height := ScaleY(20);
Any_FLV_Player_Label.AutoSize := False;
Any_FLV_Player_Label.WordWrap := True;
Any_FLV_Player_Label.Font.Color := clBlack;
Any_FLV_Player_Label.Font.Size := 8;
Any_FLV_Player_Label.OnClick := @Any_FLV_Player_Label_OnClick;
Any_FLV_Player_Label.Transparent := True;
Any_FLV_Player_Label.Parent := WizardForm.FinishedPage;

Any_Video_Converter := TCheckBox.Create(WizardForm);
Any_Video_Converter.Parent := WizardForm.FinishedPage;
Any_Video_Converter.Left := ScaleX(150);
Any_Video_Converter.Top := ScaleY(205);
Any_Video_Converter.Width := ScaleX(14);
Any_Video_Converter.Height := ScaleX(14);
// Any_Video_Converter.Checked := true; // чтоб чебокс был отмечен, раскоментируй строку

Any_Video_Converter_Label :=TLabel.Create(WizardForm);
Any_Video_Converter_Label.Left := ScaleX(170);
Any_Video_Converter_Label.Top := ScaleY(205);
Any_Video_Converter_Label.Width := ScaleX(300);
Any_Video_Converter_Label.Height := ScaleY(20);
Any_Video_Converter_Label.AutoSize := False;
Any_Video_Converter_Label.WordWrap := True;
Any_Video_Converter_Label.Font.Color := clBlack;
Any_Video_Converter_Label.Font.Size := 8;
Any_Video_Converter_Label.OnClick := @Any_Video_Converter_Label_OnClick;
Any_Video_Converter_Label.Transparent := True;
Any_Video_Converter_Label.Parent := WizardForm.FinishedPage;

Any_DVD_Converter := TCheckBox.Create(WizardForm);
Any_DVD_Converter.Parent := WizardForm.FinishedPage;
Any_DVD_Converter.Left := ScaleX(150);
Any_DVD_Converter.Top := ScaleY(225);
Any_DVD_Converter.Width := ScaleX(14);
Any_DVD_Converter.Height := ScaleX(14);
// Any_DVD_Converter.Checked := true; // чтоб чебокс был отмечен, раскоментируй строку

Any_DVD_Converter_Label :=TLabel.Create(WizardForm);
Any_DVD_Converter_Label.Left := ScaleX(170);
Any_DVD_Converter_Label.Top := ScaleY(225);
Any_DVD_Converter_Label.Width := ScaleX(300);
Any_DVD_Converter_Label.Height := ScaleY(20);
Any_DVD_Converter_Label.AutoSize := False;
Any_DVD_Converter_Label.WordWrap := True;
Any_DVD_Converter_Label.Font.Color := clBlack;
Any_DVD_Converter_Label.Font.Size := 8;
Any_DVD_Converter_Label.OnClick := @Any_DVD_Converter_Label_OnClick;
Any_DVD_Converter_Label.Transparent := True;
Any_DVD_Converter_Label.Parent := WizardForm.FinishedPage;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
WelcomeLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WelcomeLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
FinishedHeadingLabel.Caption := WizardForm.FinishedHeadingLabel.Caption;
FinishedLabel.Caption := WizardForm.FinishedLabel.Caption;
// здесь придётся вручную вводить требуемый текст
Any_FLV_Player_Label.Caption := 'Запустить Any Flv Player';
Any_Video_Converter_Label.Caption := 'Запустить Any Video Converter Professional';
Any_DVD_Converter_Label.Caption := 'Запустить Any DVD Converter Professional';
end;

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

tem000
26-02-2009, 19:50
Serega_, Спасибо, работает!!!

Serega
01-03-2009, 13:52
de_MAX, смещение прогрессбара вниз и показ слайд-шоу в окне мастера#define TIME_FOR_VIEW 1

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

[Files]
Source: 1.bmp; Flags: dontcopy
Source: 2.bmp; Flags: dontcopy
Source: 3.bmp; Flags: dontcopy
Source: InnoCallback.dll; Flags: dontcopy
Source: compiler:Examples\MyProg.exe; DestDir: {app}

Code]
type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);

var
WelcomeLabel1,WelcomeLabel2,FinishedHeadingLabel,RunLabel,
FinishedLabel,PageNameLabel,PageDescriptionLabel:TLabel;
RunMyProg: TCheckBox;
TimerID: LongWord;
currTime: Integer;
SplashImage: TBitmapImage;

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

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
currTime := currTime + 1;
case currTime of
1*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\2.bmp')) end;
2*{#TIME_FOR_VIEW}: begin SplashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\3.bmp')) end;
end;
if CurrTime = 2*{#TIME_FOR_VIEW} then CurrTime := -1;
end;

procedure RLabelOnClick(Sender: TObject);
begin
if RunMyProg.Checked=false then
begin
RunMyProg.Checked := true;
end else
RunMyProg.Checked := false;
end;

// функция для запуска программы если отмечен чебокс
procedure CurStepChanged(CurStep: TSetupStep);
var
ErrorCode: Integer;
begin
if CurStep = ssDone then
begin
if RunMyProg.Checked then
Exec(ExpandConstant('{app}\MyProg.exe'), '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('1.bmp')
ExtractTemporaryFile('2.bmp')
ExtractTemporaryFile('3.bmp')

currTime := 0;

WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
WizardForm.FinishedHeadingLabel.Hide;
WizardForm.FinishedLabel.Hide;
// низнаю почему, но Hide не действует. Поэтому просто уменьшил размер
WizardForm.RunList.Height := 0;
WizardForm.RunList.Width := 0;
WizardForm.FilenameLabel.Hide;

WizardForm.StatusLabel.Parent := WizardForm;
WizardForm.StatusLabel.Top := ScaleY(315);
WizardForm.StatusLabel.Left := ScaleX(10);
WizardForm.StatusLabel.Width := ScaleX(200);
WizardForm.StatusLabel.Hide;

WizardForm.ProgressGauge.Parent := WizardForm;
WizardForm.ProgressGauge.Top := ScaleY(330);
WizardForm.ProgressGauge.Left := ScaleX(10);
WizardForm.ProgressGauge.Width := ScaleX(380);
WizardForm.ProgressGauge.Height := ScaleX(18);
WizardForm.ProgressGauge.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}\1.bmp'));
SplashImage.Hide;

WizardForm.WizardBitmapImage.Align:=true;
WizardForm.WizardBitmapImage2.Align:=true;
WizardForm.WizardSmallBitmapImage.Align:=true;

WelcomeLabel1:=TLabel.Create(WizardForm);
WelcomeLabel1.Left:=ScaleX(150);
WelcomeLabel1.Top := ScaleY(15);
WelcomeLabel1.Width := ScaleX(320);
WelcomeLabel1.Height := ScaleY(75);
WelcomeLabel1.AutoSize := False;
WelcomeLabel1.WordWrap := True;
WelcomeLabel1.Font.Color := clBlack;
// здесь можно поиграть шрифтом
// WelcomeLabel1.Font.Style := [fsBold];
// WelcomeLabel1.Font.Name:='MS Sans Serif';
WelcomeLabel1.Font.Size := 14;
WelcomeLabel1.Transparent := True;
WelcomeLabel1.Parent := WizardForm.WelcomePage;

WelcomeLabel2:=TLabel.Create(WizardForm);
WelcomeLabel2.Left := ScaleX(150);
WelcomeLabel2.Top := ScaleY(90);
WelcomeLabel2.Width := ScaleX(320);
WelcomeLabel2.Height := ScaleY(200);
WelcomeLabel2.AutoSize := False;
WelcomeLabel2.WordWrap := True;
WelcomeLabel2.Font.Color := clBlack;
WelcomeLabel2.Font.Size := 8;
WelcomeLabel2.Transparent := True;
WelcomeLabel2.Parent := WizardForm.WelcomePage;

PageNameLabel := TLabel.Create(WizardForm);
PageNameLabel.Left := ScaleX(25);
PageNameLabel.Top := ScaleY(10);
PageNameLabel.Width := ScaleX(300);
PageNameLabel.Height := ScaleY(14);
PageNameLabel.AutoSize := False;
PageNameLabel.WordWrap := True;
PageNameLabel.Font.Color := clBlack;
PageNameLabel.Font.Style := [fsBold];
PageNameLabel.Transparent := True;
PageNameLabel.Parent := WizardForm.MainPanel;

PageDescriptionLabel := TLabel.Create(WizardForm);
PageDescriptionLabel.Left := ScaleX(40);
PageDescriptionLabel.Top := ScaleY(25);
PageDescriptionLabel.Width := ScaleX(475);
PageDescriptionLabel.Height := ScaleY(30);
PageDescriptionLabel.AutoSize := False;
PageDescriptionLabel.WordWrap := True;
PageDescriptionLabel.Font.Color := clBlack;
PageDescriptionLabel.Transparent := True;
PageDescriptionLabel.Parent := WizardForm.MainPanel;

FinishedHeadingLabel:=TLabel.Create(WizardForm);
FinishedHeadingLabel.Left := ScaleX(150);
FinishedHeadingLabel.Top := ScaleY(15);
FinishedHeadingLabel.Width := ScaleX(320);
FinishedHeadingLabel.Height := ScaleY(75);
FinishedHeadingLabel.AutoSize := False;
FinishedHeadingLabel.WordWrap := True;
FinishedHeadingLabel.Font.Color := clBlack;
// здесь тоже можно поиграть шрифтом
// FinishedHeadingLabel.Font.Style := [fsBold];
// FinishedHeadingLabel.Font.Name:='MS Sans Serif';
FinishedHeadingLabel.Font.Size := 14;
FinishedHeadingLabel.Transparent := True;
FinishedHeadingLabel.Parent := WizardForm.FinishedPage;

FinishedLabel:=TLabel.Create(WizardForm);
FinishedLabel.Left := ScaleX(150);
FinishedLabel.Top := ScaleY(90);
FinishedLabel.Width := ScaleX(320);
FinishedLabel.Height := ScaleY(200);
FinishedLabel.AutoSize := False;
FinishedLabel.WordWrap := True;
FinishedLabel.Font.Color := clBlack;
FinishedLabel.Font.Size := 8;
FinishedLabel.Transparent := True;
FinishedLabel.Parent := WizardForm.FinishedPage;

RunMyProg := TCheckBox.Create(WizardForm);
RunMyProg.Parent := WizardForm.FinishedPage;
RunMyProg.Left := ScaleX(150);
RunMyProg.Top := ScaleY(152);
RunMyProg.Width := ScaleX(14);
RunMyProg.Height := ScaleX(14);
// RunMyProg.Checked := true; // чтоб чебокс был отмечен, раскоментируй строку

RunLabel:=TLabel.Create(WizardForm);
RunLabel.Left := ScaleX(170);
RunLabel.Top := ScaleY(150);
RunLabel.Width := ScaleX(200);
RunLabel.Height := ScaleY(20);
RunLabel.AutoSize := False;
RunLabel.WordWrap := True;
RunLabel.Font.Color := clBlack;
RunLabel.Font.Size := 10;
RunLabel.OnClick := @RLabelOnClick;
RunLabel.Transparent := True;
RunLabel.Parent := WizardForm.FinishedPage;
end;

procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;

begin
WelcomeLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WelcomeLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
FinishedHeadingLabel.Caption := WizardForm.FinishedHeadingLabel.Caption;
FinishedLabel.Caption := WizardForm.FinishedLabel.Caption;
// здесь придётся вручную вводить требуемый текст
RunLabel.Caption := 'Запустить программу';

if (CurPageID = wpInstalling) then
begin
pfunc := WrapTimerProc(@OnTimer, 4);
TimerID := SetTimer(0, 0, 1000, pfunc);

WizardForm.InnerNotebook.Hide;
WizardForm.Bevel1.Hide;
WizardForm.MainPanel.Hide;
WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;

WizardForm.ProgressGauge.Show;
WizardForm.StatusLabel.Show;
SplashImage.Show;
end
else
begin
WizardForm.ProgressGauge.Hide;
WizardForm.StatusLabel.Hide;
SplashImage.Hide;

if (CurPageID > wpInstalling) and (CurPageID < wpFinished) then
begin
WizardForm.InnerNotebook.Show;
WizardForm.Bevel1.Show;
WizardForm.MainPanel.Show;
WizardForm.PageNameLabel.Show;
WizardForm.PageDescriptionLabel.Show;
end;
end;
end;

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

mariolast
02-03-2009, 23:11
Какой флаг поставить чтобы компилятор не выводил сообщение "No files matching ..." если задано
Source: F:\INSTALL\FILES\WORK\*; DestDir: {app}; Flags: ignoreversion overwritereadonly recursesubdirs createallsubdirs
и папка WORK\ пустая, мне надо чтобы и пустые папки создавались при установке.

Serega
02-03-2009, 23:21
mariolast, а более подробней. Не понятно, что вы хотите сделать? Какие пустые папки необходимо создать?
и папка WORK\ пустая »Это и есть ответ на ваш вопрос... т.е. вы пытаетесь скомпилировать пустую папку без файлов и папок, соответственно компилятор ругается: No files found matching "путь..."
Файлов то нет...

mariolast
02-03-2009, 23:38
Да, именно так и надо, чтобы создавалась пустая папка без файлов
Я вот делаю так

[Dirs]

Name: {app}\FAVORITES; Flags: uninsneveruninstall
Name: {app}\LOG; Flags: uninsneveruninstall
Name: {app}\NEWS; Flags: uninsneveruninstall
Name: {app}\OUTPUT; Flags: uninsneveruninstall
Name: {app}\SAVEARC; Flags: uninsneveruninstall
Name: {app}\SESSION; Flags: uninsneveruninstall
Name: {app}\TEXT_NEW; Flags: uninsneveruninstall
Name: {app}\USER; Flags: uninsneveruninstall

Но если в папках есть подпапки и они пустые и их много....может есть быстрое решение?

Serega
02-03-2009, 23:46
mariolast, тогда в своём проекте перед компиляцией, создайте все эти папки в WORK\* и после этого можно компилировать с вашим первым вариантом...

mariolast
03-03-2009, 00:16
А это отдельные папки, я для примера привел, Work в том числе, и вот пустую то папку как раз компилятор не создает, если в ней пусто...
Вот скрипт

[Files]
Source: F:\INSTALL\Liga\LOC_FILES\LOC_FILES\KEYFILES\*; DestDir: {app}; Flags: ignoreversion overwritereadonly recursesubdirs createallsubdirs
Source: F:\INSTALL\Liga\LOC_FILES\LOC_FILES\UNINST\*; DestDir: {app}; Flags: ignoreversion overwritereadonly recursesubdirs createallsubdirs
Source: F:\INSTALL\Liga\LOC_FILES\LOC_FILES\WORK\*; DestDir: {app}; Flags: ignoreversion overwritereadonly recursesubdirs createallsubdirs

[Dirs]

Name: {app}\FAVORITES; Flags: uninsneveruninstall
Name: {app}\LOG; Flags: uninsneveruninstall
Name: {app}\NEWS; Flags: uninsneveruninstall
Name: {app}\OUTPUT; Flags: uninsneveruninstall
Name: {app}\SAVEARC; Flags: uninsneveruninstall
Name: {app}\SESSION; Flags: uninsneveruninstall
Name: {app}\TEXT_NEW; Flags: uninsneveruninstall
Name: {app}\USER; Flags: uninsneveruninstall

Непустые папки компилятор берет, А вот пустые приходится в другую секцию переносить :(

boss911
03-03-2009, 01:20
Непустые папки компилятор берет, А вот пустые приходится в другую секцию переносить »
И не возьмет пустые. Создание пустых каталогов только через секцию [Dirs]. Не вижу проблемы в этом. Правда если пустых подкаталогов много, то придется помучиться, возможно, это как-то можно автоматизировать (облегчить) с помощью препроцессора, но тут я ничего сказать не могу.

Serega
03-03-2009, 07:30
возможно, это как-то можно автоматизировать (облегчить) с помощью препроцессора »а смысл, ведь всё равно вводить имена всех папок...

boss911
03-03-2009, 17:43
всё равно вводить имена всех папок... »
Имелось в виду, что код препроцессора в момент компиляции просканирует пустые каталоги и сгенерирует список в скрипт в тот же момент компиляции. Я видел немного похожий случай, даже проверял его, но только с файлами, так бы пришлось прописывать куча файлов, а так это делает за тебя препроцессор (составляет список в скрипт). Я не сильно в этом понимаю, но думаю, что для пустых каталогов можно было бы что-то придумать в этом духе.

mariolast
04-03-2009, 14:15
Хм...мало что понял про препроцессор, что-то новенькое..
Еще вопрос.
Надо сделать возможность выбора при установке:

- Сетевая версия
- Локальная версия

И у каждого типа установки свои файлы и директории, в т.ч. и пустые. Но есть и общие.
Как это примерно реализовать?

Serega
04-03-2009, 20:22
Надо сделать возможность выбора при установке: »Накидал вам два примера ; 1 вариант, через [Components]

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

[Languages]
Name: russian; MessagesFile: compiler:Default.isl

[Types]
Name: network; Description: Сетевая версия
Name: local; Description: Локальная версия; Flags: iscustom

[Components]
Name: a; Description: Моя программа™; Types: network; Flags: exclusive
Name: b; Description: Моя программа™64; Types: local; Flags: exclusive
Name: c; Description: Справка; Types: network local

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Components: a
Source: compiler:Examples\MyProg-x64.exe; DestDir: {app}; Components: b
Source: compiler:Examples\MyProg.chm; DestDir: {app}; Components: c


; 2 вариант, через секцию [Tasks]

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

;[Languages]
;Name: russian; MessagesFile: compiler:Default.isl

;[Tasks]
;Name: network; Description: Сетевая версия; GroupDescription: Варианты установки:; Flags: exclusive
;Name: local; Description: Локальная версия; GroupDescription: Варианты установки:; Flags: exclusive

;[Files]
;Source: compiler:Examples\MyProg.exe; DestDir: {app}; Tasks: network
;Source: compiler:Examples\MyProg-x64.exe; DestDir: {app}; Tasks: local
;Source: compiler:Examples\MyProg.chm; DestDir: {app}




© OSzone.net 2001-2012