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

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

Автор: troyan90
Дата сообщения: 20.06.2011 19:16
VicF1
isskinex.dll от restools поробуй.
Ссылка
Автор: Gnom3
Дата сообщения: 20.06.2011 19:33
VicF1
ПРоверь, чтобы в procedure DeinitializeSetup(); у тебя были такие строчки:


Код: ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkin();
Автор: Dark_Delphin
Дата сообщения: 20.06.2011 19:37
Всем добрый день!
Я вот разделил игру на два диска:

Код: DiskSpanning=true
SlicesPerDisk=2
DiskSliceSize=2100000000
Автор: Gnom3
Дата сообщения: 20.06.2011 20:10
Dark_Delphin
SlicesPerDisk - количество частей на диск, а не количество дисков. Инно не может разбить на какоето количество дисков, потому, что только господь бог ведает, какой объем получится у тебя после компиляции. что еще ты сделал, кроме добавления строчек? как записал на диск получившиеся бин-файлы?
Автор: syncmaster775
Дата сообщения: 20.06.2011 20:51
протестируйте инстал
http://rghost.ru/11767321
Автор: Shank
Дата сообщения: 20.06.2011 21:17
syncmaster775
И снова ты, объем "инстала", радует
Но вирус так и не спрятал ))) Удачи.
Автор: Shegorat
Дата сообщения: 20.06.2011 21:18
syncmaster775 21:51 20-06-2011
Цитата:
протестируйте инстал  
http://rghost.ru/11767321

Опять вирус? Что на этот раз, что он делает? Мне лень качать...
Dark_Delphin 20:37 20-06-2011
Цитата:
Всем добрый день! Я вот разделил игру на два диска:

Как Gnom3 уже сказал

Цитата:
SlicesPerDisk=2
- число частей на диск

Цитата:
DiskSliceSize=2100000000
-размер одной части в байтах, в данном случае 1.91 Гб

Автор: VicF1
Дата сообщения: 20.06.2011 22:47

Цитата:
VicF1
isskinex.dll от restools поробуй.

Цитата:
VicF1
ПРоверь, чтобы в procedure DeinitializeSetup();  у тебя были такие строчки:
Код:
   ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
   UnloadSkin();
строго в этом порядке (сперва обнуление окна, потом выгрузка скина. Вместе эти строчки отвечают за выгрузку скина из памяти, и отсутствие любой из них может вызвать твою ошибку.

troyan90
Попробовал, ошибка сохранилась.
Gnom3
Есть, порядок правильный. Ошибка сохранилась.
Может дело в том, что я использую Inno Setup QuickStart Pack 5.4.2 ?
Спасибо за внимание.
Автор: Dark_Delphin
Дата сообщения: 20.06.2011 23:12

Цитата:
syncmaster775 21:51 20-06-2011
Цитата: протестируйте инстал  
http://rghost.ru/11767321

Опять вирус? Что на этот раз, что он делает? Мне лень качать...
Dark_Delphin 20:37 20-06-2011
Цитата:
Всем добрый день! Я вот разделил игру на два диска:

Как Gnom3 уже сказал

Цитата:
SlicesPerDisk=2
- число частей на диск

Цитата:
DiskSliceSize=2100000000
-размер одной части в байтах, в данном случае 1.91 Гб
Автор: SotM
Дата сообщения: 20.06.2011 23:29
А вот и "тест" инсталла от syncmaster775
virustotal.com
Автор: Shegorat
Дата сообщения: 21.06.2011 05:11
Dark_Delphin 00:12 21-06-2011
Цитата:
Так всеравно требует сразу же второй диск.

Как ты разделил бины на диски? И еще покажи секцию files

SotM 00:29 21-06-2011
Цитата:
А вот и "тест" инсталла от syncmaster775
virustotal.com

Ну чтож прогресс... Только лучше бы он чем-нибудь полезным занялся. Да к стати из той же породы Кряк для любой проги
Автор: Cancer_to_Shanghai
Дата сообщения: 21.06.2011 13:50
Сабж сможет, чтобы после распаковки, он запустил reg-файл, где была бы указана буква диска, куда распаковалась искомая папка: "InstallFolder"="с: и "target folder"="с:
То есть, если игра ставилась на другой раздел, не на C:, то так бы и указалось в реестре..

[more]"Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\CDV Software Entertainment AG]

[HKEY_LOCAL_MACHINE\SOFTWARE\CDV Software Entertainment AG\]
"InstallFolder"="с:\\"
"InstallStatus"="Installed"
"UninstallFolder"="E:\\Program Files\\InstallShield Installation Information\\{9DE055AC-B196-406B-9484-221938F6FC0B}"
"GroupFolder"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\CDV Software Entertainment AG\\Deutsch]
"target folder"="с:\\""[/more]
Я из него удалил тока название игры .....

