Ru-Board.club
← Вернуться в раздел «Программы»

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

Автор: Sampron
Дата сообщения: 15.04.2007 18:43
Раздуплил ка делать транспарент.
В коде есть такая строчка 0x04025C - это номер цвета который не показывается тобишь прозрачный. В своём рисунке нужно этим цветом залить те места которые должны быть прозрачным, этот цвет можно взять в splash.bmp или определить этот цвет в Paint-е такими строками:

Оттенок: 161
Контраст: 230
Яркость: 44
Красный: 4
Зелёный: 2
Синий: 92

или изучить все цвета NSIS
Автор: nerobol
Дата сообщения: 15.04.2007 19:21
Кто-нибудь знает как сделать так чтобы можно было дублировать
procedure InitializeWizard();
а то немогу объединить два скрипта в один там в каждом надо использовать процедуру
Автор: NightW0lf
Дата сообщения: 15.04.2007 20:37
nerobol

Цитата:
Кто-нибудь знает как сделать так чтобы можно было дублировать
procedure InitializeWizard();
а то немогу объединить два скрипта в один там в каждом надо использовать процедуру

Зачем дублировать просто добавляй в одну procedure InitializeWizard(); весь свой код только уже без procedure InitializeWizard();.

Добавлено:
2 All
Подскажите как добавить надпись на этой странице [надпись помеченна].

[more=Вот код]

Код:
[code]
const
NeedSize = 20; //Прописать, сколько мегабайт необходимо

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

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
Path: string;
FreeMB, TotalMB: Cardinal;
drives: DWORD;
i: integer;
begin
ListBox := TListBox.Create(WizardForm);
ListBox.Top := 120;
ListBox.Width := 332;
ListBox.Height := ScaleY(90);
ListBox.Parent := WizardForm.SelectDirPage;
ListBox.OnClick := @ListBoxOnClick;
ListBox.Font.Style := [fsBold];
ListBox.Font.Name := 'Arial';
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);
ListBox.Items.Add(Path + ' - Всего: ' + IntToStr(TotalMB) +
'Мб - Свободно: ' + IntToStr(FreeMB) + 'Мб');
end;
end;
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
Path: 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 then
begin
MsgBox('Недостаточно места на диске!', mbInformation, MB_OK)
Result := False;
end;
end;
end;
Автор: Sampron
Дата сообщения: 15.04.2007 22:39
NightW0lf

[code]
const
NeedSize = 20;
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;
Text: TNewStaticText;

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

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

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
Path: string;
FreeMB, TotalMB: Cardinal;
drives: DWORD;
i: integer;

begin
Text := TNewStaticText.Create(WizardForm);
Text.Top := 100;
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.Style := [fsBold];
ListBox.Font.Name := 'Arial';
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);
ListBox.Items.Add(Path + ' - Всего: ' + IntToStr(TotalMB) +
'Мб - Свободно: ' + IntToStr(FreeMB) + 'Мб');
end;
end;
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
Path: 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 then
begin
MsgBox('Недостаточно места на диске!', mbInformation, MB_OK)
Result := False;
end;
end;
end;
Автор: Sero
Дата сообщения: 16.04.2007 01:03
Даааа,красиво получилось Splash
Автор: Sampron
Дата сообщения: 16.04.2007 01:21
Sero
Получше вариант чем Logo.exe три месяца назад.
Автор: Sero
Дата сообщения: 16.04.2007 01:42
Sampron
Ну,да!

Добавлено:
Так остается один вопрос (S.T.A.L.K.E.R.) - в листбокс с свободным местом,было бы здорово если будет и процент свободного места.
Автор: Chanka
Дата сообщения: 16.04.2007 08:27
Ребят я уже спрашивал, но всё равно. Как сделать, чтобы эта конструкция удаления брала путь из реестра? Т.е. например "SOFTWARE\game"; ValueName: "SavePath"; ValueType: String; ValueData: "{userdocs}\My Games"; Flags: uninsdeletekey. Пожалуйста, очень надо.


procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usUninstall then
begin
if DirExists(ExpandConstant('{app}\game\SAVE')) then
begin
if MsgBox('Удалить сохраненные игры?',mbconfirmation, mb_YesNo) = IDYES then
begin
DelTree(ExpandConstant('{app}\game\SAVE'), True, True, True);
begin
MsgBox('Сохранненые файлы - удалены!', mbinformation, mb_ok);
end;
end;
end;
end;
end;
Автор: GRom V
Дата сообщения: 16.04.2007 09:50
Люди!!! вот скрипт проверки системных требований. У меня проц Core 2 Duo E6700 Как сделать чтоб информация о нем влезала полностью???

