;Это отделение отвечает за настройки самого компилятора.
[Setup]
;Уникальный айдишник нашего инстала. Генерится в меню.
AppId={{8F56E577-E756-4B81-B4CE-538DC13A1956}
;Название нашего инстала
AppName=Team Fortress 2
;Название вместе с версией
AppVerName=Team Fortress 2 - v1.0.5.8 (3847)
;Кто создал инсталл
AppPublisher=[-Dio-]
;Папка установки по умолчания, у меня тут идет проверка на ключь в реестре,
;если уже есть установленная игра то путь будет в ту же папку иначе в Програм файлсТФ2
DefaultDirName={reg:HKLMSOFTWAREValveSteam,TF2Path|{pf}Team Fortress 2}
;Название группы в меню Пуск
DefaultGroupName=Team Fortress 2
;Если тру значит можно отключить создание группы в меню Пуск
AllowNoIcons=true
;Папка куда попадет наш откомпилированный инстальник
OutputDir=C:Setup
;Название самого файла инстальника
OutputBaseFilename=setup
;Значек инстальника
SetupIconFile=C:Program FilesSmart Install MakerIconsInstallInstall-2.ico
;Картинка слева на странице приветствия
WizardImageFile=E:[Shit]HL InstallIconslogo.bmp
;Маленькая картинка в правом верхнем углу
WizardSmallImageFile=E:[Shit]HL InstallIconsicon.bmp
;Уровень сжатия
Compression=lzma/max
;Эта переменная отвечает за тип сжатия (Сжимать все файлы как один или каждый по отдельности)
SolidCompression=true
;Разбивать ли инстальник на части
DiskSpanning=true
;Размер одной части
DiskSliceSize=860000000
;Папка с анинсталом
UninstallFilesDir={app}Uninstall
;Описание инсталятора
VersionInfoDescription=Team Fortress 2 от [-Dio-]
;Версия в текстовом виде
VersionInfoTextVersion=1.0.5.8 (3847)
;Название
VersionInfoProductName=Team Fortress 2
;Версия в цифровом виде
VersionInfoVersion=1.0.5.8
;Будет ли требовать привелегии инсталл, я убрал - пусть и гости порадуются
PrivilegesRequired=none
;Использовать ли предыдущюю папку установки? Зачем ведь у меня берется значение из реестра.
UsePreviousAppDir=false
;Показывать ли предупреждение если папка уже существует?
DirExistsWarning=no
;================== Надписи ===================
[Messages]
;Надпись которая будет на разделительной линии
BeveledLabel=Team Fortress 2 от [-Dio-]
;============= Языки ================
[Languages]
Name: russian; MessagesFile: compiler:LanguagesRussian.isl
;============ Вопросы ==============
[Tasks]
;Добавить ли ярлык на рабочий стол?
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
;============= Компоненты установки ===================
[Components]
Name: rus; Description: Русская версия; Types: rus
Name: eng; Description: Английская версия; Types: eng
;Вообщем это тип установки, какие компоненты будут установлены...
[Types]
Name: rus; Description: На русском языке
Name: eng; Description: На английском языке
;=====================================================
;=========== Файлы ===============
[Files]
;Библиотека для воспроизведения музыки
Source: S:[Games]TF2BASS.dll; DestDir: {tmp}; Flags: dontcopy
;Музыка
Source: S:[Games]TF2gamestartup.mp3; DestDir: {tmp}; Flags: dontcopy
;Задняя картинка
Source: S:[Games]TF2back.bmp; DestDir: {tmp}; Flags: dontcopy
;Библиотека скина
Source: E:[Installs]SoftInno SetupScriptsSkinISSkin.dll; DestDir: {tmp}; Flags: dontcopy
;Сам скин
Source: E:[Installs]SoftInno SetupScriptsSkinhl2.cjstyles; DestDir: {tmp}; Flags: dontcopy
;Файлы игры
Source: S:[Games]TF2Source 2007 Binaries*; DestDir: {app}; Flags: recursesubdirs ignoreversion
;Файлы разных компонентов
Components: rus; Source: S:[Games]TF2Rus*; DestDir: {app}; Flags: recursesubdirs ignoreversion
;============ Ярлыки ==============
[Icons]
Name: {group}Запустить Team Fortress 2; Filename: {app}tf2.exe; WorkingDir: {app}
Name: {group}Удалить Team Fortress 2; Filename: {uninstallexe}
Name: {commondesktop}Team Fortress 2; Filename: {app}tf2.exe; Tasks: desktopicon; WorkingDir: {app}
;=============== Запуск ===========
[Run]
;Добавляем вопросик об запуске игры после установки
Filename: {app}tf2.exe; Description: {cm:LaunchProgram,Team Fortress 2}; Flags: nowait postinstall skipifsilent
;================ Реестр ===============
[Registry]
;Куда установлена игры
Root: HKLM; Subkey: SOFTWAREValveSteam; ValueType: string; ValueName: TF2Path; ValueData: {app}; Flags: uninsdeletevalue
;Версия игры
Root: HKLM; Subkey: SOFTWAREValveSteam; ValueType: dword; ValueName: TF2Version; ValueData: 10583847; Languages: ; Flags: uninsdeletevalue
;=================== Ини файлы ================
[INI]
;Язык игры изменим в ревему
Filename: {app}Rev.ini; Section: Emulator; Key: Language; String: Russian; Components: rus
Filename: {app}Rev.ini; Section: Emulator; Key: Language; String: English; Components: eng
;А так же имя игрока
Filename: {app}Rev.ini; Section: Emulator; Key: SteamUser; String: {code:GetUser|Name}
Filename: {app}Rev.ini; Section: SteamClient; Key: PlayerName; String: {code:GetUser|Name}
;=============== Удаление ===================
[UninstallDelete]
;Удалим все что есть в папке с игрой
Name: {app}*; Type: filesandordirs
Код: Выделить всё
type
HSTREAM = DWORD; //тип звукового потока
// ================= Процедуры работы со свуком =====================
function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';
function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): HSTREAM;
external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';
function BASS_Start(): Boolean;
external 'BASS_Start@files:BASS.dll stdcall delayload';
function BASS_Pause(): Boolean;
external 'BASS_Pause@files:BASS.dll stdcall delayload';
function BASS_SetVolume(volume: DWORD): BOOL;
external 'BASS_SetVolume@files:BASS.dll stdcall delayload';
function BASS_GetVolume: Integer;
external 'BASS_GetVolume@files:BASS.dll stdcall delayload';
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean;
external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';
function BASS_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';
function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';
function GetSystemMetrics(nIndex:Integer):Integer;
external '[email protected] stdcall';
// Процедуры работы со скинами
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';
// Процедуры Вин-апи
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external '[email protected] stdcall';
const
BASS_SAMPLE_LOOP = 4; //повторение
var
UserPage: TInputQueryWizardPage;
MusicButton, VolumeUP, VolumeDown : TButton;
VolumeInd: TNewProgressBar;
// Событие при нажатии на кнопку вкл.выкл. музыки
procedure MusicButtonOnClick(Sender: TObject);
begin
//Проверка состояния кнопки
if MusicButton.Caption = 'II' then // Если играет
begin
MusicButton.Caption := '>';
BASS_Pause; // Тушим
end else // Иначе
begin
MusicButton.Caption := 'II';
BASS_Start(); // Слушаем
end;
end;
// Нажатие на кнопочку увеличения громкости
procedure VolumeUPOnClick(Sender: TObject);
var
vol : integer;
begin
vol := BASS_GetVolume;
if vol+5 >= 100 then // Добавляем громкости сразу на 5 единиц
begin
BASS_SETVolume(100);
VolumeIND.position := 100;
VolumeUP.Enabled := False; // Если громкость максимальная то выключим кнопку
end else
begin
BASS_SETVolume(vol+5);
VolumeIND.position := vol+5;
VolumeDOWN.Enabled := True;
end;
end;
// Конопка понижение громкости
procedure VolumeDOWNOnClick(Sender: TObject);
var
vol : integer;
begin
vol := BASS_GetVolume;
if vol-5 <= 0 then
begin
BASS_SETVolume(0);
VolumeIND.position := 0;
VolumeDOWN.Enabled := False; //Если понижать уже некуда то выключаем кнопочку
end else
begin
BASS_SETVolume(vol-5);
VolumeIND.position := vol-5;
VolumeUP.Enabled := True;
end;
end;
//Иницализация окна установки
procedure InitializeWizard;
var
BackgroundBitmapImage: TBitmapImage;
s, Name: string;
i : Integer;
begin
//Тут у нас сделано все что бы окошко с картинкой появлялось сразу с картинкой,
// Дело в том что в ИС есть проблема что сначала появляется окно с градиентом потом только налаживается картинка
MainForm.Width:=GetSystemMetrics(0);
MainForm.Height:=GetSystemMetrics(0);
MainForm.Left:=0;
MainForm.Top:=0;
// Загружаем сам задник
ExtractTemporaryFile('back.bmp');
s:=ExpandConstant('{tmp}')+'back.bmp';
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Bitmap.LoadFromFile(s);
BackgroundBitmapImage.Align := alClient;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapImage.Stretch:=True;
// Показываем главное окно с уже готовым задником
ShowWindow(MainForm.Handle, SW_SHOWMAXIMIZED);
// Загружаем музыку
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('gamestartup.mp3');
if BASS_Init(-1, 44100, 0, 0, 0) then
begin
BASS_Start();
Name:=ExpandConstant('{tmp}gamestartup.mp3');
i:=BASS_StreamCreateFile(FALSE, PChar(Name), 0, 0, 4);
if i <> 0 then
begin
BASS_ChannelPlay(i, True);
end;
end;
// Добавляем кнопочки управления музыкой
// Вкл. Выкл.
MusicButton := TButton.Create(WizardForm);
with MusicButton do
begin
Left := WizardForm.ClientWidth - WizardForm.CancelButton.Left - WizardForm.CancelButton.Width;
Top := WizardForm.CancelButton.Top;
Width := WizardForm.CancelButton.Height;
Height := WizardForm.CancelButton.Height;
Caption := 'II';
Hint := 'Вкл.Выкл. музыку';
ShowHint := True;
OnClick := @MusicButtonOnClick;
Parent := WizardForm;
end;
//Громче
VolumeDown := TButton.Create(WizardForm);
with VolumeDown do
begin
Left := WizardForm.ClientWidth - WizardForm.CancelButton.Left - WizardForm.CancelButton.Width + MusicButton.Width;
Top := WizardForm.CancelButton.Top;
Width := WizardForm.CancelButton.Height;
Height := WizardForm.CancelButton.Height;
Caption := '-';
Hint := 'Убавить громкость';
ShowHint := True;
OnClick := @VolumeDOWNOnClick;
Parent := WizardForm;
end;
//Тише
VolumeUP := TButton.Create(WizardForm);
with VolumeUP do
begin
Left := WizardForm.ClientWidth - WizardForm.CancelButton.Left - WizardForm.CancelButton.Width + MusicButton.Width + VolumeDown.Width;
Top := WizardForm.CancelButton.Top;
Width := WizardForm.CancelButton.Height;
Height := WizardForm.CancelButton.Height;
Caption := '+';
Hint := 'Прибавить громкость';
ShowHint := True;
OnClick := @VolumeUPOnClick;
Parent := WizardForm;
end;
//Индикатор уровня громкости
VolumeIND := TNewProgressBar.Create(WizardForm);
with VolumeIND do
begin
Parent := WizardForm;
Left := WizardForm.ClientWidth - WizardForm.CancelButton.Left - WizardForm.CancelButton.Width + MusicButton.Width + VolumeUP.Width + VolumeDown.Width;
Top := WizardForm.CancelButton.Top;
Width := WizardForm.CancelButton.Width;
Height := WizardForm.CancelButton.Height;
Min := 0;
Max := 100;
Position := BASS_GetVolume;
end;
//Проверка на то какая громкость стоит в системе
if BASS_GetVolume >= 100 then volumeUP.Enabled := False;
if BASS_GetVolume <= 0 then volumeDOWN.Enabled := False;
//Добавляем вопрос о нике игрока
UserPage := CreateInputQueryPage(wpWelcome,
'Информация о игроке', 'Пожалуйста укажите информацию и нажмите Далее > ?',
'Кто ты?');
UserPage.Add('Ник:', False);
UserPage.Values[0] := GetPreviousData('Ник:', 'Player');
end;
function InitializeSetup(): Boolean;
begin
//Загружаем скин
ExtractTemporaryFile('hl2.cjstyles');
LoadSkin(ExpandConstant('{tmp}hl2.cjstyles'), '');
Result := True;
end;
procedure DeinitializeSetup();
begin
BASS_Stop(); //нужно для остановки проигрывания
BASS_Free(); //нужно для быстрой выгрузки библиотеки вместе с муз. файлом
// Скрываем окно до того как выгрузится скин, что бы не промелькнуло окно без скина
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkin();
end;
function GetUser(Param: String): String;
begin
{ Could also be split into separate GetUserName and GetUserCompany functions }
if Param = 'Name' then
Result := UserPage.Values[0]
end;
// Процедура дописывает строку с ником в файл конфигурации в папке с игрой
procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssPostInstall then
begin
SaveStringToFile(ExpandConstant('{app}')+'tfcfgconfig.cfg', 'Name "'+GetUser('Name')+'"', True);
end;
end;
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo,
MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
S: String;
begin
{ Тут у нас выводится разная информация установки }
S := '';
S := S + 'Информация о игроке:' + NewLine;
S := S + Space + UserPage.Values[0] + NewLine;
S := S + NewLine;
S := S + MemoDirInfo + NewLine;
S := S + NewLine;
S := S + MemoComponentsInfo + NewLine;
S := S + NewLine;
S := S + MemoGroupInfo + NewLine;
S := S + NewLine;
S := S + MemoTasksInfo;
Result := S;
end;[/spoiler]
Сильно тока не пинайте, если что то не верно, инно сетаплюсь только пару дней...
[quote="NecElectro"]Не могу поменять иконку uninstall.exe (она, почему то берётся от файла игры, то есть от главного файла... как её изменить на другую которую я хочу вставить)[/quote]
[Setup]
UninstallDisplayIcon=E:\[Installs]\Soft\Icons\Vista Icon Pack v3.0\api.ico
[quote="NecElectro"]Как сделать, чтобы на фоновом рисунке были вот такие надписи с таким же шрифтом[/quote]
Напиши на картинке :) Или попробуй создать лэйблу на мэйн форме
Label1 := TLabel.Create(MainForm);
with Label1 do
begin
Parent := MainForm;
Caption := 'L4D';
Left := ScaleX(8);
Top := ScaleY(8);
Width := ScaleX(94);
Height := ScaleY(40);
Font.Color := -16777208;
Font.Height := ScaleY(40);
Font.Name := 'Tahoma';
end;