Сумеет ли изменить букву на нужную!?

Автор: moonlight82
Дата сообщения: 21.06.2011 14:06
Cancer_to_Shanghai
Можно обойтись и без запуска reg файла, для этого нужно воспользоваться секцией [Registry] в инно.
Converter REG to Inno Setup сможет помочь переделать reg файл в код инно.
Автор: Dark_Delphin
Дата сообщения: 21.06.2011 15:31

Цитата:
Dark_Delphin 00:12 21-06-2011
Цитата: Так всеравно требует сразу же второй диск.

Как ты разделил бины на диски? И еще покажи секцию files
Автор: Sergey_Demchuk
Дата сообщения: 21.06.2011 16:21
Есть у кого примерчик скрипта для страницы выбора компонентов? Хотелось бы покрасивее чекбоксы, чтобы подменю чекбоксов было возможно сворачивать-разворачивать, может уже просто кто то делал ...
Пользую пока такой код
[more]
[Files]
Source: "compiler:dll pack\descctrl.dll"; Flags: dontcopy solidbreak noencryption

[Messages]
ComponentsDiskSpaceMBLabel=

[Code]
var
Check: array [0..12] of TCheckBox;

function enabledesc(ComponentsListHandle: HWND; DescLabelHandle: HWND; DescStrings: PChar): BOOL; external 'enabledesc@files:descctrl.dll stdcall';
function disabledesc(): BOOL; external 'disabledesc@files:descctrl.dll stdcall';

var
Info: TNewStaticText;
InfoCaption: TNewStaticText;
InfoPanel: TPanel;

procedure DeinitializeSetup2();
begin
disabledesc();
end;

procedure OnClick(Sender: TObject);
begin
Case Sender of
WizardForm .TasksList.Checked[6]: if WizardForm .TasksList.Checked[6]=true then WizardForm.TasksList.Checked[11]:=false;
WizardForm.TasksList.Checked[11]: if WizardForm.TasksList.Checked[11]=true then WizardForm.TasksList.Checked[6]:=false;
end;
MsgBox('1', mbInformation, MB_OK);
end;

procedure InitializeWizard3();
begin
WizardForm.TypesCombo.Visible:=False;
//WizardForm.TypesCombo.Top:=WizardForm.TypesCombo.Top-30
WizardForm.ComponentsList.Height := ScaleY(181) - WizardForm.TypesCombo.Top;
WizardForm.ComponentsList.Top := WizardForm.TypesCombo.Top;
WizardForm.ComponentsList.Width := ScaleX(417);

InfoPanel := TPanel.Create(WizardForm);
InfoPanel.Parent := WizardForm.SelectComponentsPage;
InfoPanel.Caption := '';
InfoPanel.Top := ScaleY(190);
InfoPanel.Left := ScaleX(0);
InfoPanel.Width := ScaleX(417);
InfoPanel.Height := ScaleY(58);
InfoPanel.BevelInner := bvRaised;
InfoPanel.BevelOuter := bvLowered;
InfoCaption := TNewStaticText.Create(WizardForm);
InfoCaption.Parent := WizardForm.SelectComponentsPage;
InfoCaption.Caption := ExpandConstant('{cm:ComponentsInfoPanel1}');
InfoCaption.Left := ScaleX(7);
InfoCaption.Top := InfoPanel.Top - ScaleY(6);
InfoCaption.Font.Color := clActiveCaption;

