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

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

Автор: SotM
Дата сообщения: 26.11.2010 12:11
troyan90
я просто не знаю зачем вообще нужно лезть в HKEY_USERS, когда для этого есть другая ветка реестра.
Автор: Gnom3
Дата сообщения: 26.11.2010 12:15
Dmitro25
Попробуй так:

Код:
[Setup]
AppName=MyApp
AppVerName=MyApp v1.0
OutputBaseFilename=setup{#AppVerName}
Автор: Dmitro25
Дата сообщения: 26.11.2010 12:50
2Gnom3:
Спасибо, получилось. Пришлось установить ISPP.
В результате скрипт такой:

Код:
[Setup]
#define MyAppName "MyProg"
#define MyAppVer GetFileVersion("D:\MyProg\MyProg.exe")
...
AppName={#MyAppName}
AppVersion={#MyAppVer}
...
OutputBaseFilename=setup_{#MyAppName}_{#MyAppVer}
Автор: Gnom3
Дата сообщения: 26.11.2010 12:55
Dmitro25

Цитата:
[Setup]
#define MyAppName "MyProg"
#define MyAppVer GetFileVersion("D:\MyProg\MyProg.exe")
...

Правильней будет так:

Код:
#define MyAppName "MyProg"
.......
[Setup]
AppName={#MyAppName}
AppVersion={#MyAppVer}
...
OutputBaseFilename=setup_{#MyAppName}_{#MyAppVer}
Автор: nik1967
Дата сообщения: 26.11.2010 12:55
Gnom3
С твоим скриптом, который ты скинул(по поводу замены ISDone) всё не так просто, как казалось бы. Во 1 ты удалил InnoCallback.dll, а эта dll-ка кроме того, что не нужна стала в ISDone, требуется для другого. Во 2 скрипт NFSU реализован на botva2.dll от htuos, а пример скрипта ISDone реализован для классического Inno. И просто замена в модуле ISDone.iss ничего не даст(точнее даст кучу ошибок). Вот когда Profrager выложит финальную пятёрку, тогда и переделаем скрипт Need for Speed™ Undercover.iss v 2.2 [Final] + ISDone.
Автор: Gnom3
Дата сообщения: 26.11.2010 12:57
nik1967
Спасибо
Буду ждать с нетерпением Need for Speed™ Undercover с ISdone 5
Автор: manuchu
Дата сообщения: 26.11.2010 14:01
Dmitro25

[Setup]
Outputbasefilename=setup_myApp_v1.5
Автор: Profrager
Дата сообщения: 26.11.2010 14:26
nik1967

Цитата:
Во 1 ты удалил InnoCallback.dll, а эта dll-ка кроме того, что не нужна стала в ISDone, требуется для другого
надо будет в isdone.dll сделать аналог функции из innocallback.dll, чтобы не таскать ее все время, тем более, что эта функция добавит не более 1кб к размеру библиотеки,а то и меньше.
Автор: nik1967
Дата сообщения: 26.11.2010 19:34
А пока обновил Xenus2+botva2+ISDone0.5L
Обновлён ISDone от Profrager (модуль и dll). Исправлены небольшие косяки в модулях FreeArc.iss, PB.iss
|Скачать|Скачать|
Автор: sjwrec
Дата сообщения: 26.11.2010 20:01
Нашёл кучу ошибок в работе своего скрипта.

1. Если отсоединить от скрипта хоть один модуль, ошибок не избежать.
2. Неверная инициализация модуля XVID. htuos тонко намекнул об этом.

Вобщем ждите обновление скрипта до версии 1.1
Забегая вперёд скажу, уже добавлен "Б.У.М" - Блок Управления Модулями.
Сейчас идёт плотное тестирование, чтобы избежать ошибок.
Автор: riperoc1
Дата сообщения: 27.11.2010 06:53
у меня маленький вопрос изменяю шрифт инсталятора ,будет ли он отображаться корректно на другом компьютере где нет такого шрифта
Автор: meekrab
Дата сообщения: 27.11.2010 07:33
riperoc1
Нет не будет,если вы хотите использовать этот шрифт его нужно установить в систему прежде чем запуститься инстал.
Автор: riperoc1
Дата сообщения: 27.11.2010 07:50
meekrab
жаль, придется стандартные использовать.спасибо за ответ
Автор: NiCKsOn123
Дата сообщения: 27.11.2010 08:11
meekrab
А закинуть шрифт в инсталл не получится?
Автор: Gnom3
Дата сообщения: 27.11.2010 09:57
NiCKsOn123
Получится, В моем любимом Need for Speed™ Undercover так и сделано
Автор: riperoc1
Дата сообщения: 27.11.2010 09:59
Помогите решить проблему.Пытаюсь растянуть картинку в окошке приветствия и картинку вверху,есть две процедуры InitializeWizard, одной из них приписываю 1, и почему то эта процедура незапускается,всмысле компилится нормально но в инстале не видно
Вот [more=скрипт]#define MyAppName "Dead Rising 2"
#define AppName "Dead Rising 2"

[Setup]
AppId={{DDA55E82-39A4-4692-999D-4B2A363241CE}
AppName={#AppName}
AppVerName={#MyAppName}
DefaultDirName={pf}\Dead Rising 2
DefaultGroupName=Dead Rising 2
DirExistsWarning=no
OutputBaseFilename=setup
;InternalCompressLevel=ultra64
;Compression=lzma/ultra64
;SolidCompression=true
DisableReadyPage=True
DiskSpanning=true
DiskSliceSize=1063004405
SlicesPerDisk=3
WizardImageFile=Files\1.bmp
WizardImageStretch=False
WizardSmallImageFile=Files\logo.bmp
[Files]
Source: Files\button.bmp; DestDir: {tmp}; Flags: dontcopy
Source: Files\1.bmp; DestDir: {tmp}; Flags: dontcopy
;Source: Files\isgsg.dll; DestDir: {tmp}; Flags: dontcopy

Code
const
ButtonWidth = 80; //????????? ?????? ??????
ButtonHeight = 23;

bidBack = 0;
bidNext = 1;
bidCancel = 2;
bidDirBrowse = 3;
bidGroupBrowse = 4;
//***********************Ïåðåìåííûå***********************\\
var
PageNameLabel,PageDescriptionLabel:TLabel;
WelcomeLabel1, WelcomeLabel2: TLabel;
BmpFile: TBitmapImage;

//***********************Êîíåö-Ïåðåìåííûå***********************\\

procedure InitializeWizard();
begin
with WizardForm do begin
with MainPanel do
Height := Height - 1;
with WizardSmallBitmapImage do begin
Left := 0;
Top := 0;
Height := 60; //Ðàçìåð ðèñóíêà
Width := 500; //
end;
with PageNameLabel do begin
Width := Width - 497; //Ïîñòàâüòå çäåñü çíà÷åíèÿ íà 0, åñëè õîòèòå âåðíóòü òåêñò
Left := Left + 497; //
end;
with PageDescriptionLabel do begin
Width := Width - 497; //Ïîñòàâüòå çäåñü çíà÷åíèÿ íà 0, åñëè õîòèòå âåðíóòü òåêñò
Left := Left + 497; //
end;
end;
end;

//***********************Èçîáðàæåíèå èíñòàëà***********************\\
procedure InitializeWizard();
begin
ExtractTemporaryFile('1.bmp');

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 497, 313); // ðàçìåð êàðòèíêè
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.WelcomePage;

with WizardForm do
begin
WelcomeLabel1.Hide;
WelcomeLabel2.hide;
end;

WelcomeLabel1:= TLabel.Create(WizardForm);
with WelcomeLabel1 do
begin
Left:= ScaleX(176);
Top:= ScaleY(66);
Width:= ScaleX(301);
Height:= ScaleY(71);
AutoSize:= false;
Transparent:= true;
WordWrap:= true;
Parent:= WizardForm.WelcomePage;
Caption:= WizardForm.WelcomeLabel1.Caption;
end;

WelcomeLabel2:=TLabel.Create(WizardForm);
with WelcomeLabel2 do
begin
Top:= ScaleY(136);
Left:= ScaleX(176);
Width:= ScaleX(301);
Height:= ScaleY(300);
AutoSize:= false;
WordWrap:= true;
Transparent:= true;
Parent:= WizardForm.WelcomePage;
Caption:= WizardForm.WelcomeLabel2.Caption;
end;
end;
//***********************Êîíåö-Èçîáðàæåíèå èíñòàëà***********************\\

procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:=False;
Confirm:=False;
if MsgBox('Âû äåéñòâèòåëüíî õîòèòå îòìåíèòü óñòàíîâêó {#MyAppName}? ', mbError, MB_YESNO) = idYes
then
Cancel:=true;
end;
[/more]

Добавлено:
всё спасибо не надо объёденил процедуры всё получилось
Автор: phants
Дата сообщения: 27.11.2010 10:11
Помогите.
Хочу сделать для себя RePack из трех игр - S.T.A.L.K.E.R., S.T.A.L.K.E.R.: Чистое Небо, S.T.A.L.K.E.R.: Зов Припяти. Т.е. имеются лиц.диски этих игр, скачаны последние обновления.

1. В общем не так всё просто. То есть инсталл лицензионный, лезет наверно в реестр, и там собирает инфу о системе. Потом высвечивает что мол все требования ок, или не совсем ок. Об оп. системе видюхе, проце папке пользователя и т.д. На основе этих данных один файл в директорию игры не просто копируется, а конфигурируется инсталлом и копируется. То есть если ОС виста, то путь до папки пользователя в этом файле меняется, на другой, чем у XP. Далее в папку пользователя (не в игру) копируется конфиг. Но тоже не тупо копируется, а конфигурируется на основе инфы о системе.
Если это не сделать. То игра запускается. И при запуске создаётся стандартный конфиг. В котором блум, шмум, или что то такое стандартное написано, что в игре всё как то мрачновато выглядит.
Есть тутор по этому делу?

2. Как сделать, чтобы при установке можно было выбрать, какую игру ставить, а какую нет?
Автор: Gnom3
Дата сообщения: 27.11.2010 11:06
phants
http://forum.ru-board.com/topic.cgi?forum=5&topic=35146&start=0&limit=1&m=1#1
Там далеко не все, но есть ответы на твои вопросы
Автор: nik1967
Дата сообщения: 27.11.2010 11:11
phants
[more=Тык ми]
Код: ;Всем известная игра S.T.A.L.K.E.R. при установке использует некоторые хитрости. Дело не в проверке системных требований или свободного
;места на диске. Самый важный момент при инсталляции перепакованной игры - создать правильный файл "fsgame.ltx". Данный файл представляет
;собой некоторый загрузчик данных. Любое неправильное его построение чревато глюками и неправильной работе игры. Чтобы создать абсолютно
;точную копию оригинала нужно выполнить следующий код (не забываем при сборке, чтобы файл "fsgame.ltx" был абсолютно пустой):
[_Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
S: String;
begin
If CurStep=ssPostInstall then
begin
S := ExpandConstant('{commondocs}\STALKER-SHOC\')
StringChangeEx(S, ':\', ':\|', True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$app_data_root$=true|false|' + S + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_data$ = false| true| $fs_root$| gamedata\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_ai$ = true| false| $game_data$| ai\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_spawn$ = true| false| $game_data$| spawns\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_anims$ = true| true| $game_data$| anims\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_levels$ = true| false| $game_data$| levels\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_meshes$ = true| true| $game_data$| meshes\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_dm$ = true| true| $game_data$| meshes\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_shaders$ = true| true| $game_data$| shaders\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_sounds$ = true| true| $game_data$| sounds\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_textures$ = true| true| $game_data$| textures\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_scripts$ = true| false| $game_data$| scripts\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_config$ = true| false| $game_data$| config\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$level$ = false| false| $game_levels$' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_saves$ = true| false| $app_data_root$| savedgames\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$logs$ = true| false| $app_data_root$| logs\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$screenshots$ = true| false| $app_data_root$| screenshots\' + #13, true);
end;
end;
Автор: NiCKsOn123
Дата сообщения: 27.11.2010 12:00
phants

1
[more=Сис. Требования]//************************************************ Начало - Сис. требования ***************************************************//
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 = 18003;
NeedVideoRAM = 12821;
NeedSoundCard = 'Creative X-Fi';
NeedMB = 5121;
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 := 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 := 'Процессор'
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 := 'Видеоадаптер'
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 := 'Звуковая карта'
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 := 'Объём памяти'
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 := 'Файл подкачки'
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 := $33CC00

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) Windows 7 (c любым SP или без него)
begin
SystemVersionPanel.Color := clRed
ChangeText := True
end

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

if not CheckCPU(NeedMHz) then
begin
ProcessorMHzPanel.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 := $33CC00

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

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

// Объём памяти:
RAMTotalPanel.Color := $33CC00
if not CheckMemorySize(NeedMB) then
begin
RAMTotalPanel.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 := $33CC00
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 := clRed
ChangeText := True
end

if ChangeText = True then
begin
TopText.Top := 0
TopText.Caption := 'Не все компоненты удовлетворяют минимальным требованиям.' #13
'Пожалуйста, проверьте позиции, выделенные красным цветом.'
TopText.Font.Color := clRed
WizardForm.NextButton.Enabled := True
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;
//************************************************ Конец - Сис. требования ***************************************************//[/more]

2
[more=Как сделать, чтобы при установке можно было выбрать, какую игру ставить, а какую нет?][Components]
Name: "a"; Description: "{cm:a}"; MinVersion: 4.0,5.0;Flags: exclusive;
Name: "b"; Description: "{cm:b}"; MinVersion: 4.0,5.0;Flags: exclusive;

[CustomMessages]
ru.a= Русская версия
ru.b= Английская версия

[Registry]
Components: a; Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Codemasters\DiRT2; ValueType: string; ValueName: LANGUAGE; ValueData: rus; Flags: uninsdeletekey
Components: b; Root: HKLM; SubKey: SOFTWARE\Wow6432Node\Codemasters\DiRT2; ValueType: string; ValueName: LANGUAGE; ValueData: eng; Flags: uninsdeletekey[/more]


nik1967
Плз помоги вшить FreeArc Уже по всякому пробовал всегда выскакивает " Undeclared identier: "n" "
http://rghost.ru/3394479
Автор: nik1967
Дата сообщения: 27.11.2010 12:56
NiCKsOn123
Без обид.
Возьми и задекларируй (пропиши) переменную "n".
Автор: NiCKsOn123
Дата сообщения: 27.11.2010 13:34
nik1967
там по мимо этого еще ппц ошибок...
Автор: Shegorat
Дата сообщения: 27.11.2010 13:49
NiCKsOn123
Пробуй http://rghost.ru/3395439
Автор: NiCKsOn123
Дата сообщения: 27.11.2010 13:57
Shegorat
Благодарю)) БИГ БИГ БИГ СЭНКС)
Автор: sjwrec
Дата сообщения: 27.11.2010 17:50
Обновление скрипта S.T.A.L.K.E.R. - Авто зона, до версии 1.1

| Скачать (19Кб) | [more=Описание]
===========================================================
S.T.A.L.K.E.R v1.1 - Обновление к скрипту
===========================================================

Новое в этом обновлении:
+ Добавлен "Б.У.М" - Блок Управления Модулями

+ Исправлен косяк с модулем XVID от Htuos - Спасибо Htuos за намёк.

+ Исправлен косяк с отключением AVI Video.
Теперь только всего лишь нужно закомментировать модуль XVID.iss

+ Исправлен косяк со страницей "Приветствие" -
если отключен модуль Skin2.iss то всё нормально.

+ Подправлен дочерний модуль Splash.iss. Теперь можно использовать
форму загрузки (только без Splash и иконки) без модуля Botva2.iss.

+ Подправлен дочерний модуль Image.iss. Теперь на MainForm
не наложится картинка без модуля Media.iss.

- Возможны всё ещё ошибки и мелкие недоработки, но как без них
Но я надеюсь что вы поможете мне найти их в этом обновлении.

---------------------------------------------------------------------------------------------------------------------
/ ! \ Внимание! Так как это всего лишь обновление, то файлы не выложены.
Скачайте предыдущую версию скрипта, и распакуйте эти
обновлённые файлы в тот скрипт.
---------------------------------------------------------------------------------------------------------------------

По всем ошибкам и недоработкам писать в личку
или на мыло: "sjwrec@yandex.ru", можно также отправлять скрины, только
небольшие и обязательно сжатые в архив

===========================================================
2010 © SJW Records, Inc - Сафронов Ярослав (sjwrec)
===========================================================
[/more] |

| Ещё одно исправление | [more]
===========================================================
S.T.A.L.K.E.R v1.1 а1 - Исправление к скрипту
===========================================================

Модуль XVID заменён на модуль XVID от South

Внесены изменения в Главный скрипт

Внесены изменения в модуль: Media.iss

===========================================================
2010 © SJW Records, Inc - Сафронов Ярослав (sjwrec)
===========================================================
[/more]
Автор: THE GUILTY GOD
Дата сообщения: 27.11.2010 18:50
sjwrec скачал твой обновлённый скрипт и прикомпиляции вылазит такая ошибка что делать!??
Автор: vasyaetoyaept
Дата сообщения: 27.11.2010 18:58
sjwrec
скинь старые файлы
где их взять?
Автор: sjwrec
Дата сообщения: 27.11.2010 18:59

Цитата:
sjwrec
скинь старые файлы
где их взять?


В шапке есть мой скрипт, там эти файлы.
Автор: FROST999
Дата сообщения: 27.11.2010 19:00
Не подскажите как точно AppID игры узнать?Если когда устанавливаешь оригинал ввода ключа не требуется?
Автор: sjwrec
Дата сообщения: 27.11.2010 19:06

Цитата:
sjwrec скачал твой обновлённый скрипт и прикомпиляции вылазит такая ошибка что делать!??


1. Попробуй скомпилить не через IsTool а на Inno 5.4.0 ResTools
2. На скрине не подсвечена ошибка.

Страницы: 12345678910111213

Предыдущая тема: µTorrent / uTorrent


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