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

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

Автор: doombuster
Дата сообщения: 16.04.2009 21:04
Qarma
Расширенную версию Инно из шапки качай

Значит ждем код)
Автор: Qarma
Дата сообщения: 16.04.2009 21:05
doombuster

Ей и делаю...в чём проблема

Добавлено:
сор, у меня проблема была, робит всё....

Добавлено:

Цитата:

Значит ждем код)

Ждём и надеемся что сделают)))
Очень хочется такое реализовать, я бы для этого пару игр перепаковал, даже пару коллекций игр)

Добавлено:
http://forum.ru-board.com/topic.cgi?forum=5&topic=29117&start=1310&limit=1&m=1#1 - для чего этот скрипт))
Автор: doombuster
Дата сообщения: 16.04.2009 21:19
Qarma
Ты сам пробуй на основе этого скрипта, мне интересен максимально грамотный скрипт в целом

кстати нашел пример тебе, ты говорил что так реализовать нельзя:

Скрипт для установки архивов, записанных на двух DVD. На примере показано извлечение из 7z SFX-архивов.

[more][Setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
OutputBaseFilename=setup
Compression=none
OutputDir=C:\Output
SolidCompression=no

[Files]
;На диске рядом с инсталлятором размещаем папку EmptyFiles, в которую помещаем "файлы-пустышки" игры.
;Сначала выполняется первый архив (последовательность AfterInstall должна быть такой)
Source: "{src}\EmptyFiles\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs external; AfterInstall: InstallFirstArchive
;А затем второй
Source: "{src}\EmptyFiles\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs external; AfterInstall: CheckSelectedDisk

[Code]
//На странице установки отключаем подтверждающее сообщение (чтобы не было проблем с откатом)
procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:=True;
If CurPage=12 then
begin
Confirm:=False;
end;
end;

//Устанавливаем первый 7z SFX (Pack1.exe) архив, находящийся на первом диске (рядом с инсталлятором)
//Никаких сообщений об ошибках и т.д. не применяем, т.к. вся ответственность должна лежать на распространителе
procedure InstallFirstArchive;
var
res:Integer;
s,s1:string;
begin
s:=ExpandConstant('{app}');
s1:=ExpandConstant('{src}')+'\Pack1.exe';
Exec(s1, '-y -o"'+ s + '"', '', SW_SHOWNORMAL, ewWaitUntilTerminated, Res);
end;

//Затем выводим соответствующее сообщение для вставки второго диска со вторым архивом
procedure CheckSelectedDisk;
var
res:Integer;
s,s2:string;
Confirm: Boolean;
begin
s:=ExpandConstant('{app}');
s2:=ExpandConstant('{src}')+'\Pack2.exe';
//Если второго архива рядом нету (мало ли, в будущем игра будет записана на двуслойном диске)
if not Exec(s2, '-y -o"'+ s + '"', '', SW_SHOWNORMAL, ewWaitUntilTerminated, Res) then
//то тогда выводим сообщение
case MsgBox('Для дальнейшей установки требуется файл '''+ s2 +'''!'#13#13 +
'Вставьте второй DVD, содержащий архив, и нажмите "OK".' #13#13 +
'Нажмите "Отмена", чтобы прекратить дальнейшую установку.', mbInformation, MB_OKCANCEL)
of IDCANCEL:
begin
//Выполняем откат действий при отмене
Confirm:=False;
WizardForm.CancelButton.OnClick(WizardForm.CancelButton);
end
IDOK:
begin
CheckSelectedDisk;
end;
end;
end;
[/more]


Автор: Qarma
Дата сообщения: 16.04.2009 21:26

Цитата:
мне интересен максимально грамотный скрипт в целом

Мне тоже, если бы Serega0675 сделал, то круто бы было.


Добавлено:
http://forum.ru-board.com/topic.cgi?forum=5&topic=29117&start=1321&limit=1&m=1#1 - не робит про прогрессбар, просто не передвигается

Добавлено:

Цитата:
7z SFX-архивов.

Ну а надо то FreeArc архив чтобы распаковывало
Автор: doombuster
Дата сообщения: 16.04.2009 21:52
Qarma
Чет у тебя как-то странно, архивы FreeArc, а в коде не намёка про Arc.exe? Как они у тебя распаковываются?
Автор: Qarma
Дата сообщения: 16.04.2009 21:55
doombuster


Цитата:
Чет у тебя как-то странно, архивы FreeArc, а в коде не намёка про Arc.exe? Как они у тебя распаковываются?

У меня они *.exe, то есть само распаковывающиеся

Добавлено:
Мне бы хотелось сделать как у ЗлогоДеда....2 прогрессбара
Автор: doombuster
Дата сообщения: 16.04.2009 22:01
Qarma

Цитата:
Ну а надо то FreeArc архив чтобы распаковывало

Так что там, что тут - самораспаковывающиеся архивы) вот и пробуй как там) только подправь)
Там примерно тот же код

Щас я сожму ченить в арке, и попробую
Автор: Serega0675
Дата сообщения: 16.04.2009 22:28
doombuster
[more=попробуйте]
Код: [Setup]
AppName=Lost Planet Colonies
AppVerName=Lost Planet Colonies
DefaultDirName=D:\Games\Lost Planet Colonies
OutputBaseFilename=Setup
Compression=lzma/ultra64
SolidCompression=yes
DiskSpanning=true
SlicesPerDisk=3
DiskSliceSize=1100000000
InternalCompressLevel=ultra64
OutputDir=D:\test\lp_ce
WizardImageFile=D:\test\lp.bmp
WizardSmallImageFile=D:\test\lp_small.bmp
DisableProgramGroupPage=true
DefaultGroupName=Lost Planet Colonies
VersionInfoVersion=1.0.0.0
DirExistsWarning=no
DisableReadyPage=true
AppVersion=1.0.0.0
UninstallDisplayName=Lost Planet Colonies


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

[LangOptions]
WelcomeFontSize=10

[Icons]
Name: {group}\Lost Planet Colonies; Filename: {app}\LPCLauncher.exe; WorkingDir: {app}
Name: {group}\Удалить игру; Filename: {uninstallexe}
Name: {userdesktop}\Lost Planet Colonies; Filename: {app}\LPCLauncher.exe; WorkingDir: {app}

[Files]
Source: D:\test\logo.bmp;DestDir:{tmp};Flags: dontcopy nocompression solidbreak
Source: D:\Games\Lost Planet Colonies\*; DestDir: {app}; Flags: ignoreversion createallsubdirs recursesubdirs sortfilesbyextension
Source: D:\test\NOCOMP\ZZPack1.exe; DestDir: {app}; AfterInstall: Arc(ExpandConstant('{app}\ZZPack1.exe'), ExpandConstant('{app}\Papka\')); Flags: ignoreversion
Source: D:\test\NOCOMP\ZZPack1_2.exe; DestDir: {app}; AfterInstall: Arc(ExpandConstant('{app}\ZZPack1_2.exe'), ExpandConstant('{app}\Papka\')); Flags: ignoreversion
Source: D:\test\NOCOMP\ZZPack2.exe; DestDir: {app}; AfterInstall: Arc(ExpandConstant('{app}\ZZPack2.exe'), ExpandConstant('{app}\Papka\')); Flags: ignoreversion
Source: D:\test\NOCOMP\ZZPack2_2.exe; DestDir: {app}; AfterInstall: Arc(ExpandConstant('{app}\ZZPack2_2.exe'), ExpandConstant('{app}\Papka\')); Flags: ignoreversion

[Code]
//////////////
type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);

const
NeedSize = 7760;

var
PageNameLabel, PageDescriptionLabel: TLabel;
DesktopIcon: TCheckBox;
LogoImage:TBitmapImage;
LogoPanel: TPanel;
LogoLabel: TLabel;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel, FreeSpaceLabel: TLabel;
ExtractFile: TNewStaticText;
TimerID: LongWord;
pfunc: LongWord;
Label1: Tlabel;
WLabel1, WLabel2: TLabel;
FLabel1, FLabel2: TLabel;

/////////

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 := 'Доступно место на диске: ' + FloatToStr(Round(FreeMB/1024*100)/100) + ' GB'
else
FreeSpaceLabel.Caption := 'Доступно место на диске: ' + IntToStr(FreeMB)+ ' MB';

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

//////////
procedure LogoLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://kirovmedia.ru/forum', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
end;

procedure InitializeWizard();
begin
with WizardForm do
begin
WelcomeLabel1.Hide;
WelcomeLabel2.Hide;
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
DiskSpaceLabel.Hide;
FinishedHeadingLabel.Hide;
FinishedLabel.Hide;

WizardSmallBitmapImage.Left := ScaleX(0);
WizardSmallBitmapImage.Top := ScaleY(0);
WizardSmallBitmapImage.Width := WizardForm.MainPanel.Width;
WizardSmallBitmapImage.Height := WizardForm.MainPanel.Height;

PageDescriptionLabel.Width:=300;
PageNameLabel.Width:=300;
WizardBitmapImage.Width := WizardForm.Width;
WizardBitmapImage.Height := WizardForm.Height;
WizardBitmapImage2.Width := WizardForm.Width;
WizardBitmapImage2.Height := WizardForm.Height;
end;

DesktopIcon := TCheckBox.Create(WizardForm);
with DesktopIcon do
begin
Parent := WizardForm.SelectDirPage;
Caption := 'Добавить ярлык на рабочий стол';
Left := ScaleX(0);
Top := ScaleY(WizardForm.DirEdit.Top + 35);
Width := ScaleX(400);
Height := ScaleY(15);
TabOrder := 0;
Checked := True;
end;
////////////
FLabel1 := TLabel.Create(WizardForm);
with FLabel1 do
begin
Left := ScaleX(176);
Top := ScaleY(16);
Width := ScaleX(301);
Height := ScaleY(54);
AutoSize := False;
WordWrap := True;
Font.Size := 12;
Font.Style := [fsBold];
Font.Color:= clblack;
ShowAccelChar := False;
Caption := WizardForm.FinishedHeadingLabel.Caption;
Transparent := True;
Parent := WizardForm.FinishedPage;
end;

FLabel2 :=TLabel.Create(WizardForm);
with FLabel2 do
begin
Top := ScaleY(76);
Left := ScaleX(176);
Width := ScaleX(301);
Height := ScaleY(53); // во втором варианте ScaleY(77);
AutoSize := False;
WordWrap := True;
Font.Color:= clblack;
ShowAccelChar := False;
Caption := 'Программа установлена на Ваш компьютер.' #13#13
'Нажмите «Завершить», чтобы выйти из программы установки.';
Transparent := True;
Parent := WizardForm.FinishedPage
end;

WLabel1 := TLabel.Create(WizardForm);
with WLabel1 do
begin
Left := ScaleX(176);
Top := ScaleY(16);
Width := ScaleX(301);
Height := ScaleY(54); // во втором варианте ScaleY(100);
AutoSize := False;
WordWrap := True;
Font.Size := 12;
Font.Style := [fsBold];
Font.Color:= clblack;
ShowAccelChar := False;
Caption := WizardForm.WelcomeLabel1.Caption;
Transparent := True;
Parent := WizardForm.WelcomePage;
end;

WLabel2:=TLabel.Create(WizardForm);
with WLabel2 do
begin
Top := ScaleY(76);
Left := ScaleX(176);
Width := ScaleX(301);
Height := ScaleY(234);
AutoSize := False;
WordWrap := True;
Font.Color:= clblack;
ShowAccelChar := False;
Caption := WizardForm.WelcomeLabel2.Caption;
Transparent := True;
Parent := WizardForm.WelcomePage;
end;
//////////
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(198);
Width := ScaleX(209);
Height := ScaleY(13);
Caption := 'Требуется место на диске: 7,57 GB' ;
end;
////////////
PageNameLabel := TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left := ScaleX(45);
Top := ScaleY(10);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Color := clwhite;
Font.Style := [fsBold];
Transparent := True;
Parent := WizardForm.MainPanel;
end;

PageDescriptionLabel := TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left := ScaleX(45);
Top := ScaleY(25);
Width := ScaleX(475);
Height := ScaleY(30);
AutoSize := False;
WordWrap := True;
Font.Color := clwhite;
Transparent := True;
Parent := WizardForm.MainPanel;
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;
/////////////////
LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(8);
Top := ScaleY(327);
Width := ScaleX(120);
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;
ExtractTemporaryFile('logo.bmp');
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:=@LogoLabelOnClick;
end;
end;

procedure Arc(s, s1: string);
var
res: Integer;
begin
Exec(s, '-x -y -dp"'+ s1 + '"', '', SW_SHOWNORMAL, ewWaitUntilTerminated, res);
DeleteFile(s);
ExtractFile.Caption := 'Идёт распаковка данных, пожалуйста подождите...'; // этот текст не будет отбражаться, т.к. не создан - ExtractFile: TNewStaticText.Create(WizardForm);
WizardForm.ProgressGauge.Position:= WizardForm.ProgressGauge.Position + 1;
// Application.ProcessMessages; // необходима расширенная версия от Restools
end;

///procedure animateprogress;
///begin ProgressBar1.Position := ProgressBar1.Position+1
///end;

///ProgressBar1 := TNewProgressBar.Create(wizardform);
////with ProgressBar1 do
////begin
////Parent := wizardform.installingpage;
////Left := wizardform.progressgauge.left;
////Top := wizardform.progressgauge.top+wizardform.progressgauge.height+15;
///Width := wizardform.progressgauge.width;
///Height := wizardform.progressgauge.height;
///Max :=11; //задается как кол-во файлов в [_run]
///end;

procedure CurPageChanged(CurPageID: Integer);
begin
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;

if CurPageID = wpSelectDir then
begin
WizardForm.NextButton.Caption:='Установить';
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False;
end;
end;

Автор: spider91
Дата сообщения: 17.04.2009 00:26
doombuster

спасибо. и за код что просит 2ой диск отдельное спасибо.



Serega0675

незнаеш как сделать инсталятор подвижным во время выполнения процедур распаковки и установки кодеков?
Автор: doombuster
Дата сообщения: 17.04.2009 00:35
Serega0675
Очень изящно, а как к этим 4 файлам собственный ProgressBar прикрутить? Также во флаги Afterinstall: animateprogress дописать? и потом [more=так][Code]
var
ProgressBar1: TNewProgressBar;

procedure animateprogress;
begin ProgressBar1.Position := ProgressBar1.Position+1
end;

procedure InitializeWizard;
begin
ProgressBar1 := TNewProgressBar.Create(wizardform);
with ProgressBar1 do
begin
Parent := wizardform.installingpage;
Left := wizardform.progressgauge.left;
Top := wizardform.progressgauge.top+wizardform.progressgauge.height+15;
Width := wizardform.progressgauge.width;
Height := wizardform.progressgauge.height;
Max :=100; //задается как кол-во файлов в [_run]
end;
end;
[/more]
Ой наверное я что-то непонимаю(
Автор: spider91
Дата сообщения: 17.04.2009 00:47
doombuster


у меня все получилось с progressbar но через процедуры а не через [run] (что для меня намного лучше).

только код для бара что ты мне дал совсем не то что у злого деда

ты дал мне ето:








а хотел я вот ето:








Автор: Qarma
Дата сообщения: 17.04.2009 06:07
Не кто так мне и не решил проблему, не с архивами не с баром....

Добавлено:
А при этом http://forum.ru-board.com/topic.cgi?forum=5&topic=29117&start=1330&limit=1&m=1#1 скрипте такая ошибка: unknown identifier 'Application'
Автор: doombuster
Дата сообщения: 17.04.2009 06:51
spider91
Располагай их на форме как хочешь, кодов тут полно, как прогресс бар изменять)

На втором скрине, теже два бара, только уменьшены и в ряд стоят)
Автор: Qarma
Дата сообщения: 17.04.2009 07:08
Шикарно бы было дополнить этот - http://forum.ru-board.com/topic.cgi?forum=5&topic=29117&start=1330&limit=1&m=1#1 скрипт прорессбаром)
Автор: skeptik_vdm
Дата сообщения: 17.04.2009 07:11
Кому надо могу выложить скрипт RePack'a игры Prince of Persia 2008 я старался сделать его на подобие как у ЗлогоДеда там присутстсвует создание 2-ух прогрессбаров потом извлечение их из Arc архивов и т.д. при написании скрипта помогал ЗлойДед!!!
Автор: Qarma
Дата сообщения: 17.04.2009 07:14
skeptik_vdm

Давай, буду очень благодарен))
Автор: skeptik_vdm
Дата сообщения: 17.04.2009 07:50
Вот скрипт RePack'a для игры Prince of Persia 2008
[more=Подробнее...]
#define MainExe "{app}\Prince of Persia.exe"
#define GDFBinary "{app}\Prince of Persia.exe"

[Setup]
AppName=Prince of Persia
AppVerName=Prince of Persia
DefaultDirName={pf}\Ubisoft\Prince of Persia
OutputDir=Output
Compression=lzma/ultra64
DisableReadyPage=true
InternalCompressLevel=ultra64
SolidCompression=true
ArchitecturesInstallIn64BitMode=x64
ArchitecturesAllowed=x64 x86
RestartIfNeededByRun=false
UsePreviousAppDir=false
DirExistsWarning=no
DisableProgramGroupPage=true
DefaultGroupName=Ubisoft\Prince of Persia
UsePreviousGroup=false
UsePreviousSetupType=false
UsePreviousTasks=false
UninstallFilesDir={app}\Uninstall
WizardImageFile=WizardImage.bmp

[Files]
Source: arc.exe; DestDir: {tmp}; Flags: dontcopy
Source: GameuxInstallHelper.dll; DestDir: {app}\Uninstall; Flags: overwritereadonly ignoreversion
Source: H:\Prince of Persia\Launcher\*;DestDir:{app}\Launcher;Flags:ignoreversion recursesubdirs createallsubdirs;
Source: H:\Prince of Persia\Support\*;DestDir:{app}\Support;Flags:ignoreversion recursesubdirs createallsubdirs;
Source: H:\Prince of Persia\Resources\*; DestDir: {app}\Resources; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: H:\Prince of Persia\PrinceOfPersia_Launcher.exe;DestDir:{app};Flags:ignoreversion
Source: H:\Prince of Persia\Prince of Persia.exe;DestDir:{app};Flags:ignoreversion
Source: H:\Prince of Persia\eax.dll;DestDir:{app};Flags:ignoreversion
Source: H:\Prince of Persia\DARE.INI;DestDir:{app};Flags:ignoreversion
Source: H:\Prince of Persia\Prince of Persia.exe;DestDir:{app};Flags:ignoreversion
Source: H:\Prince of Persia\binkw32.dll;DestDir:{app};Flags:ignoreversion
Source: {src}\Gamedata\*;Destdir:{app}; Flags:ignoreversion recursesubdirs createallsubdirs external;

[Dirs]
Name:"{app}\EKShaders";
Name:"{app}\JITGenerated";
Name:"{app}\logs";

[Messages]
SelectDirBrowseLabel=Нажмите «Установить», чтобы начать установку. Если Вы хотите выбрать другую папку, нажмите «Обзор».

[LangOptions]
WelcomeFontName=Tahoma
WelcomeFontSize=11

[Registry]
Root: HKLM; Subkey: SOFTWARE\Ubisoft\Prince of Persia; Flags: uninsdeletekey
Root: HKLM; Subkey: SOFTWARE\Ubisoft\Prince of Persia; ValueName: Executable; ValueType: String; ValueData: {app}\PrinceOfPersia_Launcher.exe; Flags: uninsdeletekey
Root: HKLM; Subkey: SOFTWARE\Ubisoft\Prince of Persia; ValueName: InstallDir; ValueType: String; ValueData: {app}\; Flags: uninsdeletekey
Root: HKLM; Subkey: SOFTWARE\Ubisoft\Prince of Persia; ValueName: Language; ValueType: string; ValueData: Russian; Flags: uninsdeletekey
Root: HKLM; Subkey: SOFTWARE\Ubisoft\Prince of Persia\GameUpdate; ValueName: execPath; ValueType: String; ValueData: {app}\Prince of Persia.exe; Flags: uninsdeletekey
Root: HKLM; Subkey: SOFTWARE\Ubisoft\Prince of Persia\GameUpdate; ValueName: info; ValueType: String; ValueData: 08a0f1c01d540ee143f7ee48a91898fa; Flags: uninsdeletekey
Root: HKLM; Subkey: SOFTWARE\Ubisoft\Prince of Persia\GameUpdate; ValueName: installdir;ValueType: String; ValueData: {app}\; Flags: uninsdeletekey
Root: HKLM; Subkey: SOFTWARE\Ubisoft\Prince of Persia\GameUpdate; ValueName: language; ValueType: String; ValueData: us; Flags: uninsdeletekey

[Run]
Filename: {app}\Launcher\Launcher.exe; WorkingDir: {app}\Launcher; Description: Начать игру; Flags: postinstall
Filename: {src}\DirectX\DXSETUP.exe; Parameters: /silent; StatusMsg: Обновление:Microsoft DirectX 9.0c...; Check: InstallDirectX
Filename: {src}\Redistributables\vcredist_x86.exe; Parameters: "/q:a /c:""VCREDI~3.EXE /q:a /c:""""msiexec /i vcredist.msi /qn"""" """; StatusMsg: Обновление:Microsoft Visual C++ 2005...; Check: InstallDirectX

[Icons]
Name: {group}\Prince of Persia; Filename: {app}\Launcher\Launcher.exe; WorkingDir: {app}\Launcher\
Name: {group}\Руководство; Filename: {app}\Support\Manual\PrinceOfPersia.pdf
Name: {group}\ReadMe; Filename: {app}\Support\ReadMe\ReadMe.txt
Name: {group}\Удалить игру; Filename: {uninstallexe}
Name: {commondesktop}\Prince of Persia; Filename: {app}\Launcher\Launcher.exe; WorkingDir: {app}\Launcher\; Check: MakeDesktopIcon

[UninstallDelete]
Name: {app}\*; Type: filesandordirs

[Code]
type
TGUID = record
Data1: Cardinal;
Data2,
Data3: Word;
Data4: array [0..8] of char;
end;

function GenerateGUID(var GUID: TGUID): Cardinal; external 'GenerateGUID@files:GameuxInstallHelper.dll stdcall setuponly';
function AddToGameExplorer(Binary: String; Path: String; InstallType: Integer; var GUID: TGUID): Cardinal; external 'AddToGameExplorerA@files:GameuxInstallHelper.dll stdcall setuponly';
function CreateTask(InstallType: Integer; var GUID: TGUID; TaskType: Integer; TaskNumber: Integer; TaskName: String; Binary: String; Parameters: String): Cardinal; external 'CreateTaskA@files:GameuxInstallHelper.dll stdcall setuponly';
function RetrieveGUIDForApplication(Binary: String; var GUID: TGUID): Cardinal; external 'RetrieveGUIDForApplicationA@{app}\Uninstall\GameuxInstallHelper.dll stdcall uninstallonly';
function RemoveFromGameExplorer(var GUID: TGUID): Cardinal; external 'RemoveFromGameExplorer@{app}\Uninstall\GameuxInstallHelper.dll stdcall uninstallonly';
function RemoveTasks(var GUID: TGUID): Cardinal; external 'RemoveTasks@{app}\Uninstall\GameuxInstallHelper.dll stdcall uninstallonly';

const
PlayTask = 0;
SupportTask = 1;

var
NeedSize:Integer;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
DesktopIcon, DirectX: TCheckBox;
GUID: TGUID;
ProgressBar1: TNewProgressBar;
/////Вычисление свободного места на диске
procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption := 'Доступно места на диске: '+ FloatToStr(round(FreeMB/1024*100)/100) + ' GB' else
FreeSpaceLabel.Caption := 'Доступно места на диске: '+ IntToStr(FreeMB)+ ' MB';
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := False else
WizardForm.NextButton.Enabled := True; end;

procedure animateprogress;
begin ProgressBar1.Position := ProgressBar1.Position+1
end;

procedure GetNeedSpaceCaption; /////Вычисление требуемого места для установки
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := 'Требуется места на диске: '+ FloatToStr(round(NeedSize/1024*100)/100) + ' GB' else
NeedSpaceLabel.Caption := 'Требуется места на диске: '+ IntToStr(NeedSize)+ ' MB';end;

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

function InstallDirectX: Boolean;
begin
Result:=DirectX.Checked;end;

procedure InitializeWizard();
begin
begin
NeedSize := 6610; //Здесь указывается место для приложения
WizardForm.DiskSpaceLabel.Hide;
WizardForm.FilenameLabel.Hide;
WizardForm.ProgressGauge.Top:=ScaleY(100); //Изменение стандартного прогрессбара
WizardForm.ProgressGauge.Width:=262; //
WizardForm.ProgressGauge.Left:=155; //
WizardForm.StatusLabel.Top:=ScaleY(80);
WizardForm.WelcomeLabel2.Top:=ScaleY(90);
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(202);
Width := ScaleX(209);
Height := ScaleY(13);
end;
end;
FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(220);
Width := ScaleX(209);
Height := ScaleY(13);
end;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
begin //Создание чекбокса для создания ярлыка на рабочем столе
DesktopIcon := TCheckBox.Create(WizardForm);
with DesktopIcon do
begin
Parent := WizardForm.SelectDirPage;
Caption := 'Добавить ярлык на Рабочий стол';
Left := ScaleX(0);
Top := WizardForm.DirEdit.Top+35;
Width := ScaleX(400);
Height := ScaleY(15);
TabOrder := 0;
Checked := True;
end;
end;
begin //Создание чекбокса для установки DirectX
DirectX := TCheckBox.Create(WizardForm);
with DirectX do
begin
Parent := WizardForm.SelectDirPage;
Caption := 'Установить дополнительное программное обеспечение';
Left := ScaleX(0);
Top := WizardForm.DirEdit.Top+55;
Width := ScaleX(400);
Height := ScaleY(15);
TabOrder := 0;
Checked := True;
end;
end;
begin ///Создание нового прогрессбара
ProgressBar1 := TNewProgressBar.Create(wizardform);
with ProgressBar1 do
begin
Parent := wizardform.installingpage;
Top := 100
Width := 150;
Height := wizardform.progressgauge.height;
Max :=3; //кол-во архивов
end;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
begin
if CurPageID=wpSelectDir then
begin //Тут если Свободное место на диске < требуемого то кнопка "Установвить" на PageSelectDir неактивна
GetNeedSpaceCaption;
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False
WizardForm.NextButton.Caption:='Установить'; //Rename кнопки "Далее" на SelectDir
end;
end;
end;

procedure CurStepChanged(CurStep: TSetupStep); ///Регистрация в GameExplorer
var
Binary, MainExe: String;
ResultCode:Integer;
begin
if CurStep = ssInstall then //Перед установкой
begin
GenerateGUID(GUID);
ExtractTemporaryFile('arc.exe'); //Извлечение Arc.exe в Temp
if (FileExists(AddBackslash(ExpandConstant('{tmp}')) + 'arc.exe')) and (FileExists(AddBackslash(ExpandConstant('{src}')) + 'data-a.bin')) then
begin
WizardForm.StatusLabel.Caption:='Распаковка файлов...'; //Извлечение из 1-го архива
Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-a.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+1

WizardForm.StatusLabel.Caption:='Распаковка файлов...'; //Извлечение из 2-го архива
Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-b.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+1

WizardForm.StatusLabel.Caption:='Распаковка файлов...'; //Извлечение из 3-го архива
Exec(ExpandConstant('{tmp}\Arc.exe'), 'x '+AddQuotes(ExpandConstant('{src}\data-c.bin'))+' -y -dp'+AddQuotes(ExpandConstant('{app}')), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
ProgressBar1.Position := ProgressBar1.Position+1

end else begin
MsgBox('Исполняемый файл:' + #13#10#13#10 + (AddBackslash(ExpandConstant('{tmp}')) + 'arc.exe') + #13#10#13#10 + 'не найден. Установка отменена', mbInformation, MB_OK);
Abort;
end;
end;
if CurStep = ssPostInstall then
begin
Binary:=ExpandConstant('{#GDFBinary}');
MainExe:=ExpandConstant('{#MainExe}');
AddToGameExplorer(Binary, ExpandConstant('{app}'), 3, GUID);
CreateTask(3, GUID, PlayTask, 0, 'Play', MainExe, '');
end;
end;

function InitializeSetup(): Boolean;
var
UnStr: String;
ErrorCode, Mesages: Integer;
begin //Повторный запуск
Result := True;
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Prince of Persia_is1', 'UninstallString', UnStr) then
begin
If UnStr <> '' then
begin
Mesages := MsgBox('Prince of Persia уже установлена в Вашей системе.'+#10#10+'Хотите удалить приложение?', mbInformation, MB_YESNOCANCEL);
case Mesages of
idYes:
begin
UnStr := RemoveQuotes(UnStr);
Exec(UnStr, '/silent', '', SW_Show, ewWaitUntilTerminated, ErrorCode);
Result := True;
end
idNo:
begin
Result := True;
end
idCancel:
begin
Result := False;
end;
end;
end;
end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
ResultStr:String;
Binary: String;
GUID: TGUID;
begin /////////////////////////////////////////Удаление игровых сохранений
if CurUninstallStep=usPostUninstall then
begin
RegQueryStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Prince of Persia_is1', 'UnInstConfirm', ResultStr)
if DirExists(ExpandConstant('{userdocs}')+'\Prince of Persia') then
if MsgBox('Удалить сохраненные игры и настройки?',mbconfirmation, mb_YesNo) = IDYES then
begin
if not DelTree(ExpandConstant('{userdocs}')+'\Prince of Persia', True, True, True)
then
MsgBox('Папка не удалена!' #13#13 'Папка не существует или задействована.', mbError, MB_OK);
end;
end;
begin
if CurUninstallStep=usUninstall then //Удаление из GameExplorer
begin
Binary:=ExpandConstant('{#GDFBinary}');
RetrieveGUIDForApplication(Binary, GUID);
RemoveFromGameExplorer(GUID);
RemoveTasks(GUID);
UnloadDll(ExpandConstant('{app}\Uninstall\GameuxInstallHelper.dll'));
end;
end;
end;
[/more]
Автор: Serega0675
Дата сообщения: 17.04.2009 08:19
doombuster

Цитата:
как к этим 4 файлам собственный ProgressBar прикрутить?

[more=попробуйте]
Код: [Setup]
AppName=Lost Planet Colonies
AppVerName=Lost Planet Colonies
DefaultDirName=D:\Games\Lost Planet Colonies
OutputBaseFilename=Setup
Compression=lzma/ultra64
SolidCompression=yes
DiskSpanning=true
SlicesPerDisk=3
DiskSliceSize=1100000000
InternalCompressLevel=ultra64
OutputDir=D:\test\lp_ce
WizardImageFile=D:\test\lp.bmp
WizardSmallImageFile=D:\test\lp_small.bmp
DisableProgramGroupPage=true
DefaultGroupName=Lost Planet Colonies
VersionInfoVersion=1.0.0.0
DirExistsWarning=no
DisableReadyPage=true
AppVersion=1.0.0.0
UninstallDisplayName=Lost Planet Colonies


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

[LangOptions]
WelcomeFontSize=10

[Icons]
Name: {group}\Lost Planet Colonies; Filename: {app}\LPCLauncher.exe; WorkingDir: {app}
Name: {group}\Удалить игру; Filename: {uninstallexe}
Name: {userdesktop}\Lost Planet Colonies; Filename: {app}\LPCLauncher.exe; WorkingDir: {app}

[Files]
Source: D:\test\logo.bmp;DestDir:{tmp};Flags: dontcopy nocompression solidbreak
Source: D:\Games\Lost Planet Colonies\*; DestDir: {app}; Flags: ignoreversion createallsubdirs recursesubdirs sortfilesbyextension
Source: D:\test\NOCOMP\ZZPack1.exe; DestDir: {app}; AfterInstall: Arc(ExpandConstant('{app}\ZZPack1.exe'), ExpandConstant('{app}\Papka\')); Flags: ignoreversion
Source: D:\test\NOCOMP\ZZPack1_2.exe; DestDir: {app}; AfterInstall: Arc(ExpandConstant('{app}\ZZPack1_2.exe'), ExpandConstant('{app}\Papka\')); Flags: ignoreversion
Source: D:\test\NOCOMP\ZZPack2.exe; DestDir: {app}; AfterInstall: Arc(ExpandConstant('{app}\ZZPack2.exe'), ExpandConstant('{app}\Papka\')); Flags: ignoreversion
Source: D:\test\NOCOMP\ZZPack2_2.exe; DestDir: {app}; AfterInstall: Arc(ExpandConstant('{app}\ZZPack2_2.exe'), ExpandConstant('{app}\Papka\')); Flags: ignoreversion


Код:
//////////////
type
TProc = procedure(HandleW, msg, idEvent, TimeSys: LongWord);

const
NeedSize = 7760;

var
PageNameLabel, PageDescriptionLabel: TLabel;
DesktopIcon: TCheckBox;
LogoImage:TBitmapImage;
LogoPanel: TPanel;
LogoLabel: TLabel;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel, FreeSpaceLabel: TLabel;
ExtractFile: TNewStaticText;
TimerID: LongWord;
pfunc: LongWord;
Label1: Tlabel;
WLabel1, WLabel2: TLabel;
FLabel1, FLabel2: TLabel;
ProgressBar1: TNewProgressBar;

/////////

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 := 'Доступно место на диске: ' + FloatToStr(Round(FreeMB/1024*100)/100) + ' GB'
else
FreeSpaceLabel.Caption := 'Доступно место на диске: ' + IntToStr(FreeMB)+ ' MB';

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

//////////
procedure LogoLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://kirovmedia.ru/forum', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
end;

procedure InitializeWizard();
begin
with WizardForm do
begin
WelcomeLabel1.Hide;
WelcomeLabel2.Hide;
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
DiskSpaceLabel.Hide;
FinishedHeadingLabel.Hide;
FinishedLabel.Hide;

WizardSmallBitmapImage.Left := ScaleX(0);
WizardSmallBitmapImage.Top := ScaleY(0);
WizardSmallBitmapImage.Width := WizardForm.MainPanel.Width;
WizardSmallBitmapImage.Height := WizardForm.MainPanel.Height;

PageDescriptionLabel.Width:=300;
PageNameLabel.Width:=300;
WizardBitmapImage.Width := WizardForm.Width;
WizardBitmapImage.Height := WizardForm.Height;
WizardBitmapImage2.Width := WizardForm.Width;
WizardBitmapImage2.Height := WizardForm.Height;
end;

DesktopIcon := TCheckBox.Create(WizardForm);
with DesktopIcon do
begin
Parent := WizardForm.SelectDirPage;
Caption := 'Добавить ярлык на рабочий стол';
Left := ScaleX(0);
Top := ScaleY(WizardForm.DirEdit.Top + 35);
Width := ScaleX(400);
Height := ScaleY(15);
TabOrder := 0;
Checked := True;
end;
////////////
FLabel1 := TLabel.Create(WizardForm);
with FLabel1 do
begin
Left := ScaleX(176);
Top := ScaleY(16);
Width := ScaleX(301);
Height := ScaleY(54);
AutoSize := False;
WordWrap := True;
Font.Size := 12;
Font.Style := [fsBold];
Font.Color:= clblack;
ShowAccelChar := False;
Caption := WizardForm.FinishedHeadingLabel.Caption;
Transparent := True;
Parent := WizardForm.FinishedPage;
end;

FLabel2 :=TLabel.Create(WizardForm);
with FLabel2 do
begin
Top := ScaleY(76);
Left := ScaleX(176);
Width := ScaleX(301);
Height := ScaleY(53); // во втором варианте ScaleY(77);
AutoSize := False;
WordWrap := True;
Font.Color:= clblack;
ShowAccelChar := False;
Caption := 'Программа установлена на Ваш компьютер.' #13#13
'Нажмите «Завершить», чтобы выйти из программы установки.';
Transparent := True;
Parent := WizardForm.FinishedPage
end;

WLabel1 := TLabel.Create(WizardForm);
with WLabel1 do
begin
Left := ScaleX(176);
Top := ScaleY(16);
Width := ScaleX(301);
Height := ScaleY(54); // во втором варианте ScaleY(100);
AutoSize := False;
WordWrap := True;
Font.Size := 12;
Font.Style := [fsBold];
Font.Color:= clblack;
ShowAccelChar := False;
Caption := WizardForm.WelcomeLabel1.Caption;
Transparent := True;
Parent := WizardForm.WelcomePage;
end;

WLabel2:=TLabel.Create(WizardForm);
with WLabel2 do
begin
Top := ScaleY(76);
Left := ScaleX(176);
Width := ScaleX(301);
Height := ScaleY(234);
AutoSize := False;
WordWrap := True;
Font.Color:= clblack;
ShowAccelChar := False;
Caption := WizardForm.WelcomeLabel2.Caption;
Transparent := True;
Parent := WizardForm.WelcomePage;
end;
//////////
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(198);
Width := ScaleX(209);
Height := ScaleY(13);
Caption := 'Требуется место на диске: 7,57 GB' ;
end;
////////////
PageNameLabel := TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left := ScaleX(45);
Top := ScaleY(10);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Color := clwhite;
Font.Style := [fsBold];
Transparent := True;
Parent := WizardForm.MainPanel;
end;

PageDescriptionLabel := TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left := ScaleX(45);
Top := ScaleY(25);
Width := ScaleX(475);
Height := ScaleY(30);
AutoSize := False;
WordWrap := True;
Font.Color := clwhite;
Transparent := True;
Parent := WizardForm.MainPanel;
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;
/////////////////
LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(8);
Top := ScaleY(327);
Width := ScaleX(120);
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;
ExtractTemporaryFile('logo.bmp');
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:=@LogoLabelOnClick;
end;

ProgressBar1 := TNewProgressBar.Create(WizardForm);
with ProgressBar1 do
begin
Parent := WizardForm.InstallingPage;
Left := WizardForm.ProgressGauge.Left;
Top := WizardForm.ProgressGauge.Top + WizardForm.ProgressGauge.Height + 15;
Width := WizardForm.ProgressGauge.Width;
Height := WizardForm.ProgressGauge.Height;
{ указываем на сколько секций разбить прогрессбар, в данном случае у нас 4 архива, вот и делим его на 4 части }
Max := 4; //задается по количеству файлов имеющих AfterInstall: Arc(... )
end;
end;

procedure Arc(s, s1: string);
var
res: Integer;
begin
Exec(s, '-x -y -dp"'+ s1 + '"', '', SW_SHOWNORMAL, ewWaitUntilTerminated, res);
DeleteFile(s);
ExtractFile.Caption := 'Идёт распаковка данных, пожалуйста подождите...'; // этот текст не будет отбражаться, т.к. не создан - ExtractFile: TNewStaticText.Create(WizardForm);
WizardForm.ProgressGauge.Position:= WizardForm.ProgressGauge.Position + 1;
ProgressBar1.Position := ProgressBar1.Position + 1;
{ чтоб компилятор не ругался на Application, необходима расширенная версия от Restools ,
но должен работать и без Application.ProcessMessages }
// Application.ProcessMessages;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;

if CurPageID = wpSelectDir then
begin
WizardForm.NextButton.Caption:='Установить';
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False;
end;
end;

Автор: Qarma
Дата сообщения: 17.04.2009 09:43
Спасибо за скрипт принца, пойду разбираться в нём
Автор: spider91
Дата сообщения: 17.04.2009 09:47
skeptik_vdm


если бары как у деда большое спасибо. пото посмотрю, щас времени нет
Автор: Qarma
Дата сообщения: 17.04.2009 09:50
skeptik_vdm

Что тут должно лежать?
Source: {src}\Gamedata\*;Destdir:{app}; Flags:ignoreversion recursesubdirs createallsubdirs external;

Добавлено:
Что не так? 0_о
Автор: spider91
Дата сообщения: 17.04.2009 10:12
ура!!! поучилось с барами как у деда все работает отлично.

большое спасибо тебе skeptik_vdm
Автор: skeptik_vdm
Дата сообщения: 17.04.2009 10:14
У меня там лежит папка с видео-заставками
Я их не стал сжимать ни архиватором и не стал включать в инсталлятор потому что от этого толку не будет!!!
Автор: Qarma
Дата сообщения: 17.04.2009 10:14
spider91

Не подскажешь че и куда пихать...а то я в замешательстве %)

Добавлено:
Почему он пишет что файл arc.exe не найден хотя я его запихал в инсталлер....это же файл от FreeArc?
Автор: spider91
Дата сообщения: 17.04.2009 10:16
Qarma

вот полный скрипт. блин уже опаздываю


[more]
[_Setup]
AppName=Крестный отец™ II by spider91
AppVerName=Крестный отец™ II
AppPublisher=EA Games
DefaultDirName={pf}\EA Games\Крестный отец™ II
DefaultGroupName=Крестный отец™ II
AllowNoIcons=yes
OutputBaseFilename=setup
Compression=lzma/ultra64
SolidCompression=yes
DiskSpanning=yes
DiskSliceSize=1566000000
WizardSmallImageFile=C:\Users\Dmitri\Desktop\1.bmp
WizardImageFile=C:\Users\Dmitri\Desktop\2.bmp
SetupIconFile=C:\Users\Dmitri\Desktop\GF2.ico
ExtraDiskSpaceRequired=5716027607

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

[_Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}";
Name: "dx"; Description: "Обновить DirectX"; GroupDescription: "Дополнительное программное обеспечение:";
Name: "vc"; Description: "Установить Microsoft Visual C++ 2005 SP1 Redist"; GroupDescription: "Дополнительное программное обеспечение:";



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

[_Registry]
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather 2 The Game"; ValueName: "DisplayName"; ValueType: String; ValueData: "Крестный отец™ II"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II"; ValueName: "CD Drive"; ValueType: String; ValueData: "{src}"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II"; ValueName: "DisplayName"; ValueType: String; ValueData: "Крестный отец™ II"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II"; ValueName: "ProductName"; ValueType: String; ValueData: "Крестный отец™ II"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II"; ValueName: "Install Dir"; ValueType: String; ValueData: "{app}"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II"; ValueName: "Installed From"; ValueType: String; ValueData: "{src}"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II"; ValueName: "Locale"; ValueType: String; ValueData: "ru"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II"; ValueName: "Language"; ValueType: String; ValueData: "Russian"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II"; ValueName: "Patch URL"; ValueType: String; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II"; ValueName: "Product GUID"; ValueType: String; ValueData: "{{A1416622-0DDE-45B5-B06C-DFC3ED94C53B}"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II"; ValueName: "Suppression Exe"; ValueType: String; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II"; ValueName: "Registration"; ValueType: String; ValueData: "Software\Electronic Arts\EA Games\The Godfather 2 The Game\ergc"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II\1.0"; ValueName: "DisplayName"; ValueType: String; ValueData: "The Godfather II"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II\1.0"; ValueName: "Language"; ValueType: Dword; ValueData: "$10"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\EA Games\The Godfather II\1.0"; ValueName: "LanguageName"; ValueType: String; ValueData: "Russian"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Electronic Arts\EA Core\Installed Games\godfather2_na"; ValueName: "lang"; ValueType: String; ValueData: "ru"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Electronic Arts\EA Games\The Godfather 2 The Game\ergc"; ValueType: String; ValueData: "AS7XF4RAK67ULK62XRLD"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather 2 The Game"; ValueName: "DisplayName"; ValueType: String; ValueData: "Крестный отец™ II"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II"; ValueName: "CD Drive"; ValueType: String; ValueData: "{src}"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II"; ValueName: "DisplayName"; ValueType: String; ValueData: "Крестный отец™ II"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II"; ValueName: "ProductName"; ValueType: String; ValueData: "Крестный отец™ II"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II"; ValueName: "Install Dir"; ValueType: String; ValueData: "{app}"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II"; ValueName: "Installed From"; ValueType: String; ValueData: "{src}"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II"; ValueName: "Locale"; ValueType: String; ValueData: "ru"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II"; ValueName: "Language"; ValueType: String; ValueData: "Russian"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II"; ValueName: "Patch URL"; ValueType: String; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II"; ValueName: "Product GUID"; ValueType: String; ValueData: "{{A1416622-0DDE-45B5-B06C-DFC3ED94C53B}"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II"; ValueName: "Suppression Exe"; ValueType: String; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II"; ValueName: "Registration"; ValueType: String; ValueData: "Software\Electronic Arts\EA Games\The Godfather 2 The Game\ergc"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II\1.0"; ValueName: "DisplayName"; ValueType: String; ValueData: "The Godfather II"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II\1.0"; ValueName: "Language"; ValueType: Dword; ValueData: "$10"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\EA Games\The Godfather II\1.0"; ValueName: "LanguageName"; ValueType: String; ValueData: "Russian"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\Electronic Arts\EA Core\Installed Games\godfather2_na"; ValueName: "lang"; ValueType: String; ValueData: "ru"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\Electronic Arts\EA Games\The Godfather 2 The Game\ergc"; ValueType: String; ValueData: "AS7XF4RAK67ULK62XRLD"; Check: "Is64BitInstallMode"; Flags: uninsdeletekey

[_Files]
Source: "C:\Users\Dmitri\Desktop\logo.vp6"; DestDir: "{app}\movies\common\"; BeforeInstall: Arc; Flags: ignoreversion nocompression
Source: "C:\Users\Dmitri\Desktop\Scripts\Output\setup\{app}\movies\*"; DestDir: "{app}\movies\"; Flags: ignoreversion nocompression recursesubdirs createallsubdirs overwritereadonly



[_Code]
var
ProgressBar1: TNewProgressBar;


procedure InitializeWizard();
begin
WizardForm.FileNameLabel.Visible:=False;
WizardForm.ProgressGauge.Top:=ScaleY(100);
WizardForm.ProgressGauge.Width:=262;
WizardForm.ProgressGauge.Left:=155;
WizardForm.StatusLabel.Top:=ScaleY(80);
WizardForm.WelcomeLabel2.Top:=ScaleY(90);
ProgressBar1 := TNewProgressBar.Create(wizardform);
with ProgressBar1 do
begin
Parent := wizardform.installingpage;
Top := 100
Width := 150;
Height := wizardform.progressgauge.height;
Max :=9;
end;
end;

procedure arc;
var
res:Integer;
s,s1:string;
begin
ProgressBar1.Position := ProgressBar1.Position+1
s:=ExpandConstant('{src}')+'\data1.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
ProgressBar1.Position := ProgressBar1.Position+1
s:=ExpandConstant('{src}')+'\data2.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-x -y -d"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
ProgressBar1.Position := ProgressBar1.Position+2
s:=ExpandConstant('{src}')+'\data3.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
ProgressBar1.Position := ProgressBar1.Position+2
s:=ExpandConstant('{src}')+'\data4.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
ProgressBar1.Position := ProgressBar1.Position+2
s:=ExpandConstant('{src}')+'\data5.bin';
s1:=ExpandConstant('{app}');
Exec(s, '-y -o"'+ s1 + '"', '', SW_HIDE, ewWaitUntilTerminated, res);
ProgressBar1.Position := ProgressBar1.Position+1
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling
then
begin
WizardForm.CancelButton.Enabled := False;
end
else
WizardForm.BackButton.Enabled := True;
end;









[_Icons]
Name: "{group}\Играть Крестный отец™ II"; Filename: "{app}\godfather2.exe";
Name: "{group}\ReadMe"; Filename: "{app}\Support\readme.ru.txt";
Name: "{group}\Удалить Крестный отец™ II"; Filename: "{uninstallexe}";
Name: "{userdesktop}\Крестный отец™ II"; Filename: "{app}\godfather2.exe"; Tasks: desktopicon


[_Run]
Filename: "{src}\Redist\DirectX\DXSETUP.exe"; Parameters: "/silent"; StatusMsg: "Обновление DirectX..."; Tasks: "dx"; Flags: waituntilterminated
Filename: "{src}\Redist\vcredist_x86.exe"; Parameters: "/q"; StatusMsg: "Установка Microsoft Visual C++ 2005 SP1 Redist..."; Tasks: "vc"; Flags: waituntilterminated

[/more]
Автор: Qarma
Дата сообщения: 17.04.2009 10:24
data*.bin - это архивы инсталлятора или FeeArc архивы?
Автор: skeptik_vdm
Дата сообщения: 17.04.2009 10:28
Qarma

Цитата:
data*.bin - это архивы инсталлятора или FeeArc архивы?

Это FreeArc архивы!!!
Автор: Qarma
Дата сообщения: 17.04.2009 10:29

Цитата:
Это FreeArc архивы!!!


Их нужно в инсталлер запаковывать?

Добавлено:
ой, тупанул, делаю.....
Автор: skeptik_vdm
Дата сообщения: 17.04.2009 10:34
spider91
А каким образом у тебя идет извлечение если у тебя в скрипте отсутствует Arc.exe?!?!?
Автор: Qarma
Дата сообщения: 17.04.2009 10:38
skeptik_vdm

Почему у меня пишет: C:\Documents and Sitings\local seting\блаблабла\arc.exe
Не найден. Установка отменена...
А хотя arc.exe запаковал
Source: compiler:arc.exe; DestDir: {tmp}; Flags: dontcopy

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

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


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