Info := TNewStaticText.Create(WizardForm);
Info.Parent := InfoPanel;
Info.AutoSize := False;
Info.Left := ScaleX(6);
Info.Width := ScaleX(403);
Info.Top := ScaleY(12);
Info.Height := ScaleY(24);
Info.Caption := ExpandConstant('{cm:ComponentsInfoPanel2}');
Info.WordWrap := true;

enabledesc(WizardForm.ComponentsList.Handle,Info.Handle,
ExpandConstant('{cm:ComponentsDescription1};')+
ExpandConstant('{cm:ComponentsDescription2};')+
ExpandConstant('{cm:ComponentsDescription3};')+
ExpandConstant('{cm:ComponentsDescription4};')+
ExpandConstant('{cm:ComponentsDescription5};')+
ExpandConstant('{cm:ComponentsDescription6};')+
ExpandConstant('{cm:ComponentsDescription7};')+
ExpandConstant('{cm:ComponentsDescription8};')+
ExpandConstant('{cm:ComponentsDescription9};')+
ExpandConstant('{cm:ComponentsDescription10};')+
ExpandConstant('{cm:ComponentsDescription11};')+
ExpandConstant('{cm:ComponentsDescription12};')+
ExpandConstant('{cm:ComponentsDescription13};')+
ExpandConstant('{cm:ComponentsDescription14};')+
ExpandConstant('{cm:ComponentsDescription15};')+
ExpandConstant('{cm:ComponentsDescription16};')+
ExpandConstant('{cm:ComponentsDescription17};')+
ExpandConstant('{cm:ComponentsDescription18};')+
ExpandConstant('{cm:ComponentsDescription19};')+
ExpandConstant('{cm:ComponentsDescription20};')+
ExpandConstant('{cm:ComponentsDescription21};')+
ExpandConstant('{cm:ComponentsDescription22};')+
ExpandConstant('{cm:ComponentsDescription23};')
);

end;
[/more]
Автор: moonlight82
Дата сообщения: 21.06.2011 18:26
Sergey_Demchuk
Вот пример custom components от ResTools
http://rghost.ru/11870201
Автор: Dark_Delphin
Дата сообщения: 21.06.2011 19:32

Цитата:
Dark_Delphin 00:12 21-06-2011
Цитата: Так всеравно требует сразу же второй диск.

Как ты разделил бины на диски? И еще покажи секцию files
Автор: Shegorat
Дата сообщения: 21.06.2011 19:39
Dark_Delphin 20:32 21-06-2011
Цитата:
Setup-1a.bin и Setup-1b.bin  на один диск.
Setup-2a.bin и Setup-2b.bin  на второй.

А теперь читаем справку

Цитата:
If set to yes, the disk spanning feature will be enabled. Instead of storing all the compressed file data inside SETUP.EXE, the compiler will split it into multiple SETUP-*.BIN files -- known as "slices" -- suitable for copying onto separate floppy disks, CD-ROMs, or DVD-ROMs. Each generated slice contains a number in its name which indicates the disk onto which it should be copied. (For example, SETUP-2.BIN should be placed on disk 2.) The generated SETUP.EXE always goes on disk 1 along with the SETUP-1*.BIN file.

Т.е тебе нужно все setup-1*.bin перенести на первый диск, а все setup-2*.bin на второй

