Войти

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


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 [118] 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

moov1kk
18-09-2010, 22:45
http://s46.radikal.ru/i114/1009/17/7d7f67f37690t.jpg (http://radikal.ru/F/s46.radikal.ru/i114/1009/17/7d7f67f37690.bmp.html)

и подскажите пожалуйста что это за ошибка?

alex2010
19-09-2010, 16:08
Знающие люди, как сделать такую распаковку? »
в скрипте распаковки freearc это реализовано
и подскажите пожалуйста что это за ошибка? »
данный идентификатор filenamelabel нужно прописать в переменных var

moov1kk
19-09-2010, 17:49
Цитата moov1kk:Знающие люди, как сделать такую распаковку? »
в скрипте распаковки freearc это реализовано »

а можно подробней?

alex2010
19-09-2010, 18:14
во время распаковки архива прогресс бар отображается также - прогресс в процентах, саму полоску выполнения(бар), и файл, который распаковывается в данный момент.

moov1kk
19-09-2010, 18:47
http://rghost.ru/2671600

помогите соеденить этот скрипт с freearcom ( буду очень благодарен

http://rghost.ru/2671690

alex2010
19-09-2010, 23:36
moov1kk, вот:
http://rghost.ru/2675352
ЗЫ: у тебя картинка перекрывает процент распаковки архива в мегабайтах( сам прогресс отображается)

маркузяка
20-09-2010, 22:26
кто знает че надо дописать в Ultimate Test чтобы Windows 7 тоже поддерживалась? :help:

nik1967
20-09-2010, 22:33
маркузяка,
if (Pos('2000 Service Pack 4', SystemVersionPanel.Text) = 0) and // Windows 2000 SP4
(Pos('XP Service Pack 2', SystemVersionPanel.Text) = 0) and // Windows XP SP2
(Pos('XP Service Pack 3', SystemVersionPanel.Text) = 0) and // Windows XP SP3
(Pos('Vista', SystemVersionPanel.Text) = 0) and // Windows Vista (c любым SP или без него)
(Pos('Windows 7', SystemVersionPanel.Text) = 0) then // Windows 7 (c любым SP или без него)

R.i.m.s.k.y.
21-09-2010, 12:27
кто знает че надо дописать »
А вообще правильнее так

[_Code]
var Version: TWindowsVersion;
GetWindowsVersionEx (Version);
if (Version.Major = 5)... - windows xp
if ( (Version.Major = 6) and (Version.Minor = 0) ) ... - svista
if ( (Version.Major = 6) and (Version.Minor = 1) ) ... - se7en


Мой вопрос - как в заголовке окна установки убрать слово "Установка - "?

Habetdin
21-09-2010, 15:36
как в заголовке окна установки убрать слово "Установка - "? »
[Messages]
SetupWindowTitle=%1

Arsi000
21-09-2010, 21:37
у меня установка должна идти в две директориии как это сделать? как добавить ещё одно окно выбора?

alex2010
22-09-2010, 00:31
Arsi000, вот здесь прописываешь путь установки файла/папки:
[Files]
Source: records.inf; DestDir: {tmp}; Flags: deleteafterinstall

R.i.m.s.k.y.
22-09-2010, 08:40
Подскажите, пожалуйста, как в коде получить айпишник машины ОКТЕТАМИ, т.е. набором четырех чисел, имя пользователя и имя компа?

И народ, имеющий железки на ай3/ай5, и различных интеграшках GMA, отпишитесь, пожалуйста, как в диспетчере устройств отображаются эти видеокарты, мне надо в скоде инно определить тип видухи и от этого уже плясать.

маркузяка
22-09-2010, 13:36
(Pos('Windows 7', SystemVersionPanel.Text) = 0) then // Windows 7 (c любым SP или без него) »

http://s03.radikal.ru/i176/1009/6c/79f58f5b363c.jpg (http://www.radikal.ru)

R.i.m.s.k.y.
22-09-2010, 13:46
маркузяка, ну ептыть, подставить жеж надо после Then свои действия.
этот Ваш if (pos... вообще бессмысленен, - вы просто проверяете что если вин2000 и винХР и виста тогда вин7 тогда ... как будто пушистый белый зверь наследил. Вообще эта проверка бессмыслена, и так ясно что вин95/98 уже нигде нет, а на линуксе инно и так не запуститься. Этой проверкой Вы просто перебираете все ОС и естественно на выходе будет False (ну после того кк правильно переписать эту проверку).
Попробуйте разобраться что делает код
Вы чего хочите? определить ОС? что после этого нужно сделать? Из приведенного кода можно вообще можно иф выбросить, или так сделать:

var Version: TWindowsVersion;
begin // ваша функция
...
GetWindowsVersionEx (Version);
if (Version.Major >= 5) then begin // все что выше 2000 (вин 2000 определяется как 5,0, хр - 5,1, виста 6,0, вин - 6,1
SystemVersionPanel.Color := clBlack
SystemVersionPanel.Font.Color := clRed
ChangeText := True
end; // if (Version.Major >= 5)
end; // ваша функция

маркузяка
22-09-2010, 14:32
исправил.

а проверка все же не бессмыслена. некоторые игры не запускаются под XP, например Just Cause 2

nik1967
22-09-2010, 14:57
маркузяка,
А повнимательнее нельзя? Всё работает.
(Pos('Vista', SystemVersionPanel.Text) = 0) and // Windows Vista (c любым SP или без него)
(Pos('Windows 7', SystemVersionPanel.Text) = 0) then // Windows 7 (c любым SP или без него)
И вообще можно воспользоваться готовыми решениями:
isUtils.dll v1.00 [18.08.2010] от ExpeditorR (http://rghost.ru/2373114)
HWREQ v 1.0 от Shegorat (http://www.krinkels.ru/load/raznoe/hwreq_v_1_0/2-1-0-10)

R.i.m.s.k.y.
22-09-2010, 14:59
а проверка все же не бессмыслена »
Проверка бессмыслена в том виде в каком была написана - я ж расписал что она просто перебирает все ОС с условием and и естественно на выходе пинцет и тот нерабочий.
для ХР проверка if ( (Version.Major = 5) and (Version.Minor = 1) ) then begin...
почитайте справку про GetWindowsVersionEx - там можно проверять и сервис паки

nik1967,
Pos('Vista', SystemVersionPanel.Text) = 0 - значит слово Виста не встречается в строке SystemVersionPanel.Text, значит ОС НЕВИСТА, и так для каждой проверки, как такое может работать? Получается же Если НЕВИН2000 и НЕВИНХР и НЕВИСТА и НЕВИН7 тогда...

nik1967
22-09-2010, 15:45
R.i.m.s.k.y.,
В данном куске кода проверяется версия оси, и если не найдена версия, как ты уже говорил Pos('Vista', SystemVersionPanel.Text) = 0 - значит слово Виста не встречается в строке SystemVersionPanel.Text , то надпись становиться красной:
if (Pos('2000 Service Pack 4', SystemVersionPanel.Text) = 0) and // Windows 2000 SP4
(Pos('XP Service Pack 2', SystemVersionPanel.Text) = 0) and // Windows XP SP2
(Pos('XP Service Pack 3', SystemVersionPanel.Text) = 0) and // Windows XP SP3
(Pos('Vista', SystemVersionPanel.Text) = 0) and // Windows Vista (c любым SP или без него)
(Pos('Windows 7', SystemVersionPanel.Text) = 0) then // Windows 7 (c любым SP или без него)
begin
SystemVersionPanel.Color := clBlack
SystemVersionPanel.Font.Color := clRed
ChangeText := True
end , а если встречается, зелёной:
GetWindowsVersionEx(Version)
// Операционная система:
SystemVersionPanel.Color := clBlack
SystemVersionPanel.Font.Color := clLime

nik1967
22-09-2010, 16:08
маркузяка,
Вот рабочий [Setup]
AppName=Ultimate Test
AppVerName=Ultimate Test 1.0
DefaultDirName={pf}\Ultimate Test

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

[_Code]
type
PDisplay_Device = record
cb: DWord;
DeviceName: array [0..31] of char;
DeviceString: array [0..127] of char;
StateFlags: DWord;
DeviceID, DeviceKey: array [0..127] of char;
end;

TMixerCaps = record
vPid, vDriverVersion: DWord;
sName: array [0..31] of char;
Support, cDestinations: DWord;
end;

// Проверка версии Windows
#if Pos("4.", GetFileVersion(AddBackslash(GetEnv("windir")) + "Explorer.exe")) == 1
{Win9x}
TMemoryStatusEx = record
dwLength, dwMemoryLoad: DWord;
LoTotalPhys, LoAvailPhys, LoTotalPageFile, LoAvailPageFile,
LoTotalVirtual, LoAvailVirtual, LoAvailExtendedVirtual, HiTotalPhys,
HiAvailPhys, HiTotalPageFile, HiAvailPageFile, HiTotalVirtual, HiAvailVirtual,
HiAvailExtendedVirtual: Integer;
end;
function GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx): Boolean;
external 'GlobalMemoryStatus@kernel32.dll stdcall';
#else
{WinNT}
TMemoryStatusEx = record
dwLength, dwMemoryLoad: DWord;
LoTotalPhys, HiTotalPhys, LoAvailPhys, HiAvailPhys,
LoTotalPageFile, HiTotalPageFile, LoAvailPageFile, HiAvailPageFile,
LoTotalVirtual, HiTotalVirtual, LoAvailVirtual, HiAvailVirtual, LoAvailExtendedVirtual,
HiAvailExtendedVirtual: Integer;
end;
function GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx): Boolean;
external 'GlobalMemoryStatusEx@kernel32.dll stdcall';
#endif

const
DISPLAY_DEVICE_PRIMARY_DEVICE = 4;
oneMB = 1024*1024;
NeedMHz = 2200;
NeedVideoRAM = 256;
NeedSoundCard = 'Realtek HD';
NeedMB = 1024;
NeedPageFile = 2048;

var
InfoPage: TWizardPage;
TopText, BottomText: TNewStaticText;
ChangeText: Boolean;
SystemPanel, ProcessorPanel, VideoPanel,
AudioPanel, RAMPanel, PageFilePanel: TMemo;
SystemVersionPanel, ProcessorMHzPanel, VideoRAMPanel,
AudioNamePanel, RAMTotalPanel, PageFileTotalPanel: TMemo;
lpCaps: TMixerCaps;
Version: TWindowsVersion;
MemoryEx: TMemoryStatusEx;
n, errCode: Integer;
Keys: TArrayOfString;
DeviceValue: Cardinal;
lpDisplayDevice: PDisplay_Device;

function GetSystemMetrics(nIndex: Integer): Integer;
external 'GetSystemMetrics@user32.dll stdcall';

function GetDeviceCaps(hDC, nIndex: Integer): Integer;
external 'GetDeviceCaps@GDI32 stdcall';

function CreateDC(lpDriverName, lpDeviceName, lpOutput: String; lpInitData: Integer): Integer;
external 'CreateDCA@GDI32 stdcall';

function EnumDisplayDevices(lpDevice, iDevNum: DWord; var lpDisplayDevice: PDisplay_Device; dwFlags: DWord): Boolean;
external 'EnumDisplayDevicesA@user32.dll stdcall';

function mixerGetDevCaps(uDeviceID: LongInt; var lpCaps: TMixerCaps; uSize: LongInt): LongInt;
external 'mixerGetDevCapsA@winmm.dll stdcall';

function mixerGetNumDevs: Integer;
external 'mixerGetNumDevs@winmm.dll stdcall';

// Дополнить число до кратного Multiple
function ToMultiple(Bytes, Multiple: Integer): Integer;
begin
if Abs(Bytes/Multiple) > Bytes/Multiple then
Result := (Bytes/Multiple + 1)*Multiple
else
Result := Bytes
end;

// Перевод числа в значение Бт/Кб/Мб/Гб/Тб (до 3х знаков после запятой)
function ByteOrTB(Bytes: Extended; noMB: Boolean): String;
begin
if not noMB then
Result := FloatToStr(Int(Bytes)) + ' Мб'
else
if Bytes < 1024 then
Result := FloatToStr(Int(Bytes)) + ' Бт'
else
if Bytes/1024 < 1024 then
Result := FloatToStr(round((Bytes/1024)*10)/10) + ' Кб'
else
if Bytes/oneMB < 1024 then
Result := FloatToStr(round(Bytes/oneMB*100)/100) + ' Мб'
else
if Bytes/oneMB/1000 < 1024 then
Result := FloatToStr(round(Bytes/oneMB/1024*1000)/1000) + ' Гб'
else
Result := FloatToStr(round(Bytes/oneMB/oneMB*1000)/1000) + ' Тб'
StringChange(Result, ',', '.')
end;

// Удаление начальных, конечных и повторных пробелов
function DelSp(String: String): String;
begin
while (Pos(' ', String) > 0) do Delete(String, Pos(' ', String), 1)
Result := Trim(String)
end;

function Size64(Hi, Lo: Integer): Extended;
begin
Result := Lo
if Lo < 0 then
Result := Result + $7FFFFFFF + $7FFFFFFF + 2
for Hi := Hi-1 downto 0 do Result := Result + $7FFFFFFF + $7FFFFFFF + 2
end;

function CheckCPU(NeedMHz: Integer): Boolean;
var
String: String;
begin
String := 'Hardware\Description\System\CentralProcessor'; RegGetSubkeyNames(HKLM, String, Keys) // Количество ядер
for n := 0 to GetArrayLength(Keys)-1 do
RegQueryStringValue(HKLM, String + '\' + Keys[n], 'ProcessorNameString', Keys[n])
if not RegQueryDWordValue(HKLM, String + '\0', '~MHz', DeviceValue) or (DeviceValue < NeedMHz) then
Exit
else
Result := True
end;

function CheckMemorySize(NeedRAM: Integer): Boolean;
begin
MemoryEx.dwLength := SizeOf(MemoryEx)
if not GlobalMemoryStatusEx(MemoryEx) then
MsgBox('Ошибка функции:' + #13 + 'GlobalMemoryStatusEx', mbError, mb_Ok)
else
if (ToMultiple(trunc(Size64(MemoryEx.HiTotalPhys, MemoryEx.LoTotalPhys)/oneMB), 16) < NeedRAM) then
Exit
else
Result := True
end;

procedure CreateCheckForm();
begin

TopText := TNewStaticText.Create(InfoPage)
with TopText do
begin
Parent := InfoPage.Surface
Left := 0
AutoSize := True
end

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

SystemPanel := TMemo.Create(InfoPage)
with SystemPanel do
begin
Text := 'Система'
Font.Color :=clLime
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := ScaleY(33)
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := clBlack
end

SystemVersionPanel := TMemo.Create(InfoPage)
with SystemVersionPanel do
begin
Alignment := taLeftJustify
Parent := InfoPage.Surface
Left := ScaleX(104)
Top := SystemPanel.Top
Width := ScaleX(310)
Height := ScaleY(22)
ReadOnly := True
end

ProcessorPanel := TMemo.Create(InfoPage)
with ProcessorPanel do
begin
Text := 'Процессор'
Font.Color :=clLime
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := SystemPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := clBlack
end

ProcessorMHzPanel := TMemo.Create(InfoPage)
with ProcessorMHzPanel do
begin
Alignment := taLeftJustify
Parent := InfoPage.Surface
Left := ScaleX(104)
Top := ProcessorPanel.Top
Width := ScaleX(310)
Height := ScaleY(22)
ReadOnly := True
end

VideoPanel := TMemo.Create(InfoPage)
with VideoPanel do
begin
Text := 'Видеоадаптер'
Font.Color :=clLime
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := ProcessorPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := clBlack
end

VideoRAMPanel := TMemo.Create(InfoPage)
with VideoRAMPanel do
begin
Alignment := taLeftJustify
Parent := InfoPage.Surface
Left := ScaleX(104)
Top := VideoPanel.Top
Width := ScaleX(310)
Height := ScaleY(22)
ReadOnly := True
end

AudioPanel := TMemo.Create(InfoPage)
with AudioPanel do
begin
Text := 'Звуковая карта'
Font.Color :=clLime
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := VideoPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := clBlack
end

AudioNamePanel := TMemo.Create(InfoPage)
with AudioNamePanel do
begin
Alignment := taLeftJustify
Parent := InfoPage.Surface
Left := ScaleX(104)
Top := AudioPanel.Top
Width := ScaleX(310)
Height := ScaleY(22)
ReadOnly := True
end

RAMPanel := TMemo.Create(InfoPage)
with RAMPanel do
begin
Text := 'Объём памяти'
Font.Color :=clLime
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := AudioPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := clBlack
end

RAMTotalPanel := TMemo.Create(InfoPage)
with RAMTotalPanel do
begin
Alignment := taLeftJustify
Parent := InfoPage.Surface
Left := ScaleX(104)
Top := RAMPanel.Top
Width := ScaleX(310)
Height := ScaleY(22)
ReadOnly := True
end

PageFilePanel := TMemo.Create(InfoPage)
with PageFilePanel do
begin
Text := 'Файл подкачки'
Font.Color :=clLime
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := RAMPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := clBlack
end;

PageFileTotalPanel := TMemo.Create(InfoPage)
with PageFileTotalPanel do
begin
Alignment := taLeftJustify
Parent := InfoPage.Surface
Left := ScaleX(104)
Top := PageFilePanel.Top
Width := ScaleX(310)
Height := ScaleY(22)
ReadOnly := True
end

end;

procedure UpdateInfo();
var
DeviceName, DeviceKey: String;
begin
ChangeText := False

GetWindowsVersionEx(Version)

// Операционная система:
SystemVersionPanel.Color := clBlack
SystemVersionPanel.Font.Color := clLime

DeviceKey := 'Software\Microsoft\Windows NT\CurrentVersion'
if not UsingWinNT then StringChange(DeviceKey, 'Windows NT', 'Windows')
RegQueryStringValue(HKLM, DeviceKey, 'ProductName', DeviceName)
if RegQueryStringValue(HKLM, DeviceKey, 'CSDVersion', DeviceKey) then
DeviceName := DeviceName + ' ' + DeviceKey
StringChange(DeviceName, 'Microsoft ', '')
SystemVersionPanel.Text := ' ' + DeviceName + ' сборка ' + IntToStr(Version.Major) + '.' + IntToStr(Version.Minor) +
'.' + IntToStr(Version.Build)

if (Pos('2000 Service Pack 4', SystemVersionPanel.Text) = 0) and // Windows 2000 SP4
(Pos('XP Service Pack 2', SystemVersionPanel.Text) = 0) and // Windows XP SP2
(Pos('XP Service Pack 3', SystemVersionPanel.Text) = 0) and // Windows XP SP3
(Pos('Vista', SystemVersionPanel.Text) = 0) and // Windows Vista (c любым SP или без него)
(Pos('Windows 7', SystemVersionPanel.Text) = 0) then // Windows 7 (c любым SP или без него)
begin
SystemVersionPanel.Color := clBlack
SystemVersionPanel.Font.Color := clRed
ChangeText := True
end

// Процессор:
ProcessorMHzPanel.Color := clBlack
ProcessorMHzPanel.Font.Color := clLime

if not CheckCPU(NeedMHz) then
begin
ProcessorMHzPanel.Color := clBlack
ProcessorMHzPanel.Font.Color := clRed
ChangeText := True
end

ProcessorMHzPanel.Text := ' ' + DelSp(Keys[0]) + ' @' + IntToStr(DeviceValue) + ' MHz'
if GetArrayLength(Keys) > 1 then
ProcessorPanel.Text := 'Процессоры' // + ' (' + IntToStr(GetArrayLength(Keys)) + ')'

// Видеокарта:
VideoRAMPanel.Color := clBlack
VideoRAMPanel.Font.Color := clLime

lpDisplayDevice.cb := SizeOf(lpDisplayDevice)
DeviceKey := ''
n := 0
while not (EnumDisplayDevices(0, n, lpDisplayDevice, 0) and
(lpDisplayDevice.StateFlags and DISPLAY_DEVICE_PRIMARY_DEVICE > 0)) and (n < 127) do n := n + 1
for n := 0 to 127 do DeviceKey := DeviceKey + lpDisplayDevice.DeviceKey[n]
Delete(DeviceKey, Pos(Chr(0), DeviceKey), 127) // Ключ драйвера получаем из API
StringChange(DeviceKey, '\Registry\Machine\', '')
errCode := 1
DeviceValue := 0
if RegQueryBinaryValue(HKLM, DeviceKey, 'HardwareInformation.MemorySize', DeviceName) then
for n := 1 to Length(DeviceName) do
begin
DeviceValue := DeviceValue + Ord(DeviceName[n])*errCode
errCode := errCode*$100
end
else
if RegQueryDWordValue(HKLM, DeviceKey, 'HardwareInformation.MemorySize', DeviceValue) then
else
RegQueryDWordValue(HKLM, DeviceKey + '\Info', 'VideoMemory', DeviceValue)
DeviceName := ''
for n := 0 to 127 do DeviceName := DeviceName + lpDisplayDevice.DeviceString[n]
Delete(DeviceName, Pos(Chr(0), DeviceName), 127)

if DeviceName <> '' then
if DeviceValue > 0 then
VideoRAMPanel.Text := ' ' + DelSp(DeviceName) + ', '+ ByteOrTB(DeviceValue/oneMB, False)
else
VideoRAMPanel.Text := ' ' + DelSp(DeviceName) + ' (Standard), '+ ByteOrTB(DeviceValue/oneMB, False)
else
begin
VideoRAMPanel.Text := ' Драйвер устройства не обнаружен'
VideoRAMPanel.Color := clBlack
VideoRAMPanel.Font.Color := clRed
ChangeText := True
end
if (DeviceValue/oneMB < NeedVideoRAM) then
begin
VideoRAMPanel.Color := clBlack
VideoRAMPanel.Font.Color := clRed
ChangeText := True
end
VideoRAMPanel.Text := VideoRAMPanel.Text + ', ' + IntToStr(GetSystemMetrics(0)) + 'x' +
IntToStr(GetSystemMetrics(1)) + ' (' + IntToStr(GetDeviceCaps(CreateDC('DISPLAY','','',0),14) *
GetDeviceCaps(CreateDC('DISPLAY','','',0),12)) + ' bit)'

// Звуковая карта:
AudioNamePanel.Color := clBlack
AudioNamePanel.Font.Color := clLime

// for errCode := 0 to 1 do // Вывод основного звукового устройства
for errCode := 0 to mixerGetNumDevs do
begin
mixerGetDevCaps(errCode-1, lpCaps, SizeOf(lpCaps))
DeviceName := ' '
for n := 0 to 31 do DeviceName := DeviceName + lpCaps.sName[n]
Delete(DeviceName, Pos(Chr(0), DeviceName), 31)
Delete(DeviceName, Pos(' [', DeviceName), 31)
StringChange(DeviceName, 'SB ', 'Creative ')
Delete(DeviceName, Pos(' Audio', DeviceName), 31)
SetArrayLength(Keys, errCode)
if errCode > 0 then Keys[errCode-1] := DeviceName
end

if GetArrayLength(Keys) > 1 then
begin
AudioPanel.Text := 'Звуковые карты'
// AudioPanel.Text := 'Звуковые карты (' + IntToStr(GetArrayLength(Keys)) +')'
AudioNamePanel.Text := ''
for n := 1 to GetArrayLength(Keys) do
AudioNamePanel.Text := AudioNamePanel.Text + Keys[n-1] // + '(' + IntToStr(n) + ')'
end
else
if GetArrayLength(Keys) = 0 then
begin
AudioNamePanel.Text := ' Драйвер устройства не обнаружен'
AudioNamePanel.Color := clBlack
AudioNamePanel.Font.Color := clRed
ChangeText := True
end
else
AudioNamePanel.Text := Keys[0]
if Pos(NeedSoundCard, AudioNamePanel.Text) = 0 then
AudioNamePanel.Text := AudioNamePanel.Text + ' (рекомендуется ' + NeedSoundCard + ')'

// Объём памяти:
RAMTotalPanel.Color := clBlack
RAMTotalPanel.Font.Color := clLime
if not CheckMemorySize(NeedMB) then
begin
RAMTotalPanel.Color := clBlack
RAMTotalPanel.Font.Color := clRed
ChangeText := True
end
RAMTotalPanel.Text := ' ' + ByteOrTB(ToMultiple(trunc(Size64(MemoryEx.HiTotalPhys, MemoryEx.LoTotalPhys)/oneMB), 16), False) + ' всего, ' +
ByteOrTB(ToMultiple(trunc(Size64(MemoryEx.HiTotalPhys, MemoryEx.LoTotalPhys)/oneMB), 16) -
Size64(MemoryEx.HiAvailPhys, MemoryEx.LoAvailPhys)/oneMB, False) + ' используется, ' +
ByteOrTB(Size64(MemoryEx.HiAvailPhys, MemoryEx.LoAvailPhys)/oneMB, False) + ' свободно'

// Виртуальная память:
PageFileTotalPanel.Color := clBlack
PageFileTotalPanel.Font.Color := clLime
PageFileTotalPanel.Text := ' ' + ByteOrTB(Size64(MemoryEx.HiTotalPageFile, MemoryEx.LoTotalPageFile)/oneMB, False) + ' всего, ' +
ByteOrTB((Size64(MemoryEx.HiTotalPageFile, MemoryEx.LoTotalPageFile) -
Size64(MemoryEx.HiAvailPageFile, MemoryEx.LoAvailPageFile))/oneMB, False) + ' занято системным кэшем'
if Size64(MemoryEx.HiTotalPageFile, MemoryEx.LoTotalPageFile)/oneMB < NeedPageFile then
begin
PageFileTotalPanel.Color := clBlack
PageFileTotalPanel.Font.Color := clRed
ChangeText := True
end

if ChangeText = True then
begin
TopText.Top := 0
TopText.Caption := 'Не все компоненты удовлетворяют минимальным требованиям игры.' #13
'Пожалуйста, проверьте позиции, выделенные красным цветом.'
TopText.Font.Color := clRed
// WizardForm.NextButton.Enabled := False
end
else
begin
TopText.Caption := 'Все компоненты соответствуют минимальным требованиям игры.'
TopText.Font.Color := clGreen
TopText.Top := 8
// WizardForm.NextButton.Enabled := True
end
end;

procedure InitializeWizard();
begin
InfoPage := CreateCustomPage(wpLicense, 'Аппаратное и программное обеспечение',
'Программа установки обнаружила следующие наобходимые компоненты.')
CreateCheckForm() // Создание объектов TMemo, в которых будет выводится информация о системе
UpdateInfo() // Обновление информации о системе
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = InfoPage.ID then UpdateInfo() // Обновление информации о системе
end;




© OSzone.net 2001-2012