const
NeedSize = 20; //Прописать, сколько мегабайт необходимо

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;

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;

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 CheckSystemPage(PreviousPageId: Integer): Integer;
var Page: TWizardPage;
ProcessorName:string;
Processor,VideoCardPanel,AudioCardPanel,RAMPanel,PageFilePanel: TPanel;
ProcessorNamePanel,VideoCardNamePanel,AudioCardNamePanel,RAMTotalPanel,PageFileTotalPanel: TPanel;
ProcessorMHZ: Cardinal;
StaticText,StaticText2:TNewStaticText;
oneGhz,oneMB,Rest:Integer;

begin
RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0','ProcessorNameString', ProcessorName);
RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0','~MHz', ProcessorMHZ);
GetVidMemLocal;
GetSoundCards;
oneGhz:=1000;
Rest:=ProcessorMHZ - oneGhz;
oneMB:=1024*1024;

Page := CreateCustomPage(PreviousPageId,'Апаратное Обоспечение','Программа установки обнаружила следуюшие необходимые компоненты');

StaticText:=TNewStaticText.Create(Page);
with StaticText do
begin
Parent:=Page.Surface;
Caption:='Все компоненты удовлетворяют требованиям игры.';
Left:=0;
Top:=5;
AutoSize:=True;
end;

StaticText2:=TNewStaticText.Create(Page);
with StaticText2 do
begin
Parent:=Page.Surface;
Caption:='Когда будуте готовы продолжить установку,нажмите <<Далее>>.'
Left:=0;
Top:=220;
AutoSize:=True;
end;

Processor := TPanel.Create(Page);
with Processor do
begin
Parent := Page.Surface;
Caption := 'Процессор';
Color := clGreen;
Font.Color := clWhite;
Left := ScaleX(0);
Top := ScaleY(32);
Width := ScaleX(87);
Height := ScaleY(25);
BevelInner := bvLowered;
TabOrder := 0;
//Alignment:=taLeftJustify; //надпись 'Процессор' будет писаться не по середине, а с начала.
end;

ProcessorNamePanel := TPanel.Create(Page);
with ProcessorNamePanel do
begin
Parent := Page.Surface;
Caption :=ProcessorName+' '+IntToStr(ProcessorMHZ/oneGhz)+','+'@'+IntToStr(ProcessorMHZ)+'MHz';
Color := clGreen;
Font.Color := clWhite;
Left := ScaleX(92);
Top := ScaleY(32);
Width := ScaleX(320);
Height := ScaleY(25);
BevelInner := bvLowered;
TabOrder := 1;
//Alignment:=taLeftJustify;
end;

if ProcessorMHZ<1800then
begin
ProcessorNamePanel.Color:=clred;
Processor.Color:=clred;
StaticText.Caption:='Компоненты, выделенные красным не удовлетворяют требованиям игры.';
end;

VideoCardPanel:=TPanel.Create(Page);
with VideoCardPanel do
begin
Parent:=Page.Surface;
Caption:='Видеоадаптер';
Color := clGreen;
Font.Color := clWhite;
Left:=ScaleX(0);
Top:=Processor.Top+27;
Width:=ScaleX(87);
Height:=ScaleY(25);
BevelInner:=bvLowered;
TabOrder:=0;
//Alignment:=taLeftJustify;
end;

VideoCardNamePanel:=TPanel.Create(Page);
with VideoCardNamePanel do
begin
Parent:=Page.Surface;
Caption:=GetVideoCardName+' '+IntToStr(GetVidMemLocal/oneMB+6)+'MB';
Color := clGreen;
Font.Color := clWhite;
Left:=ScaleX(92);
Top:=VideoCardPanel.Top;
Width:=ScaleX(320);
Height:=ScaleY(25);
BevelInner:=bvLowered;
TabOrder:=1;
//Alignment:=taLeftJustify;
end;

if GetVidMemLocal<127000000 then //128MB
begin
StaticText.Caption:='Компоненты, выделенные красным не удовлетворяют требованиям игры.';
VideoCardNamePanel.Color:=clred;
VideoCardPanel.Color:=clred;
end;