Еще вопрос у тебя есть какие либо файлы, использующиеся в инсталляторе? Если да, то перенеси их в начало секции files.
Автор: OXXXXYGEN
Дата сообщения: 21.06.2011 20:49
Всем привет. Решил сделать свой инстал почти с нуля. Но, прошу дать основу. А именно простой скрипт с isDone. После того как сделаю, выложу его тут
Автор: Dark_Delphin
Дата сообщения: 21.06.2011 21:14
Shegorat, спасибо.
Всё так просто, а я совсем не подумал.
Спасибо.
Автор: Shank
Дата сообщения: 21.06.2011 21:21
OXXXXYGEN
Вам Сюда http://forum.ru-board.com/topic.cgi?forum=5&topic=34920 А вот тут можно скачать http://rghost.ru/5215591
Молодой человек
Автор: OXXXXYGEN
Дата сообщения: 21.06.2011 21:50
Shank
спасибо. т.е все. можно вставлять изображения, растягивать менять цвет и т.д?
Автор: moonlight82
Дата сообщения: 21.06.2011 22:44
OXXXXYGEN
Да! Делай все что душе угодно
Автор: REALYAROHA
Дата сообщения: 22.06.2011 08:31
Добрый день всем! Дайте скрипт пожалуйста на обводку картинки и на положения текста
Вот пример: http://s51.radikal.ru/i132/1106/f2/2c1bb1f0fffe.jpg
Автор: FunnyRabbit
Дата сообщения: 22.06.2011 08:45
REALYAROHA
Это не скрипт ,это сделано поверх картинки в фотошопе...
Автор: REALYAROHA
Дата сообщения: 22.06.2011 09:03
Это не в фотошопе делалось ты скачай скрипт xenus и посмотри файлы
Автор: shidow
Дата сообщения: 22.06.2011 12:22
Подскажите как Ultimate Test от VinTagE изменять версию Windows?
[more]
[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 = 1800;
NeedVideoRAM = 128;
NeedSoundCard = 'Creative X-Fi';
NeedMB = 512;
NeedPageFile = 1024;

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 := clBlack
Left := 0
Top := 200
AutoSize := True
end

SystemPanel := TMemo.Create(InfoPage)
with SystemPanel do
begin
Text := 'Система'
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := ScaleY(33)
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := $EEEEEE
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 := 'Процессор'
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := SystemPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := $EEEEEE
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 := 'Видеоадаптер'
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := ProcessorPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := $EEEEEE
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 := 'Звуковая карта'
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := VideoPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := $EEEEEE
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 := 'Объём памяти'
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := AudioPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := $EEEEEE
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 := 'Файл подкачки'
Alignment := taCenter
Parent := InfoPage.Surface
Left := ScaleX(0)
Top := RAMPanel.Top + 27
Width := ScaleX(100)
Height := ScaleY(22)
ReadOnly := True
Color := $EEEEEE
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 := $CCFFCC

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('Vista', SystemVersionPanel.Text) = 0) and // Windows Vista (c любым SP или без него)
(Pos('7', SystemVersionPanel.Text) = 0) then // Windows 7
begin
SystemVersionPanel.Color := $CCCCFF
ChangeText := True
end

// Процессор:
ProcessorMHzPanel.Color := $CCFFCC

if not CheckCPU(NeedMHz) then
begin
ProcessorMHzPanel.Color := $CCCCFF
ChangeText := True
end

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

// Видеокарта:
VideoRAMPanel.Color := $CCFFCC

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 := $CCCCFF
ChangeText := True
end
if (DeviceValue/oneMB < NeedVideoRAM) then
begin
VideoRAMPanel.Color := $CCCCFF
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 := $CCFFCC

// 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 := $CCCCFF
ChangeText := True
end
else
AudioNamePanel.Text := Keys[0]
if Pos(NeedSoundCard, AudioNamePanel.Text) = 0 then
AudioNamePanel.Text := AudioNamePanel.Text + ' (рекомендуется ' + NeedSoundCard + ')'

// Объём памяти:
RAMTotalPanel.Color := $CCFFCC
if not CheckMemorySize(NeedMB) then
begin
RAMTotalPanel.Color := $CCCCFF
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 := $CCFFCC
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 := $CCCCFF
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;
[/more]
Автор: Edison007007
Дата сообщения: 22.06.2011 12:33
REALYAROHA
А теперь возьми зайди в папку InstallFiles и посмотри внимательно на файл Workspace.png
Автор: Brabusdark
Дата сообщения: 22.06.2011 13:09
можешь кто нибудь нормально растянуть изображение в скрипте(WizardSmallImage и WizardImage)
вот скрипт http://rghost.ru/11947911
заранее спасибо
Автор: REALYAROHA
Дата сообщения: 22.06.2011 14:41
Дайте скрипт на положение текста и шрифтаhttp://i074.radikal.ru/1106/d3/47e2383c5c57.jpg

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

Предыдущая тема: поиск


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