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

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

Автор: Snake193
Дата сообщения: 05.03.2009 13:47
WinstAn70
Не, я сам не силен в этом деле. Максимум делал прогресс бар как в примерах к инно.
Автор: WinstAn70
Дата сообщения: 05.03.2009 14:26
Snake193
Ты же для precomp'а сделал может с ним поможешь!
Автор: Igrock2007
Дата сообщения: 05.03.2009 15:36
На 28 странице задавал вопрос, но не отвентили - можно ли решить этот косяк при использовании NSIS_SkinCrafter посмотрите пожалуйста, очень надо!
Автор: Snake193
Дата сообщения: 05.03.2009 15:41
Тут не прогресс-бар, обычный запуск precomp с параметрами в коммандной строке.
Автор: DeKaNszn
Дата сообщения: 05.03.2009 15:49
Как через секцию Code заменить "Выберите компоненты, которые Вы хотите установить" на свой текст (зависит от условий, изменение языкового файла не подходит)
Автор: serg566
Дата сообщения: 05.03.2009 21:11
Нужна помощь.. Хочу создать патч, нужно при запуске патча если не установлена игра выпадало сообщение "Игра не найдена", если установлена сообщение "Игра будет обновлена..." при нажатии "ок" сразу идет авто установка в каталог установленной игры" после установки патча выпадало сообщение "Игра обновлена" но после повторного запуска патча должно выпадать сообщении "Игра уже обновлена" вообщем что то вроде этого. Помогите...
Автор: kombat 77
Дата сообщения: 05.03.2009 21:52
serg566

Цитата:
Нужна помощь.. Хочу создать патч, нужно при запуске патча если не установлена игра выпадало сообщение "Игра не найдена", если установлена сообщение "Игра будет обновлена..." при нажатии "ок" сразу идет авто установка в каталог установленной игры" после установки патча выпадало сообщение "Игра обновлена" но после повторного запуска патча должно выпадать сообщении "Игра уже обновлена" вообщем что то вроде этого. Помогите...

попробую помочь.
Автор: DeKaNszn
Дата сообщения: 06.03.2009 08:42
Я нашел решение своего вопроса

если кому надо:


Код: Procedure CurPageChanged(CurPageID: Integer);
Begin
if CurPageID=wpSelectComponents
then WizardForm.SelectComponentsLabel.caption:='ваш_текст';
end;
Автор: inn0id
Дата сообщения: 06.03.2009 12:23
Ребята никто со скулём не общался из ИННО ?

Если да, до через АДО или ДМО?, помогите пожалуйста, есть примеры?

Главное, что мне нужно это ето екзекьютнуть скрипт и получить ответ, юзая АДО до сервера достукиваюсь, скрипт делает, а результат выполнения скрипта никак не получить
Автор: serg566
Дата сообщения: 06.03.2009 12:30
kombat 77

Цитата:
попробую помочь.

Спасиб... ждем

Автор: inn0id
Дата сообщения: 06.03.2009 13:24
Если кому интересно, поковырял, сделал пока так.


Код: function ... ;

var
SQLServer,: Variant;
res: Variant;
mes: string;
begin
SQLServer:=CreateOleObject('ADODB.Connection');
SQLServer.Open('PROVIDER=SQLOLEDB;Data Source=%YOURSERVER%;Initial Catalog=%YOURBASENAME%;User ID=sa;Password=%SAPASSWORD%' );
mes:='%YOURSQLQUERYTEXT%';
res:=SQLServer.Execute(mes);
mes:=res.GetString;
MsgBox(mes, MBinformation, mb_OK);
...
...
//Закрыть все соединения
end;
Автор: noiseless
Дата сообщения: 06.03.2009 13:58
inn0id
Пример из "Inno Setup Extensions Knowledge Base" (см. шапку):
How to test a SQL Server connection with ADO [more]
; Inno Setup 5.0.8

[Setup]
AppName=TestLoginADO
AppVerName=TestLoginADO
Uninstallable=false
UpdateUninstallLogAppName=false
DisableDirPage=false
DisableProgramGroupPage=true
DefaultDirName={pf}\TestLoginADO
DisableStartupPrompt=true
CreateAppDir=false
OutputBaseFilename=TestLoginADO
AllowUNCPath=false


[Code]

function TestADOConnection( server, username, password: String ) : Boolean;
var
adocon: Variant;
adostr: String;
begin

Result := false;

adostr := 'Provider=SQLOLEDB.1;Persist Security Info=False;' +
'User ID='+ username +';Data Source=' + server +
';Password=' + password;