AudioCardPanel:=TPanel.Create(Page);
with AudioCardPanel do
begin
Parent:=Page.Surface;
Caption:='Звуковая карта';
Color := clGreen;
Font.Color := clWhite;
Left:=ScaleX(0);
Top:=VideoCardPanel.Top+27;
Width:=ScaleX(87);
Height:=ScaleY(25);
BevelInner:=bvLowered;
TabOrder:=0;
//Alignment:=taLeftJustify;
end;

AudioCardNamePanel:=TPanel.Create(Page);
with AudioCardNamePanel do
begin
Parent:=Page.Surface;
Caption:=GetSoundCardName;
Color:=clGreen;
Font.Color := clWhite;
Left:=ScaleX(92);
Top:=AudioCardPanel.Top;
Width:=ScaleX(320);
Height:=ScaleY(25);
BevelInner:=bvLowered;
TabOrder:=1;
//Alignment:=taLeftJustify;
end;

if
GetSoundCards=0 then
begin
StaticText.Caption:='Компоненты, выделенные красным не удовлетворяют требованиям игры.';
AudioCardPanel.Color:=clred;
AudioCardNamePanel.Color:=clred;
AudioCardNamePanel.Caption:='Не обнаружено';
end;


RAMPanel:=TPanel.Create(Page);
with RAMPanel do
begin
Parent:=Page.Surface;
Caption:='ОЗУ'
Color := clGreen;
Font.Color := clWhite;
Left:=0;
Top:=AudioCardPanel.Top+27;
Width:=ScaleX(87);
Height:=ScaleY(25);
BevelInner:=bvLowered;
TabOrder:=0;
//Alignment:=taLeftJustify;
end;

RAMTotalPanel:=TPanel.Create(Page);
with RAMTotalPanel do
begin
Parent:=Page.Surface;
Caption:=IntToStr(GetSystemPhys+1) +'Mb'
Color := clGreen;
Font.Color := clWhite;
Left:=AudioCardNamePanel.Left;
Top:=RAMPanel.Top;
Width:=AudioCardNamePanel.Width;
Height:=ScaleY(25);
BevelInner:=bvLowered;
TabOrder:=1;
//Alignment:=taLeftJustify;
end;

if GetSystemPhys+1<1024 then
begin
RAMTotalPanel.Color:=clred;
RAMPanel.Color:=clred;
StaticText.Caption:='Компоненты, выделенные красным не удовлетворяют требованиям игры.';
end;

PageFilePanel:=TPanel.Create(Page);
with PageFilePanel do
begin
Parent:=Page.Surface;
Caption:='Файл подкачки';
Color := clGreen;
Font.Color := clWhite;
Left:=0;
Top:=RAMPanel.Top+27;
Width:=RAMPanel.Width;
Height:=ScaleY(25);
BevelInner:=bvLowered;
TabOrder:=0;
//Alignment:=taLeftJustify;
end;

PageFileTotalPanel:=TPanel.Create(Page);
with PageFileTotalPanel do
begin
Parent:=Page.Surface;
Caption:=IntToStr(GetSystemPage)+' MB';
Color := clGreen;
Font.Color := clWhite;
Left:=RAMTotalPanel.Left;
Top:=PageFilePanel.Top;
Width:=RAMTotalPanel.Width;
Height:=ScaleY(25);
BevelInner:=bvLowered;
TabOrder:=1;
//////Alignment:=taLeftJustify;
end;

if GetSystemPage<1247 then
begin
PageFileTotalPanel.Color:=clred;
PageFilePanel.Color:=clred;
StaticText.Caption:='Компоненты, выделенные красным не удовлетворяют требованиям игры.';
end;

Result := Page.ID;
end;

procedure InitializeWizard();
var
Path: String;
FreeMB, TotalMB: Cardinal;
drives: DWORD;
i: integer;
begin
CheckSystemPage(wpWelcome);
ListBox:= TListBox.Create(WizardForm);
ListBox.Top:= 120;
ListBox.Width:= 300;
ListBox.Height:= ScaleY(90);
ListBox.Parent:= WizardForm.SelectDirPage;
ListBox.OnClick:= @ListBoxOnClick;

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);
ListBox.Items.Add(Path + ' Свободно: ' + IntToStr(FreeMB) + 'Мб');
end;
end;
end;
end;
Автор: NightW0lf
Дата сообщения: 16.04.2007 11:05
Sampron
Спасибо!
GRom V

