Inno Setup
- Ethan Cole
- CSmania Linux Group
- Сообщения: 161
- Зарегистрирован: 28.09.2006
- Откуда: г.Егорьевск МО
- Благодарил (а): 6 раз
- Поблагодарили: 57 раз
- Контактная информация:
Держи.
Русская справка по Inno
http://rl-team.ru/1210634
И глянь сюда
http://forum.ru-board.com/topic.cgi?for ... start=20#1
Русская справка по Inno
http://rl-team.ru/1210634
И глянь сюда
http://forum.ru-board.com/topic.cgi?for ... start=20#1
Я так и не понял как прикручивать не файлы, а Директории.
Помогите плз, я запутался :%)
Помогите плз, я запутался :%)
-
- VIP
- Сообщения: 2492
- Зарегистрирован: 01.01.2008
- Поблагодарили: 4 раза
- Контактная информация:
В справке все прекрасно написано..
Если так трудно можешь сначала юзать универсальный шел для inno - ISTool... можно без особых знаний сотворить инсталлюшку..Ethan Cole писал(а):http://rl-team.ru/1210634
[txtspoil]Adiost и я - гей шлюхи!!![/txtspoil]
Может уже писалось, но вот хочу спросить в чем сделан инсталлер L4D, если в IShield'е то где там функция проигрывания музыки во время установки?
- NecElectro
- Нович0к
- Сообщения: 18
- Зарегистрирован: 09.05.2008
- Откуда: RF
- Поблагодарили: 1 раз
- Контактная информация:
Кто может подсказать как решить пару проблем с Inno Setup
1. Не могу поменять иконку uninstall.exe (она, почему то берётся от файла игры, то есть от главного файла... как её изменить на другую которую я хочу вставить)
2. Текст в Лицензионном соглашении (окошко) и Описании, почему то не как в RTF... С чем это может связано
3. Как сделать, чтобы на фоновом рисунке были вот такие надписи с таким же шрифтом
4. При завершении установщика программы там есть запустит игру и т.д. и в конце есть зайти на сайт... галочку ставлю, но пишет вот такую хрень хотя на самом деле URL находится в папке с игрой... Скрипт создавался с помощью GameScript Generator for Inno Setup... Версия Inno Setup v5.2.0 Rus
Добавлено спустя 2 минуты 28 секунд:
Если кто шарит напишите примеры... 8)
1. Не могу поменять иконку uninstall.exe (она, почему то берётся от файла игры, то есть от главного файла... как её изменить на другую которую я хочу вставить)
2. Текст в Лицензионном соглашении (окошко) и Описании, почему то не как в RTF... С чем это может связано
3. Как сделать, чтобы на фоновом рисунке были вот такие надписи с таким же шрифтом
4. При завершении установщика программы там есть запустит игру и т.д. и в конце есть зайти на сайт... галочку ставлю, но пишет вот такую хрень хотя на самом деле URL находится в папке с игрой... Скрипт создавался с помощью GameScript Generator for Inno Setup... Версия Inno Setup v5.2.0 Rus
Добавлено спустя 2 минуты 28 секунд:
Если кто шарит напишите примеры... 8)
Вообщем захотел я создать свой инсталл но-стим тф2. Пробовал разные программы. Остановился на Inno Setup. Захотелось и фон какойнить и музычку во время установки и скин красивый. Но нигде готового скрипта не нашел. Пришлось собирать по крупицам. Вот моё творение. Вылаживаю для тех кто слабо сечет в программировании, а так же только начал общаться с Inno Setup.
Скрин
Скрипт
Вот скрипт для патча.
[spoiler=""Патч""][Setup]
AppName=Team Fortress 2 Патч
AppPublisher=[-Dio-]
AppVerName=Team Fortress 2 v1.0.5.9 (3862) Патч
VersionInfoVersion=1.0.5.9
DefaultGroupName=Team Fortress 2
OutputDir=C:SetupPatch
OutputBaseFilename=setup
DefaultDirName={reg:HKLMSOFTWAREValveSteam,TF2Path|{pf}Team Fortress 2}
SetupIconFile=C:Program FilesSmart Install MakerIconsInstallInstall-2.ico
WizardImageFile=E:[Shit]HL InstallIconslogo.bmp
WizardSmallImageFile=E:[Shit]HL InstallIconsicon.bmp
Compression=lzma/ultra
SolidCompression=true
Uninstallable=false
DirExistsWarning=no
VersionInfoDescription=Team Fortress 2 v1.0.5.9 (3862) Патч
VersionInfoTextVersion=1.0.5.8 (3847)
VersionInfoProductName=Team Fortress 2
PrivilegesRequired=none
UsePreviousAppDir=false
[Messages]
BeveledLabel=Специально для сборки Team Fortress 2 от [-Dio-]
[Languages]
Name: russian; MessagesFile: compiler:LanguagesRussian.isl
[Files]
Source: S:[Games]TF2BASS.dll; DestDir: {tmp}; Flags: dontcopy
Source: S:[Games]TF2gamestartup.mp3; DestDir: {tmp}; Flags: dontcopy
Source: S:[Games]TF2ack.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: C:Program FilesInno Setup Scripting v5.0AddonsLibrariesISTask.dll; DestDir: {tmp}; Flags: dontcopy
Source: S:[Games]TF2patch1.0.5.8 (3847) - 1.0.5.9 (3862)*; DestDir: {app}; Flags: recursesubdirs
[Registry]
Root: HKLM; Subkey: SOFTWAREValveSteam; ValueType: string; ValueName: TF2Path; ValueData: {app};
Root: HKLM; Subkey: SOFTWAREValveSteam; ValueType: dword; ValueName: TF2Version; ValueData: 10593862;
[spoiler=""Патч""][Setup]
AppName=Team Fortress 2 Патч
AppPublisher=[-Dio-]
AppVerName=Team Fortress 2 v1.0.5.9 (3862) Патч
VersionInfoVersion=1.0.5.9
DefaultGroupName=Team Fortress 2
OutputDir=C:SetupPatch
OutputBaseFilename=setup
DefaultDirName={reg:HKLMSOFTWAREValveSteam,TF2Path|{pf}Team Fortress 2}
SetupIconFile=C:Program FilesSmart Install MakerIconsInstallInstall-2.ico
WizardImageFile=E:[Shit]HL InstallIconslogo.bmp
WizardSmallImageFile=E:[Shit]HL InstallIconsicon.bmp
Compression=lzma/ultra
SolidCompression=true
Uninstallable=false
DirExistsWarning=no
VersionInfoDescription=Team Fortress 2 v1.0.5.9 (3862) Патч
VersionInfoTextVersion=1.0.5.8 (3847)
VersionInfoProductName=Team Fortress 2
PrivilegesRequired=none
UsePreviousAppDir=false
[Messages]
BeveledLabel=Специально для сборки Team Fortress 2 от [-Dio-]
[Languages]
Name: russian; MessagesFile: compiler:LanguagesRussian.isl
[Files]
Source: S:[Games]TF2BASS.dll; DestDir: {tmp}; Flags: dontcopy
Source: S:[Games]TF2gamestartup.mp3; DestDir: {tmp}; Flags: dontcopy
Source: S:[Games]TF2ack.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: C:Program FilesInno Setup Scripting v5.0AddonsLibrariesISTask.dll; DestDir: {tmp}; Flags: dontcopy
Source: S:[Games]TF2patch1.0.5.8 (3847) - 1.0.5.9 (3862)*; DestDir: {app}; Flags: recursesubdirs
[Registry]
Root: HKLM; Subkey: SOFTWAREValveSteam; ValueType: string; ValueName: TF2Path; ValueData: {app};
Root: HKLM; Subkey: SOFTWAREValveSteam; ValueType: dword; ValueName: TF2Version; ValueData: 10593862;
Код: Выделить всё
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';
function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';
const
BASS_SAMPLE_LOOP = 4; //повторение
var
MusicButton, VolumeUP, VolumeDown : TButton;
VolumeInd: TNewProgressBar;
//Проверка присутствия определенных файлов в папке с установленной программой на странице выбора папки назначения, выключил, ибо пока не надо, но может пригодится
//function NextButtonClick(CurPage: Integer): Boolean;
//var
// sz:Integer;
// s:string;
//begin
// Result:=True;
// If CurPage=6 then
// begin
// If (FileSearch('hl2.exe', ExpandConstant('{app}'))='') or (FileSearch('tf2.exe', ExpandConstant('{app}'))='')
//then
// begin
// s:='В папке '+ExpandConstant('{app}')+'' #13 'необходимые файлы не обнаружены.' #13#13 'Возможно патч уже установлен или версия игры не подходит.' #13#13 'Продолжить установку в эту папку?';
// if MsgBox(s, mbInformation, mb_YesNo) = idYes
// then
// Result:= True
// else
// Result:= False
// end else begin
// DeleteFile('{app}hl2.exe'); { разные плохие или хорошие }
// DeleteFile('{app} f2.exe'); { действия }
// end;
//end;
//end;
//**************************************************//
// Событие при нажатии на кнопку вкл.выкл. музыки
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}')+'ack.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;
end;
function InitializeSetup(): Boolean;
var
Ver, VerREG : Cardinal;
ResultStr: string;
begin
ExtractTemporaryFile('hl2.cjstyles');
LoadSkin(ExpandConstant('{tmp}hl2.cjstyles'), '');
Result := True;
ver := 10593862; //версия нашего патча (указывать без точек и скобок)
Result:=true;
RegQueryStringValue(HKLM, 'SOFTWAREValveSteam', 'TF2Path', ResultStr); //берем путь
if ResultStr = '' then
begin
MsgBox('Team Fortress 2 не установлен или установлен неверно.' #13#13 'Установка патча невозможна!', mbError, mb_Ok);
Result:=false; // если игра не установлена матюкнемся и работать небудем
end else
begin
RegQueryDWordValue(HKLM, 'SOFTWAREValveSteam', 'TF2Version', VerREG); //спрашиваем версию
if VerREg > Ver then
begin
MsgBox('Ваш клиент Team Fortress 2 имеет более новую версию чем патч.' #13#13 'Установка патча невозможна!', mbError, mb_Ok);
Result:=false; // если клиент уже имеет версию больше этого патча то отдыхаем
end;
if VerREG = Ver then
begin
MsgBox('Данный патч уже установлен.' #13#13 'Патч устанавливать нежелательно!', mbInformation, mb_Ok);
end; // если патч уже установлен то просто предупредим
end;
//Проверка запущеный процессов//
If RunTask('hl2.exe', false) then
begin
if MsgBox('Игра запущена! Закрыть её?', mbInformation, mb_YesNo) = idYes then
begin
KillTask('hl2.exe');
KillTask('TF2.exe');
Result:= True;
end else
Exit;
end;
end;
//**************************************************//
procedure DeinitializeSetup();
begin
BASS_Stop(); //нужно для остановки проигрывания
BASS_Free(); //нужно для быстрой выгрузки библиотеки вместе с муз. файлом
// Скрываем окно до того как выгрузится скин, что бы не промелькнуло окно без скина
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkin();
end;[/spoiler]
может есть у кого код стиля Steam ?
-
- Модератор
- Сообщения: 1464
- Зарегистрирован: 17.06.2007
- Откуда: 54
- Благодарил (а): 2 раза
- Поблагодарили: 90 раз
- Контактная информация:
Код: Выделить всё
Source: "D:\Counter-Strike\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Последний раз редактировалось M1ke 15.08.2009, 18:31, всего редактировалось 1 раз.
Как сделать ярлыки на рабочем столе и в панель управлении для игры cs 1.6? На рабочем столе у ярлыка должно быть такой путь "папка\hl.exe" -game cstrike -nomaster.
-
- Модератор
- Сообщения: 1464
- Зарегистрирован: 17.06.2007
- Откуда: 54
- Благодарил (а): 2 раза
- Поблагодарили: 90 раз
- Контактная информация:
Код: Выделить всё
[Icons]
Name: "{userdesktop}CS 1.6"; Filename: "{app}hl.exe"; WorkingDir: "{app}"; Tasks: desktopicon; Parameters: -game cstrike -nomaster;
Добавлено спустя 57 секунд:
:shock:а туда то зачем?Tr1p писал(а):панель управлении
Последний раз редактировалось M1ke 16.08.2009, 06:51, всего редактировалось 1 раз.