try
adocon := CreateOleObject('ADODB.Connection');
except
RaiseException('Please install ADO (MDAC) first.'#13#13+
'(Error ''' + GetExceptionMessage + ''' occurred)');
end;

try
adocon.Open( adostr );
except
RaiseException('Error Connecting.'#13#13'(Error ''' + GetExceptionMessage + ''' occurred)');
end;

Result := true;

end;


#include "TestLoginADO.isd"

procedure InitializeWizard();
begin
    LoginSQL_CreatePage(wpWelcome);
end;
[/more]
Автор: Qarma
Дата сообщения: 06.03.2009 15:48
Для чего это и как работает, можете подробно расписать что за комманды используятся и так далее...
Вот код
Filename: "{app}\GameDataSP1.exe"; WorkingDir: "{app}"; Parameters: "-x -y -s2 -d."; StatusMsg: "Идет распаковка данных, подождите пожалуйста..."; Flags: runminimized runasoriginaluser
Filename: "cmd.exe"; WorkingDir: "{app}"; Parameters: "/C del /F /Q GameDataSP1.exe"; Flags: runhidden runasoriginaluser


И ещё это:
Filename: "{app}\rep.exe"; WorkingDir: "{app}"; Parameters: "Layer01.pcf.rep"; StatusMsg: "Восстанавливаются игровые архивы, 3% выполнено..."; Flags: runminimized runasoriginaluser
Filename: "cmd.exe"; WorkingDir: "{app}"; Parameters: "/C del /F /Q Layer01.pcf.rep"; Flags: runminimized runasoriginaluser
Filename: "{app}\precomp.exe"; WorkingDir: "{app}"; Parameters: "-o""Layer01.Arch01"" -r ""Layer01.pcf"""; StatusMsg: "Восстанавливаются игровые архивы, 6% выполнено..."; Flags: runminimized runasoriginaluser
Filename: "cmd.exe"; WorkingDir: "{app}"; Parameters: "/C del /F /Q Layer01.pcf"; Flags: runhidden runasoriginaluser



ПОМОГИТЕ!
Автор: EagleSH
Дата сообщения: 06.03.2009 16:06
Qarma
информация в StatusMsg сама отвечает на твои вопросы

п.с. решил поковырять сдменовский репак фира2
Автор: Qarma
Дата сообщения: 06.03.2009 17:07

Цитата:
п.с. решил поковырять сдменовский репак фира2

Типа того, за что отвечает это
Filename: "{app}\rep.exe"; WorkingDir: "{app}"; Parameters: "Layer01.pcf.rep"; StatusMsg: "Восстанавливаются игровые архивы, 3% выполнено..."; Flags: runminimized runasoriginaluser
Filename: "cmd.exe"; WorkingDir: "{app}"; Parameters: "/C del /F /Q Layer01.pcf.rep"; Flags: runminimized runasoriginaluser
Filename: "{app}\precomp.exe"; WorkingDir: "{app}"; Parameters: "-o""Layer01.Arch01"" -r ""Layer01.pcf"""; StatusMsg: "Восстанавливаются игровые архивы, 6% выполнено..."; Flags: runminimized runasoriginaluser
Filename: "cmd.exe"; WorkingDir: "{app}"; Parameters: "/C del /F /Q Layer01.pcf"; Flags: runhidden runasoriginaluser
Автор: EagleSH
Дата сообщения: 06.03.2009 17:26
Qarma

Цитата:
Filename: "{app}\rep.exe"; WorkingDir: "{app}"; Parameters: "Layer01.pcf.rep"; StatusMsg: "Восстанавливаются игровые архивы, 3% выполнено..."; Flags: runminimized runasoriginaluser

восстанавливаем из Layer01.pcf.rep Layer01.pcf

Цитата:
Filename: "cmd.exe"; WorkingDir: "{app}"; Parameters: "/C del /F /Q Layer01.pcf.rep"; Flags: runminimized runasoriginaluser

удаляем Layer01.pcf.rep

Цитата:
Filename: "{app}\precomp.exe"; WorkingDir: "{app}"; Parameters: "-o""Layer01.Arch01"" -r ""Layer01.pcf"""; StatusMsg: "Восстанавливаются игровые архивы, 6% выполнено..."; Flags: runminimized runasoriginaluser

восстанавливаем Layer01.Arch01 из Layer01.pcf

Цитата:
Filename: "cmd.exe"; WorkingDir: "{app}"; Parameters: "/C del /F /Q Layer01.pcf"; Flags: runhidden runasoriginaluser

удаляем Layer01.pcf
Автор: kombat 77
Дата сообщения: 06.03.2009 20:01
serg566

Цитата:
Спасиб... ждем
Дык нужны условия, чего искать, чего проверять, чего обновлять. (реестр и.т.д)
Автор: serg566
Дата сообщения: 06.03.2009 22:47
kombat 77

Цитата:
Дык нужны условия, чего искать, чего проверять, чего обновлять. (реестр и.т.д)

[more][Registry]
Root: HKLM; Subkey: Software\THQ\Dawn Of War 2; Flags: uninsdeletekey
Root: HKLM; Subkey: Software\THQ\Dawn Of War 2; ValueType: string; ValueName: InstallPath; ValueData: {app}[/more]
Автор: DeKaNszn
Дата сообщения: 06.03.2009 23:36
serg566

Попробуй [more][no][Setup]
AppId={{6E066D65-D7BF-4010-B2B6-CE7FCBE4A283}
AppName=My Program
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={code:getPath}
DisableDirPage=true
DefaultGroupName=My Program
DisableProgramGroupPage=true
OutputBaseFilename=setup
Compression=lzma/ultra64
SolidCompression=true
InternalCompressLevel=ultra64
RestartIfNeededByRun=false
DisableFinishedPage=true
FlatComponentsList=false
DisableReadyPage=true
Uninstallable=false

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

[Code]
const
file_MD5 = 'здесь_MD5_хэш_пропатченного файла';
filename = 'здесь_имя_пропатченного файла';
subkey = 'Software\THQ\Dawn Of War 2';
param = 'InstallPath';

function getPath(a:string):string;
begin
RegQueryStringValue(HKLM, subkey, param, Result);
end;

function InitializeSetup():boolean;
begin
If not RegValueExists(HKLM, subkey, param)
Then begin
MsgBox('Игра не найдена', mbError, MB_OK);
Result:=false;
end
Else
If GetMD5OfFile(getPath(param) + '\' + filename) = file_MD5
Then begin
MsgBox('Игра уже обновлена', mbInformation, MB_OK);
Result:=false;
end
Else begin
MsgBox('Игра будет обновлена...', mbInformation, MB_OK);
Result:=true;
end;
end;[/no][/more]
Автор: kombat 77
Дата сообщения: 06.03.2009 23:50
serg566 Ну или вот [more=Вариант]


[Setup]
AppName=My Program
AppVerName=My Program v 1.0
DefaultDirName={code:GetInstallDir}
DirExistsWarning=False
DisableReadyPage=True
DisableFinishedPage=True
OutputDir=.

[Code]
function GetInstallDir(Dir: string): string;
begin
Dir := '';
RegQueryStringValue(HKLM, 'Software\THQ\Dawn Of War 2','InstallPath', Dir);
Result := Dir;
end;

function InitializeSetup(): Boolean;
var
S: String;
begin
Result := True;
S := ExpandConstant('{code:GetInstallDir}');
if S = '' then
begin
SuppressibleMsgBox('Игра Dawn Of War 2 не найдена!', mbCriticalError, MB_OK, MB_OK);
Result := False;
Exit;
end;

{
условия необходимые для определения обновлялась игра или нет,
размер или наличие новых файлов, запись в реестре,
наличие деинсталлятора патча,
в данном случае проверяется наличие деинсталлятора
--> проверка ... если условие выполняется Result := False
}

if MsgBox('Игра Dawn Of War 2 найдена, желаете обновить игру сейчас?', mbConfirmation, MB_YESNO) = IDNO then
Result := False;
Exit;
end;

procedure CurPageChanged(CurPageID: Integer);
var
S: String;
begin
if CurPageID = wpWelcome then
S := ExpandConstant('{code:GetInstallDir}');
if S <> '' then
WizardForm.NextButton.OnClick(WizardForm.NextButton);

if CurPageID = wpSelectDir then
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;

[/more]
ЗЫ DeKaNszn слегка опередил немного попомогать.
Автор: Snake193
Дата сообщения: 07.03.2009 00:38
Вообще реализовать свой откат установки, в обход стандартного сообщения можно или нет? К тому же в этом скрипте функция OnClick работать не будет, т.к. нажимаю на кнопку в сообщении.

procedure MyException(Error: String);
begin
MsgBox(Error, mbCriticalError, MB_OK or MB_DEFBUTTON1);
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
PhysXexe: string;
begin
path:=ExpandConstant('{app}');
PhysXexe:='PhysX_7.03.21_SystemSoftware.exe';

if (CurStep=ssPostInstall) then
begin
case (MsgBox('Вы хотите установить "AGEIA PhysX 7.03.21" на Ваш компьютер?', mbConfirmation, MB_YESNO or MB_DEFBUTTON1)) of
IDYES:
if (FileExists(AddBackslash(path) + PhysXexe)) then
begin
if not (Exec(AddBackslash(path) + PhysXexe, '', ExtractFilePath(AddBackslash(path) + PhysXexe), SW_SHOW, ewWaitUntilTerminated, ResultCode)) then
begin
MyException('Неизвестная ошибка! Невозможно выполнить файл:' + #13#10#13#10 + (AddBackslash(path) + PhysXexe));
end
end else begin
MyException('Исполняемый файл:' + #13#10#13#10 + (AddBackslash(path) + PhysXexe) + #13#10#13#10 + 'не найден.');
// -----> WizardForm.CancelButton.OnClick(WizardForm.CancelButton); <-----
end
end
end
end;


Добавлено:
А можно мне разжевать, что же за функция AppMutex и для чего она?
Автор: notAlx
Дата сообщения: 07.03.2009 03:28
Есть вопрос. Надо на страничку "Выберите папку в меню «Пуск»" поместить чекбокс "Создать значок на Рабочем столе". Напишите пожалуйста пример кода, как это можно реализовать.
Автор: skeptik_vdm
Дата сообщения: 07.03.2009 10:37
notAlx

Вот [more=код]
[Setup]
AppName=My Program
AppVerName=My Program version 1.4
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Icons]
Name: {group}\Uninstall; Filename: {uninstallexe};
Name: {userdesktop}\Legendary; Filename: {app}\Binaries\Legendary.exe; Check: MakeDesktopIcon

[Code]
var
DesktopIcon: TCheckBox;

function MakeDesktopIcon: Boolean;
begin
Result:=DesktopIcon.Checked;
end;

procedure InitializeWizard();
begin
DesktopIcon := TCheckBox.Create(WizardForm);
with DesktopIcon do
begin
Parent := WizardForm.SelectProgramGroupPage;
Caption := 'Добавить ярлык на рабочий стол';
Left := ScaleX(0);
Top := WizardForm.DirEdit.Top+35;
Width := ScaleX(400);
Height := ScaleY(15);
TabOrder := 0;
Checked := True;
end;
end;
[/more]
Автор: serg566
Дата сообщения: 07.03.2009 11:30
kombat 77
DeKaNszn
Спасиб.. ща буду пробовать
Автор: msatmb
Дата сообщения: 07.03.2009 23:28
Подскажите пожалуйста как объединить вот такой код
[more]
[Setup]
AppName=Brettzies Weapon Pack
AppVerName=Brettzies Weapon Pack v4.0
DefaultDirName={code:GetInstallDir}
DefaultGroupName={code:GetInstallGroup}
DisableProgramGroupPage=True
DisableReadyPage=True
DirExistsWarning=false
EnableDirDoesntExistWarning=no
CreateUninstallRegKey=no
Uninstallable=no
DisableFinishedPage=True
SolidCompression=true
Compression=lzma/ultra64

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

[Icons]
Name: "{group}\Руководство по Brettzies Weapon Pack"; Filename: "{app}\readme_bp_weaponspack_v4.0_graw.pdf"; WorkingDir: "{app}"

[Files]
Source: "D:\MyInno_Script\Advanced Warfighter\Brettzies_wpnPack_GRAW\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs

[Code]
function GetInstallGroup(Group: string): string;
begin
Group := '';
RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Ghost Recon 3 - Advanced Warfighter_is1\','Inno Setup: Icon Group', Group);
Result := Group;
end;
function GetInstallDir(Dir: string): string;
begin
Dir := '';
RegQueryStringValue(HKLM, 'Software\Ubisoft\Ghost Recon Advanced Warfighter','InstalledPath', Dir);
Result := Dir;
end;

function InitializeSetup(): Boolean;
var
S: String;
begin
Result := True;
S := ExpandConstant('{code:GetInstallDir}');
if S = '' then
begin
SuppressibleMsgBox('Игра Ghost Recon Advanced Warfighter не найдена!', mbCriticalError, MB_OK, MB_OK);
Result := False;
Exit;
end;

{
условия необходимые для определения обновлялась игра или нет,
размер или наличие новых файлов, запись в реестре,
наличие деинсталлятора патча,
в данном случае проверяется наличие деинсталлятора
--> проверка ... если условие выполняется Result := False
}

if MsgBox('Игра Ghost Recon Advanced Warfighter найдена, желаете установить мод Brettzies Weapon Pack v4.0?', mbConfirmation, MB_YESNO) = IDNO then
Result := False;
Exit;
end;

procedure CurPageChanged(CurPageID: Integer);
var
S: String;
begin
if CurPageID = wpWelcome then
S := ExpandConstant('{code:GetInstallDir}');
if S <> '' then
WizardForm.NextButton.OnClick(WizardForm.NextButton);

if CurPageID = wpSelectDir then
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
MsgBox('Модификация ' + '{#SetupSetting("AppVerName")}' + ' установлена!', mbInformation, MB_OK);
end;
[/more]
с кодом "Бекапа"
[more]
#include "SHFileOperation.iss"

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Tasks]
Name: src; Description: "Backup"

[Files]
Source: "C:\util\*"; DestDir: {app}; BeforeInstall: CreateBackup; Flags: ignoreversion recursesubdirs createallsubdirs

[Code]
function MoveFile(const srcFile, destFile: PChar): Integer;
external 'MoveFileA@kernel32.dll stdcall';

procedure CreateBackup;
var
srcFile, destFile: string;
basePath, shortPath: string;
begin
if IsTaskSelected('src') then
begin
basePath := ExpandConstant('{app}');
srcFile := ExpandConstant(CurrentFileName);
shortPath := srcFile;
StringChangeEx(shortPath, basePath, '', True);
destFile := ExpandConstant('{app}\Backup') + shortPath;
ForceDirectories(ExtractFilePath(destFile));
MoveFile(PChar(srcFile), PChar(destFile));
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
MoveDir(ExpandConstant('{app}\Backup\'), ExpandConstant('{app}'));
RemoveDir(ExpandConstant('{app}\Backup\'));
end;
end;
[/more]
Или подскажите как при удалении программы оставить один из файлов (Source: "нужный.файл"; DestDir: "{app}"; Flags: uninsneveruninstall - не помогает, все равно удаляется.). А то пришлось делать "неудаляемый" мод
Автор: clemenco
Дата сообщения: 08.03.2009 11:22
В представленных кодах можно обойтись простым копи-паст.

Но вот с этим #include "SHFileOperation.iss" могут быть конфликты. Скорее всего совмещать нужно его с кодом бэкапа.
PS Нужен код этого файла, для совмещения.
Автор: trexmernii
Дата сообщения: 08.03.2009 12:57
Уже задавался вопрос об автоматическом выключении компьютера после процесса компиляции! решение было командной строкой прописать выключение!
вот на основе Inno Setup сделал то же самое только покрасивее, и с возможностью выбора файла: http://multi-up.com/65584 (402КБ)
Автор: EagleSH
Дата сообщения: 08.03.2009 14:13
trexmernii
не нужная вещь, темболее один файл обрабатывает, имхо!

я делал в своё время по 5 компиляций, в батник прописал, на ночь оставил и не паришься.
Автор: Qarma
Дата сообщения: 08.03.2009 18:37
skeptik_vdm

Цитата:
Вот код

А как сделать тоже самое, но на странице выбора дирректории установки

Добавлено:
Всё, помощи не надо, просто поредактить один параметр надо было

Добавлено:
Скажите как совместить этот код -
[more]

[Setup]
AppName=Stranglehold
AppVerName=Stranglehold

DefaultDirName=D:\Games\Stranglehold
OutputBaseFilename=Setup
Compression=lzma/ultra64
SolidCompression=yes

;+++&#240;&#229;&#231;&#228;&#229;&#235;&#229;&#237;&#232;&#229;
DiskSpanning=yes
SlicesPerDisk=3
DiskSliceSize=1560000000
;---&#240;&#229;&#231;&#228;&#229;&#235;&#229;&#237;&#232;&#229;

;+++&#211;&#240;&#238;&#226;&#229;&#237;&#252; &#234;&#238;&#236;&#239;&#240;&#229;&#241;&#241;&#232;&#232;
InternalCompressLevel=ultra64
;---&#211;&#240;&#238;&#226;&#229;&#237;&#252; &#234;&#238;&#236;&#239;&#240;&#229;&#241;&#241;&#232;&#232;

UsePreviousAppDir=false
AllowUNCPath=false

;+++&#196;&#232;&#240;&#229;&#234;&#242;&#238;&#240;&#232;&#255; &#226;&#251;&#245;&#238;&#228;&#224; &#232;&#237;&#241;&#242;&#224;&#235;&#255;&#242;&#238;&#240;&#224;
OutputDir=D:\test
;---&#196;&#232;&#240;&#229;&#234;&#242;&#238;&#240;&#232;&#255; &#226;&#251;&#245;&#238;&#228;&#224; &#232;&#237;&#241;&#242;&#224;&#235;&#255;&#242;&#238;&#240;&#224; Untitled-3
WizardImageFile=D:\test\str.bmp
WizardSmallImageFile=D:\test\str_small.bmp
DisableProgramGroupPage=true
UsePreviousGroup=false
DefaultGroupName=Stranglehold
VersionInfoVersion=1.0.0.0
UninstallFilesDir={app}\
DirExistsWarning=no
DisableReadyPage=true
VersionInfoCompany=© Qarmaa
AppCopyright=© Qarmaa
AppVersion=1.0.0.0
UninstallDisplayName=Stranglehold
UsePreviousSetupType=false
UsePreviousUserInfo=false
PrivilegesRequired=none
RestartIfNeededByRun=false
LanguageDetectionMethod=locale
;+++icon.ico &#253;&#242;&#238; &#232;&#234;&#238;&#237;&#234;&#224; &#232;&#237;&#241;&#242;&#224;&#235;&#235;&#229;&#240;&#224;!


;---icon.ico &#253;&#242;&#238; &#232;&#234;&#238;&#237;&#234;&#224; &#232;&#237;&#241;&#242;&#224;&#235;&#235;&#229;&#240;&#224;!
;+++Small.bmp &#253;&#242;&#238; &#234;&#224;&#240;&#242;&#232;&#237;&#234;&#224; &#237;&#224; &#226;&#229;&#240;&#245;&#243; &#239;&#240;&#238;&#228;&#238;&#235;&#227;&#238;&#226;&#224;&#242;&#224;&#255;!
;---Small.bmp &#253;&#242;&#238; &#234;&#224;&#240;&#242;&#232;&#237;&#234;&#224; &#237;&#224; &#226;&#229;&#240;&#245;&#243; &#239;&#240;&#238;&#228;&#238;&#235;&#227;&#238;&#226;&#224;&#242;&#224;&#255;!
AppPublisherURL=http://Qarmaa.lan


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


[UninstallDelete]
Type: filesandordirs; Name: "{app}"

[Tasks]
Name: "desktopicon"; Description: "&#209;&#238;&#231;&#228;&#224;&#242;&#252; &#255;&#240;&#235;&#251;&#234; &#237;&#224; &#240;&#224;&#225;&#238;&#247;&#229;&#236; &#241;&#242;&#238;&#235;&#229;";

[LangOptions]
WelcomeFontSize=10

[Icons]
Name: "{group}\&#205;&#224;&#247;&#224;&#242;&#252; &#232;&#227;&#240;&#243;"; Filename: "{app}\Binaries\Retail-Stranglehold.exe"; WorkingDir: "{app}\";

Name: "{group}\&#211;&#228;&#224;&#235;&#232;&#242;&#252; &#232;&#227;&#240;&#243;"; Filename: "{uninstallexe}";
Name: "{userdesktop}\Stranglehold"; Filename: "{app}\Binaries\Retail-Stranglehold.exe"; WorkingDir: "{app}\"; Tasks: desktopicon

[Run]
Filename: "{src}\depack.exe"; WorkingDir: "{src}"; Parameters: "x gamedata.bin -o""{app}\"" -y"; StatusMsg: "&#199;&#224;&#226;&#229;&#240;&#248;&#229;&#237;&#232;&#229; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#232;, &#239;&#238;&#230;&#224;&#235;&#243;&#233;&#241;&#242;&#224; &#239;&#238;&#228;&#238;&#230;&#228;&#232;&#242;&#229;...";

[Files]
Source: "D:\Games\Stranglehold\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs sortfilesbyextension
Source: C:\Program Files\Inno Setup 5\Corona\logo_.bmp; DestDir: {tmp}; Flags: dontcopy
Source: C:\Program Files\Inno Setup 5\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy


[UninstallDelete]
Type: filesandordirs; Name: "{app}"





[Code]
//////////////


var
PageNameLabel, PageDescriptionLabel: TLabel;


const
NeedSize = 12902;




var
LogoImage:TBitmapImage;
LogoPanel: TPanel;
LogoLabel: TLabel;
FreeMB, TotalMB: Cardinal;

NeedSpaceLabel, FreeSpaceLabel: TLabel;
Comp1, Comp2: TCheckBox;
ProgressBar : TNewProgressBar;
ExtractFile:TNewStaticText;
Button1:TButton;

/////////

//////

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;

begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);

if FreeMB > 1024 then
FreeSpaceLabel.Caption := '&#196;&#238;&#241;&#242;&#243;&#239;&#237;&#238; &#236;&#229;&#241;&#242;&#238; &#237;&#224; &#228;&#232;&#241;&#234;&#229;: ' + FloatToStr(round(FreeMB/1024*100)/100) + ' GB'
else
FreeSpaceLabel.Caption := '&#196;&#238;&#241;&#242;&#243;&#239;&#237;&#238; &#236;&#229;&#241;&#242;&#238; &#237;&#224; &#228;&#232;&#241;&#234;&#229;: ' + IntToStr(FreeMB)+ ' MB';

if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := false
else
WizardForm.NextButton.Enabled := true;
end;


//////////
procedure LogoOnClick(Sender: TObject);
var ReturnCode: Integer;
begin
ShellExec('open', 'http://rls.lan', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
TimerID: LongWord;
pfunc: LongWord;
Label1:tlabel;

function WrapTimerProc(callback:TProc; paramcount:integer):longword; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';





procedure InitializeWizard();
var
WLabel1, WLabel2: TLabel;
FLabel1, FLabel2: TLabel;
begin
////////////
FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(76);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(53);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Font.Color:= clblack;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := '&#207;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#224; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#235;&#229;&#237;&#224; &#237;&#224; &#194;&#224;&#248; &#234;&#238;&#236;&#239;&#252;&#254;&#242;&#229;&#240;.' #13#13
'&#205;&#224;&#230;&#236;&#232;&#242;&#229; «&#199;&#224;&#226;&#229;&#240;&#248;&#232;&#242;&#252;», &#247;&#242;&#238;&#225;&#251; &#226;&#251;&#233;&#242;&#232; &#232;&#231; &#239;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#251; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#232;.';
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage




WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(16);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(54);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 12;
WLabel1.Font.Style := [fsBold];
WLabel1.Font.Color:= clblack;
WLabel1.ShowAccelChar := False;
WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WLabel2:=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(76);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(234);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Font.Color:= clblack;
WLabel2.ShowAccelChar := False;
WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;


WizardForm.WizardBitmapImage2.Width := WizardForm.Width;
WizardForm.WizardBitmapImage2.Height := WizardForm.Height;

FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(176);
FLabel1.Top := ScaleY(16);
FLabel1.Width := ScaleX(301);
FLabel1.Height := ScaleY(54);
FLabel1.AutoSize := False;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 12;
FLabel1.Font.Style := [fsBold];
FLabel1.Font.Color:= clblack;
FLabel1.ShowAccelChar := False;
FLabel1.Caption := WizardForm.FinishedHeadingLabel.Caption;
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;


begin
WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.FinishedHeadingLabel.Hide;
WizardForm.FinishedLabel.Hide;
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(16);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(100);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 12;
WLabel1.Font.Style := [fsBold];
WLabel1.Font.Color:= clblack;
WLabel1.ShowAccelChar := False;
WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WLabel2 :=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(76);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(234);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Font.Color:= clblack;
WLabel2.ShowAccelChar := False;
WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;

WizardForm.WizardBitmapImage2.Width := WizardForm.Width;
WizardForm.WizardBitmapImage2.Height := WizardForm.Height;

FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(176);
FLabel1.Top := ScaleY(16);
FLabel1.Width := ScaleX(301);
FLabel1.Height := ScaleY(54);
FLabel1.AutoSize := False;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 12;
FLabel1.Font.Style := [fsBold];
FLabel1.Font.Color:= clblack;
FLabel1.ShowAccelChar := False;
FLabel1.Caption := WizardForm.FinishedHeadingLabel.Caption;
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;

FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(76);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(77);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Font.Color:= clblack;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := '&#207;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#224; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#235;&#229;&#237;&#224; &#237;&#224; &#194;&#224;&#248; &#234;&#238;&#236;&#239;&#252;&#254;&#242;&#229;&#240;.' #13#13
'&#205;&#224;&#230;&#236;&#232;&#242;&#229; «&#199;&#224;&#226;&#229;&#240;&#248;&#232;&#242;&#252;», &#247;&#242;&#238;&#225;&#251; &#226;&#251;&#233;&#242;&#232; &#232;&#231; &#239;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#251; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#232;.';
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage;
end;
//////////
begin

WizardForm.DiskSpaceLabel.Hide;
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do

begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(198);
Width := ScaleX(209);
Height := ScaleY(13);



Caption := '&#210;&#240;&#229;&#225;&#243;&#229;&#242;&#241;&#255; &#236;&#229;&#241;&#242;&#238; &#237;&#224; &#228;&#232;&#241;&#234;&#229;: 12,6 GB' ;
end;
////////////
begin
begin
WizardForm.WizardSmallBitmapImage.Left:=0;
WizardForm.WizardSmallBitmapImage.Width:=497;
WizardForm.WizardSmallBitmapImage.Height:=58;
WizardForm.PageDescriptionLabel.Width:=300;
WizardForm.PageNameLabel.Width:=300;
end ;
begin
PageNameLabel := TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left := ScaleX(10);
Top := ScaleY(10);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Color := clred;
Font.Style := [fsBold];
Transparent := True;
Parent := WizardForm.MainPanel;
end;

PageDescriptionLabel := TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left := ScaleX(15);
Top := ScaleY(25);
Width := ScaleX(475);
Height := ScaleY(30);
AutoSize := False;
WordWrap := True;
Font.Color := clred;
Transparent := True;
Parent := WizardForm.MainPanel;
end;

with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := Mainpanel.Width;
Height := MainPanel.Height;
end;
end;
end;
end;
end;

////////////IntToStr(NeedSize) + ' GB'
FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(216);
Width := ScaleX(209);
Height := ScaleY(13);
end;




WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
end;






/////////////////
ExtractTemporaryFile('logo_.bmp');

LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(8);
Top := ScaleY(323);
Width := ScaleX(165);
Height := ScaleY(28);
BevelOuter := bvNone;
end;

LogoImage := TBitmapImage.Create(WizardForm);
with LogoImage do
begin
Parent := LogoPanel;
Left := ScaleX(0);
Top := ScaleY(0);
AutoSize:=true;
ReplaceColor:=clFuchsia;
ReplaceWithColor:=clBtnFace;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo_.bmp'));
end;

LogoLabel := TLabel.Create(WizardForm);
with LogoLabel do
begin
Parent := LogoPanel;
Width := LogoPanel.Width;
Height := LogoPanel.Height;
Transparent:=True;
Cursor := crHand;
OnClick:=@LogoOnClick;
end;
end;

procedure CurPageChanged(CurPageID: Integer);




begin
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
If CurPageID=wpFinished then KillTimer(0, TimerID);
if CurPageID = wpSelectDir then
if FreeMB < NeedSize then
begin
WizardForm.NextButton.Enabled:=False
end;
end;




[/more]

с этим:

[more]
[Code]
var
DesktopIcon: TCheckBox;

function MakeDesktopIcon: Boolean;
begin
Result:=DesktopIcon.Checked;
end;

procedure InitializeWizard();
begin
DesktopIcon := TCheckBox.Create(WizardForm);
with DesktopIcon do
begin
Parent := WizardForm.SelectDirPage;
Caption := '&#196;&#238;&#225;&#224;&#226;&#232;&#242;&#252; &#255;&#240;&#235;&#251;&#234; &#237;&#224; &#240;&#224;&#225;&#238;&#247;&#232;&#233; &#241;&#242;&#238;&#235;';
Left := ScaleX(0);
Top := WizardForm.DirEdit.Top+35;
Width := ScaleX(400);
Height := ScaleY(15);
TabOrder := 0;
Checked := True;
end;
[/more]


ПОМОГИТЕ ПОЖАЛУЙСТА
Автор: kombat 77
Дата сообщения: 08.03.2009 18:55
Qarma

Цитата:
А как сделать тоже самое, но на странице выбора дирректории установки

Parent := WizardForm.SelectDirPage;


Добавлено:

Цитата:
Скажите как совместить этот код -
Подробнее...

с этим:

Подробнее...

[more=Просто]

[Setup]
AppName=Stranglehold
AppVerName=Stranglehold

DefaultDirName=D:\Games\Stranglehold
OutputBaseFilename=Setup
Compression=lzma/ultra64
SolidCompression=yes

;+++&#240;&#229;&#231;&#228;&#229;&#235;&#229;&#237;&#232;&#229;
DiskSpanning=yes
SlicesPerDisk=3
DiskSliceSize=1560000000
;---&#240;&#229;&#231;&#228;&#229;&#235;&#229;&#237;&#232;&#229;

;+++&#211;&#240;&#238;&#226;&#229;&#237;&#252; &#234;&#238;&#236;&#239;&#240;&#229;&#241;&#241;&#232;&#232;
InternalCompressLevel=ultra64
;---&#211;&#240;&#238;&#226;&#229;&#237;&#252; &#234;&#238;&#236;&#239;&#240;&#229;&#241;&#241;&#232;&#232;

UsePreviousAppDir=false
AllowUNCPath=false

;+++&#196;&#232;&#240;&#229;&#234;&#242;&#238;&#240;&#232;&#255; &#226;&#251;&#245;&#238;&#228;&#224; &#232;&#237;&#241;&#242;&#224;&#235;&#255;&#242;&#238;&#240;&#224;
OutputDir=D:\test
;---&#196;&#232;&#240;&#229;&#234;&#242;&#238;&#240;&#232;&#255; &#226;&#251;&#245;&#238;&#228;&#224; &#232;&#237;&#241;&#242;&#224;&#235;&#255;&#242;&#238;&#240;&#224; Untitled-3
WizardImageFile=D:\test\str.bmp
WizardSmallImageFile=D:\test\str_small.bmp
DisableProgramGroupPage=true
UsePreviousGroup=false
DefaultGroupName=Stranglehold
VersionInfoVersion=1.0.0.0
UninstallFilesDir={app}\
DirExistsWarning=no
DisableReadyPage=true
VersionInfoCompany=© Qarmaa
AppCopyright=© Qarmaa
AppVersion=1.0.0.0
UninstallDisplayName=Stranglehold
UsePreviousSetupType=false
UsePreviousUserInfo=false
PrivilegesRequired=none
RestartIfNeededByRun=false
LanguageDetectionMethod=locale
;+++icon.ico &#253;&#242;&#238; &#232;&#234;&#238;&#237;&#234;&#224; &#232;&#237;&#241;&#242;&#224;&#235;&#235;&#229;&#240;&#224;!


;---icon.ico &#253;&#242;&#238; &#232;&#234;&#238;&#237;&#234;&#224; &#232;&#237;&#241;&#242;&#224;&#235;&#235;&#229;&#240;&#224;!
;+++Small.bmp &#253;&#242;&#238; &#234;&#224;&#240;&#242;&#232;&#237;&#234;&#224; &#237;&#224; &#226;&#229;&#240;&#245;&#243; &#239;&#240;&#238;&#228;&#238;&#235;&#227;&#238;&#226;&#224;&#242;&#224;&#255;!
;---Small.bmp &#253;&#242;&#238; &#234;&#224;&#240;&#242;&#232;&#237;&#234;&#224; &#237;&#224; &#226;&#229;&#240;&#245;&#243; &#239;&#240;&#238;&#228;&#238;&#235;&#227;&#238;&#226;&#224;&#242;&#224;&#255;!
AppPublisherURL=http://Qarmaa.lan


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


[UninstallDelete]
Type: filesandordirs; Name: "{app}"

[LangOptions]
WelcomeFontSize=10

[Icons]
Name: "{group}\&#205;&#224;&#247;&#224;&#242;&#252; &#232;&#227;&#240;&#243;"; Filename: "{app}\Binaries\Retail-Stranglehold.exe"; WorkingDir: "{app}\";

Name: "{group}\&#211;&#228;&#224;&#235;&#232;&#242;&#252; &#232;&#227;&#240;&#243;"; Filename: "{uninstallexe}";
Name: "{userdesktop}\Stranglehold"; Filename: "{app}\Binaries\Retail-Stranglehold.exe"; WorkingDir: "{app}"; Check: MakeDesktopIcon;

[Run]
Filename: "{src}\depack.exe"; WorkingDir: "{src}"; Parameters: "x gamedata.bin -o""{app}\"" -y"; StatusMsg: "&#199;&#224;&#226;&#229;&#240;&#248;&#229;&#237;&#232;&#229; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#232;, &#239;&#238;&#230;&#224;&#235;&#243;&#233;&#241;&#242;&#224; &#239;&#238;&#228;&#238;&#230;&#228;&#232;&#242;&#229;...";

[Files]
Source: "D:\Games\Stranglehold\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs sortfilesbyextension
Source: C:\Program Files\Inno Setup 5\Corona\logo_.bmp; DestDir: {tmp}; Flags: dontcopy
Source: C:\Program Files\Inno Setup 5\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy


[UninstallDelete]
Type: filesandordirs; Name: "{app}"





[Code]
//////////////


var
PageNameLabel, PageDescriptionLabel: TLabel;
DesktopIcon: TCheckBox;

const
NeedSize = 12902;




var
LogoImage:TBitmapImage;
LogoPanel: TPanel;
LogoLabel: TLabel;
FreeMB, TotalMB: Cardinal;

NeedSpaceLabel, FreeSpaceLabel: TLabel;
Comp1, Comp2: TCheckBox;
ProgressBar : TNewProgressBar;
ExtractFile:TNewStaticText;
Button1:TButton;

/////////

//////

function MakeDesktopIcon: Boolean;
begin
Result:=DesktopIcon.Checked;
end;

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;

begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);

if FreeMB > 1024 then
FreeSpaceLabel.Caption := '&#196;&#238;&#241;&#242;&#243;&#239;&#237;&#238; &#236;&#229;&#241;&#242;&#238; &#237;&#224; &#228;&#232;&#241;&#234;&#229;: ' + FloatToStr(round(FreeMB/1024*100)/100) + ' GB'
else
FreeSpaceLabel.Caption := '&#196;&#238;&#241;&#242;&#243;&#239;&#237;&#238; &#236;&#229;&#241;&#242;&#238; &#237;&#224; &#228;&#232;&#241;&#234;&#229;: ' + IntToStr(FreeMB)+ ' MB';

if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := false
else
WizardForm.NextButton.Enabled := true;
end;


//////////
procedure LogoOnClick(Sender: TObject);
var ReturnCode: Integer;
begin
ShellExec('open', 'http://rls.lan', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
TimerID: LongWord;
pfunc: LongWord;
Label1:tlabel;

function WrapTimerProc(callback:TProc; paramcount:integer):longword; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';





procedure InitializeWizard();
var
WLabel1, WLabel2: TLabel;
FLabel1, FLabel2: TLabel;
begin
DesktopIcon := TCheckBox.Create(WizardForm);
DesktopIcon.Parent := WizardForm.SelectDirPage;
DesktopIcon.Caption := '&#196;&#238;&#225;&#224;&#226;&#232;&#242;&#252; &#255;&#240;&#235;&#251;&#234; &#237;&#224; &#240;&#224;&#225;&#238;&#247;&#232;&#233; &#241;&#242;&#238;&#235;';
DesktopIcon.Left := ScaleX(0);
DesktopIcon.Top := ScaleY(WizardForm.DirEdit.Top + 35);
DesktopIcon.Width := ScaleX(400);
DesktopIcon.Height := ScaleY(15);
DesktopIcon.TabOrder := 0;
DesktopIcon.Checked := True;
////////////
FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(76);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(53);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Font.Color:= clblack;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := '&#207;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#224; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#235;&#229;&#237;&#224; &#237;&#224; &#194;&#224;&#248; &#234;&#238;&#236;&#239;&#252;&#254;&#242;&#229;&#240;.' #13#13
'&#205;&#224;&#230;&#236;&#232;&#242;&#229; «&#199;&#224;&#226;&#229;&#240;&#248;&#232;&#242;&#252;», &#247;&#242;&#238;&#225;&#251; &#226;&#251;&#233;&#242;&#232; &#232;&#231; &#239;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#251; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#232;.';
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage




WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(16);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(54);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 12;
WLabel1.Font.Style := [fsBold];
WLabel1.Font.Color:= clblack;
WLabel1.ShowAccelChar := False;
WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WLabel2:=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(76);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(234);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Font.Color:= clblack;
WLabel2.ShowAccelChar := False;
WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;


WizardForm.WizardBitmapImage2.Width := WizardForm.Width;
WizardForm.WizardBitmapImage2.Height := WizardForm.Height;

FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(176);
FLabel1.Top := ScaleY(16);
FLabel1.Width := ScaleX(301);
FLabel1.Height := ScaleY(54);
FLabel1.AutoSize := False;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 12;
FLabel1.Font.Style := [fsBold];
FLabel1.Font.Color:= clblack;
FLabel1.ShowAccelChar := False;
FLabel1.Caption := WizardForm.FinishedHeadingLabel.Caption;
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;


begin
WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.FinishedHeadingLabel.Hide;
WizardForm.FinishedLabel.Hide;
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(16);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(100);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 12;
WLabel1.Font.Style := [fsBold];
WLabel1.Font.Color:= clblack;
WLabel1.ShowAccelChar := False;
WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WLabel2 :=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(76);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(234);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Font.Color:= clblack;
WLabel2.ShowAccelChar := False;
WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;

WizardForm.WizardBitmapImage2.Width := WizardForm.Width;
WizardForm.WizardBitmapImage2.Height := WizardForm.Height;

FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(176);
FLabel1.Top := ScaleY(16);
FLabel1.Width := ScaleX(301);
FLabel1.Height := ScaleY(54);
FLabel1.AutoSize := False;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 12;
FLabel1.Font.Style := [fsBold];
FLabel1.Font.Color:= clblack;
FLabel1.ShowAccelChar := False;
FLabel1.Caption := WizardForm.FinishedHeadingLabel.Caption;
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;

FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(76);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(77);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Font.Color:= clblack;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := '&#207;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#224; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#235;&#229;&#237;&#224; &#237;&#224; &#194;&#224;&#248; &#234;&#238;&#236;&#239;&#252;&#254;&#242;&#229;&#240;.' #13#13
'&#205;&#224;&#230;&#236;&#232;&#242;&#229; «&#199;&#224;&#226;&#229;&#240;&#248;&#232;&#242;&#252;», &#247;&#242;&#238;&#225;&#251; &#226;&#251;&#233;&#242;&#232; &#232;&#231; &#239;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#251; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#232;.';
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage;
end;
//////////
begin

WizardForm.DiskSpaceLabel.Hide;
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do

begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(198);
Width := ScaleX(209);
Height := ScaleY(13);



Caption := '&#210;&#240;&#229;&#225;&#243;&#229;&#242;&#241;&#255; &#236;&#229;&#241;&#242;&#238; &#237;&#224; &#228;&#232;&#241;&#234;&#229;: 12,6 GB' ;
end;
////////////
begin
begin
WizardForm.WizardSmallBitmapImage.Left:=0;
WizardForm.WizardSmallBitmapImage.Width:=497;
WizardForm.WizardSmallBitmapImage.Height:=58;
WizardForm.PageDescriptionLabel.Width:=300;
WizardForm.PageNameLabel.Width:=300;
end ;
begin
PageNameLabel := TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left := ScaleX(10);
Top := ScaleY(10);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Color := clred;
Font.Style := [fsBold];
Transparent := True;
Parent := WizardForm.MainPanel;
end;

PageDescriptionLabel := TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left := ScaleX(15);
Top := ScaleY(25);
Width := ScaleX(475);
Height := ScaleY(30);
AutoSize := False;
WordWrap := True;
Font.Color := clred;
Transparent := True;
Parent := WizardForm.MainPanel;
end;

with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := Mainpanel.Width;
Height := MainPanel.Height;
end;
end;
end;
end;
end;

////////////IntToStr(NeedSize) + ' GB'
FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(216);
Width := ScaleX(209);
Height := ScaleY(13);
end;




WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
end;






/////////////////
ExtractTemporaryFile('logo_.bmp');

LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(8);
Top := ScaleY(323);
Width := ScaleX(165);
Height := ScaleY(28);
BevelOuter := bvNone;
end;

LogoImage := TBitmapImage.Create(WizardForm);
with LogoImage do
begin
Parent := LogoPanel;
Left := ScaleX(0);
Top := ScaleY(0);
AutoSize:=true;
ReplaceColor:=clFuchsia;
ReplaceWithColor:=clBtnFace;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo_.bmp'));
end;

LogoLabel := TLabel.Create(WizardForm);
with LogoLabel do
begin
Parent := LogoPanel;
Width := LogoPanel.Width;
Height := LogoPanel.Height;
Transparent:=True;
Cursor := crHand;
OnClick:=@LogoOnClick;
end;
end;

procedure CurPageChanged(CurPageID: Integer);




begin
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
If CurPageID=wpFinished then KillTimer(0, TimerID);
if CurPageID = wpSelectDir then
if FreeMB < NeedSize then
begin
WizardForm.NextButton.Enabled:=False
end;
end;

[/more]

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: в очередной раз босудим антивиры?


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