Цитата:
Люди!!! вот скрипт проверки системных требований. У меня проц Core 2 Duo E6700 Как сделать чтоб информация о нем влезала полностью???

[more=Вот тебе код]

Код:
;Script by GloThin Edit by NightW0lf для "проверки железа у пользователя".

[Setup]
;Название программы - инсталлятора, а также заголовок инсталлятора, (пожеланию можно версию указать):
AppName=Check_Hard_Requir & Check_Sys_Requir
;Версия программы - инсталлятора, (пожеланию можно указать - название + версию):
AppVerName=1.1
;Директория установки для программы - инсталлятора:
DefaultDirName=C:\Check_Hard_Requir & Check_Sys_Requir
;Название выходного файла компилятора:
OutputBaseFilename=Check_Hard_Requir & Check_Sys_Requir
;Директория выходного файла компилятора:
OutputDir=D:\PROJECT_SETUPS_GAMES\MY_AUTORUN\new_test_iss


[Files]
Source: get_hw_caps.dll; Flags: dontcopy


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


[Code]
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;

function CheckSystemPage(PreviousPageId: Integer): Integer;
var
Page: TWizardPage;
ProcessorName: string;

Processor, VideoCardPanel, AudioCardPanel, RAMPanel, PageFilePanel: TMemo;
ProcessorNamePanel, VideoCardNamePanel, AudioCardNamePanel, RAMTotalPanel, PageFileTotalPanel: TMemo;

ProcessorMHZ: Cardinal;
StaticText, StaticText2: TNewStaticText;
VidRam: integer;
begin
RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', 'ProcessorNameString', ProcessorName);
RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', '~MHz', ProcessorMHZ);
GetVidMemLocal;
GetSoundCards;

Page := CreateCustomPage(PreviousPageId, 'Аппаратное Обеспечение', 'Программа установки обнаружила следующие необходимые компоненты');

StaticText := TNewStaticText.Create(Page);
with StaticText do
begin
Parent := Page.Surface;
Caption := 'Все компоненты соответствуют требованиям игры.';
Left := 0;
Top := 0;
AutoSize := True;
end;

StaticText2 := TNewStaticText.Create(Page);
with StaticText2 do
begin
Parent := Page.Surface;
Caption := 'Когда Вы будите, готовы продолжить установку, нажмите «Далее».';
Left := 0;
Top := 220;
AutoSize := True;
end;

//******************************************* [Начало - Процессор] ***************************************************//

Processor := TMemo.Create(Page);
with Processor do
begin
Text := ' Процессор';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(30);
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;


ProcessorNamePanel := TMemo.Create(Page);
with ProcessorNamePanel do
begin
Text := DelSP(ProcessorName) + ' ' + IntToStr(ProcessorMHZ) + 'MHz'; //новое обработанное значение строки
//Caption :=ProcessorName+' '+IntToStr(ProcessorMHZ)+'MHz' ;
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := ScaleY(30);
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;

if ProcessorMHZ < 1800 then //Минимальное количество частоты в MHz
begin
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
ProcessorNamePanel.Color := $CCCCFF;
end;


//******************************************* [Конец - Процессор] ****************************************************//


//******************************************* [Начало - Видеоадаптер] ************************************************//

VideoCardPanel := TMemo.Create(Page);
with VideoCardPanel do
begin
Text := ' Видеоадаптер';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := Processor.Top + 27;
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;

VideoCardNamePanel := TMemo.Create(Page);
with VideoCardNamePanel do
begin
Text := ' ' + GetVideoCardName; //+' ОЗУ-'+inttostr(round(GetVidMemLocal/1000000))+' МБ';
//Caption:=' ОЗУ-'+inttostr(GetVidMemLocal)+' МБ';
Alignment := taLeftJustify;
Parent := Page.Surface;

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 := VideoCardPanel.Top;
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;

if GetVidMemLocal < 127000000 then //Минимальное объем ОЗУ [в байтах] у видеоадаптера 128 MB
begin
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
VideoCardNamePanel.Color := $CCCCFF;
end;

//******************************************* [Конец - Видеоадаптер] *************************************************//


//******************************************* [Начало - Звуковая карта] **********************************************//

AudioCardPanel := TMemo.Create(Page);
with AudioCardPanel do
begin
Text := ' Звуковая карта';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := VideoCardPanel.Top + 27;
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;

AudioCardNamePanel := TMemo.Create(Page);
with AudioCardNamePanel do
begin
Text := ' ' + GetSoundCardName;
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := AudioCardPanel.Top;
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;

if
GetSoundCards = 0 then
begin
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
AudioCardNamePanel.Color := $CCCCFF;
end;

//******************************************* [Конец - Звуковая карта] ***********************************************//


//******************************************* [Начало - ОЗУ] *********************************************************//

RAMPanel := TMemo.Create(Page);
with RAMPanel do
begin
Text := ' ОЗУ';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := AudioCardPanel.Top + 27;
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;

RAMTotalPanel := TMemo.Create(Page);
with RAMTotalPanel do
begin
Text := ' ' + IntToStr(GetSystemPhys + 1) + ' MB';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := RAMPanel.Top;
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;

if GetSystemPhys + 1 < 1024 then //Минимальное объем ОЗУ 1 Гб или 1024 Мб
begin
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
RAMTotalPanel.Color := $CCCCFF;
end;

//******************************************* [Конец - ОЗУ] **********************************************************//


//******************************************* [Начало - Файл подкачки] ***********************************************//

PageFilePanel := TMemo.Create(Page);
with PageFilePanel do
begin
Text := ' Файл подкачки';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(0); //оригинал S.T.A.L.K.E.R.
Top := RAMPanel.Top + 27;
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;

PageFileTotalPanel := TMemo.Create(Page);
with PageFileTotalPanel do
begin
Text := ' ' + IntToStr(GetSystemPage) + ' MB';
Alignment := taLeftJustify;
Parent := Page.Surface;

Left := ScaleX(110); //оригинал S.T.A.L.K.E.R.
Top := PageFilePanel.Top;
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;

if GetSystemPage < 1024 then //Минимальное объем файла [в мегабайтах] подкачки 1 Гб или 1024 Мб
begin
StaticText.Caption := 'Не все компоненты удовлетворяют требованиям игры.';
PageFileTotalPanel.Color := $CCCCFF;
end;

Result := Page.ID;
end;

//******************************************* [Конец - Файл подкачки] ************************************************//

procedure InitializeWizard();
var
Page: TWizardPage;
Text: TNewStaticText;
Memo: TMemo;
begin
CheckSystemPage(wpWelcome);
end;
Автор: Chuvakstepan
Дата сообщения: 16.04.2007 12:24
А, кто-нибудь сталкивался с Inno Patch Wizard?
http://www.is.tuwien.ac.at/tools/innopatchwizard/index_en.html
Хотелось бы узнать как ей пользоваться
Автор: Snake_60
Дата сообщения: 16.04.2007 13:13
to ALL
А как на кнопку рисунок повесить???
Автор: Sampron
Дата сообщения: 16.04.2007 13:24
Snake_60
Никак уже пробовали в инно это не реально.
Автор: Sero
Дата сообщения: 16.04.2007 13:49

Цитата:
А, кто-нибудь сталкивался с Inno Patch Wizard?
http://www.is.tuwien.ac.at/tools/innopatchwizard/index_en.html
Хотелось бы узнать как ей пользоваться


Я уже спрашивал,но не получил ответа!

Добавлено:
Chanka

Цитата:
Ребят я уже спрашивал, но всё равно. Как сделать, чтобы эта конструкция удаления брала путь из реестра? Т.е. например "SOFTWARE\game"; ValueName: "SavePath"; ValueType: String; ValueData: "{userdocs}\My Games"; Flags: uninsdeletekey. Пожалуйста, очень надо.



Код:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var SaveResult:String;
begin
if CurUninstallStep=usUninstall then
begin
if RegQueryStringValue(HKLM, 'Software\Game','SavePath', SaveResult) then
if MsgBox('Удалить?',mbconfirmation, mb_YesNo) = IDYES then
begin
DelTree(SaveResult, True, True, True);
MsgBox('Успешно удалено!', mbinformation, mb_ok);
end;
end;
end;
Автор: Sampron
Дата сообщения: 16.04.2007 15:55
Как можно задействовать кнопку MinButton чтоб при нажатии сворачивалось?
Вот код:

[Code]
procedure MinButton(Sender: TObject);
begin
WizardForm.Close
end;

procedure CloseButton(Sender: TObject);
begin
WizardForm.Close
end;

procedure InitializeWizard();
begin
with TButton.Create(WizardForm) do begin
Left:=10
Top:=325
Width:=20
Height:=20
Caption:='_'
OnClick:=@MinButton
Parent:=WizardForm
end
with TButton.Create(WizardForm) do begin
Left:=32
Top:=325
Width:=20
Height:=20
Caption:='x'
OnClick:=@MinButton
Parent:=WizardForm
end
end;
Автор: Chuvakstepan
Дата сообщения: 16.04.2007 16:55
Inno Patch Wizard
Немного разобрался с этой штуковиной.

Эта программа для того чтобы подружить Inno Setup и Vpatch, тоесть для того чтобы патчить файлы.
После установки у нас появляется exe через который можно сравнить старый и новый файл. После этого у нас появляется файл (обычно в C:\Program Files\InnoPatchWizard\DataPatch) , в который в результате сравнивания записались данные. В папке с программой есть скрипты, с помощью которых можно закомпилировать полученный инсталл. Но есть одно НО - там есть проверка на присутствие значения в реестре и считывание с него версии). Так вот - надо бы эту проверку убрать и добавить какую-нибудь свою (ну, типа проверку файлов в директории установки, или MD5)
Помогите, вещь действительно стоящая
Автор: Sero
Дата сообщения: 16.04.2007 17:05
Chuvakstepan
Ты прав! надо убрать эту проверку версии из реестра. И проверялось MD5

Добавлено:
Млин! бесит уже Inno Patch Wizard,не получается!
Автор: Sampron
Дата сообщения: 17.04.2007 15:18
Snake_60
Это максимально что можно сделать с кнопками:
http://data.cod.ru/836730314
Автор: NightW0lf
Дата сообщения: 17.04.2007 19:15

Цитата:
Я тут тоже покопался у себя и нашел одни инсталлятор [русификатор для GTA-SA он написан на NSIS] там тоже реализована splash.bmp, НО с прозрачным фоном через библиотеку.

Если кто хочет и может написать скрипт ее работы в Inno Setup тогда забираем:

Зеркало с RL-Team.RU - 126.34 кб
Зеркало с RapidShare.COM - 126.34 кб


Вот сетап где наглядно эта фишка реализованна.
Зеркало с RL-Team.RU
Автор: Sampron
Дата сообщения: 17.04.2007 20:04
NightW0lf

[Files]
Source: splash.bmp; DestDir: {tmp}; Flags: dontcopy
Source: splash1.bmp; DestDir: {tmp}; Flags: dontcopy
Source: splash1.wav; DestDir: {tmp}; Flags: dontcopy
Source: callnsis.dll; DestDir: {tmp}; Flags: dontcopy
Source: AdvSplash.dll; DestDir: {tmp}; Flags: dontcopy

[code]
procedure callplug(parentwnd: Integer; pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PChar);
external 'callplug@files:callnsis.dll stdcall';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('splash.bmp')
ExtractTemporaryFile('splash1.bmp')
ExtractTemporaryFile('splash1.wav')
ExtractTemporaryFile('AdvSplash.dll')
callplug(0,ExpandConstant('{tmp}\AdvSplash.dll'),'show','400','2000','600','0xFFFF00',ExpandConstant('{tmp}\splash'),'','','','','')
callplug(0,ExpandConstant('{tmp}\AdvSplash.dll'),'show','400','7000','600','0xFFFF00',ExpandConstant('{tmp}\splash1'),'','','','','')
Result:=True
end;
Автор: DenVl
Дата сообщения: 17.04.2007 20:44

Цитата:
Так остается один вопрос (S.T.A.L.K.E.R.) - в листбокс с свободным местом,было бы здорово если будет и процент свободного места.

Никто не нашел ответа на этот вопрос?
Автор: NightW0lf
Дата сообщения: 17.04.2007 21:11
Sampron
Мега РЕСПЕКТ тебе за реализацию кода!
Автор: Sero
Дата сообщения: 17.04.2007 21:51
DenVl
Мдааа! никто!
Попробую разобраться сам
Автор: DenVl
Дата сообщения: 17.04.2007 22:40

Цитата:
Так остается один вопрос (S.T.A.L.K.E.R.) - в листбокс с свободным местом,было бы здорово если будет и процент свободного места.

ХА..вопрос разрешился (правда методом тыка, но все же )...у меня работает так:

Код: IntToStr(round(FreeMB/TotalMB*100))
Автор: Sampron
Дата сообщения: 18.04.2007 00:14
Люди помогите с кодом, сделал эмуляцию кнопок но незнаю как сделать замену текста на странице wpReady и wpFinished.

[Code]
procedure BackButton(Sender: TObject);
begin
WizardForm.BackButton.OnClick(nil)
end;

procedure NextButton(Sender: TObject);
begin
WizardForm.NextButton.OnClick(nil)
end;

procedure CancelButton(Sender: TObject);
begin
WizardForm.CancelButton.OnClick(nil)
end;

Procedure InitializeWizard();
begin
WizardForm.Color:=0

with TPanel.Create(WizardForm) do begin
Left:=250
Top:=325
Width:=77
Height:=25
Caption:='< Назад'
Color:=0
Font.Color:=clwhite
OnClick:=@BackButton
Parent:=WizardForm
end
with TPanel.Create(WizardForm) do begin
Left:=328
Top:=325
Width:=77
Height:=25
Caption:='Далее >'
Color:=0
Font.Color:=clwhite
OnClick:=@NextButton
Parent:=WizardForm
end
with TPanel.Create(WizardForm) do begin
Left:=412
Top:=325
Width:=77
Height:=25
Caption:='Выход'
Color:=0
Font.Color:=clwhite
OnClick:=@CancelButton
Parent:=WizardForm
end
end;
Автор: NightW0lf
Дата сообщения: 18.04.2007 00:18
DenVl

Цитата:
ХА..вопрос разрешился (правда методом тыка, но все же )...у меня работает так:

Код:
IntToStr(round(FreeMB/TotalMB*100))

Автор: DenVl
Дата сообщения: 18.04.2007 00:27
NightW0lf
здесь
Автор: Sero
Дата сообщения: 18.04.2007 00:31
Sampron

Код:
var BackButton,NextButton,CancelButton: TPanel;

procedure BackButtonOnClick(Sender: TObject);
begin
WizardForm.BackButton.OnClick(nil)
end;

procedure NextButtonOnClick(Sender: TObject);
begin
WizardForm.NextButton.OnClick(nil)
end;

procedure CancelButtonOnClick(Sender: TObject);
begin
WizardForm.CancelButton.OnClick(nil)
end;

Procedure InitializeWizard();
begin
WizardForm.Color:=0
BackButton:=TPanel.Create(WizardForm)
with BackButton do begin
Left:=250
Top:=325
Width:=77
Height:=25
Caption:='< Назад'
Color:=0
Font.Color:=clwhite
OnClick:=@BackButtonOnClick
Parent:=WizardForm
end
NextButton:=TPanel.Create(WizardForm)
with NextButton do begin
Left:=328
Top:=325
Width:=77
Height:=25
Caption:='Далее >'
Color:=0
Font.Color:=clwhite
OnClick:=@NextButtonOnClick
Parent:=WizardForm
end
CancelButton:=TPanel.Create(WizardForm)
with CancelButton do begin
Left:=412
Top:=325
Width:=77
Height:=25
Caption:='Выход'
Color:=0
Font.Color:=clwhite
OnClick:=@CancelButtonOnClick
Parent:=WizardForm
end
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpReady then
NextButton.Caption:='Установить'
if CurPageID=wpFinished then
NextButton.Caption:='Завершить'
end;
Автор: Sampron
Дата сообщения: 18.04.2007 00:39
Sero
Спасибо!
Автор: Sero
Дата сообщения: 18.04.2007 01:05
Sampron
Лучше будет если процедура CurPageChanged будет так:


Код:
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpWelcome then
NextButton.Caption:='Далее >'
if CurPageID=wpLicense then
NextButton.Caption:='Далее >'
if CurPageID=wpPassword then
NextButton.Caption:='Далее >'
if CurPageID=wpInfoBefore then
NextButton.Caption:='Далее >'
if CurPageID=wpUserInfo then
NextButton.Caption:='Далее >'
if CurPageID=wpSelectDir then
NextButton.Caption:='Далее >'
if CurPageID=wpSelectComponents then
NextButton.Caption:='Далее >'
if CurPageID=wpSelectProgramGroup then
NextButton.Caption:='Далее >'
if CurPageID=wpSelectTasks then
NextButton.Caption:='Далее >'
if CurPageID=wpReady then
NextButton.Caption:='Установить'
if CurPageID=wpInfoAfter then
NextButton.Caption:='Далее >'
if CurPageID=wpFinished then
NextButton.Caption:='Завершить'
end;

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: ICONS


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.