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

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

Автор: FROST999
Дата сообщения: 27.11.2010 21:44
парни,подскажите ,пожалуйста, почему, когда я устанавливаю игру, распаковывается только один архив фриарк из трех, и не пишется какой из скольки архивов распаковывается?Хотя все это прописано в скрипте.
P.S. два архива-папками,один архив файлы игры там exe итд...
Автор: 13Friday
Дата сообщения: 27.11.2010 23:08
sjwrec
Ты не мог бы выложить на http://rghost.ru/ файлы для
"Assassin's Creed II и S.T.A.L.K.E.R. Авто зона v1.0"



Цитата:
Подскажите пример нормального отображения процентов во время распаковки файлов без (FreeArc).
Пробывал вот это [more][Code]
var
ProgressLabel, SizeLabel: TLabel;

procedure Progress();
var
size: integer;

begin
with WizardForm.ProgressGauge do
ProgressLabel.Caption:= IntToStr((Position-Min)/((Max - Min)/100)) + '%';
FileSize(ExpandConstant(CurrentFileName), size);
SizeLabel.Caption:= IntToStr(size) + ' bytes';
end;

procedure InitializeWizard();
begin
ProgressLabel := TLabel.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
ProgressLabel.Top := Top + Height + ScaleY(8);
ProgressLabel.Left:= Left + Width/2 - ScaleX(8);
ProgressLabel.AutoSize := True;
ProgressLabel.Parent := WizardForm.InstallingPage;
end;

SizeLabel := TLabel.Create(WizardForm);
with WizardForm.ProgressGauge do
begin
SizeLabel.Top := Top + Height + ScaleY(8);
SizeLabel.Left:= Left;
SizeLabel.AutoSize := True;
SizeLabel.Parent := WizardForm.InstallingPage;
end;
end;[/more]
отображается не коректно.


Может кто поможет по этому вопросу....
Автор: Shegorat
Дата сообщения: 28.11.2010 05:24
13Friday

Цитата:
Может кто поможет по этому вопросу....

Вот [more=пример][Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp

[Files]
Source: compiler:innocallback.dll; Flags: dontcopy
Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs

[code]
type
TTimerProc = procedure(HandleW, Msg, idEvent, TimeSys: LongWord);

var
PercentsTimer: LongWord;
PercentsLabel: TLabel;

function WrapTimerProc(callback: TTimerProc; Paramcount: Integer): longword; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): longword; external 'SetTimer@user32';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32 stdcall delayload';

Function NumToStr(Float: Extended): String;
Begin
Result:= Format('%.1n', [Float]); StringChange(Result, ',', '.');
while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do
SetLength(Result, Length(Result)-1);
End;

Procedure PercentsProc(h, msg, idevent, dwTime: Longword);
Begin
with WizardForm.ProgressGauge do
begin
PercentsLabel.Caption:= 'Выполнено ' + NumToStr((Position*100)/Max) + ' %';
end;
End;

procedure DeinitializeSetup();
begin
KillTimer(0, PercentsTimer);
end;

procedure InitializeWizard();
begin
PercentsLabel:= TLabel.Create(WizardForm);
with PercentsLabel do
begin
Left:= WizardForm.ProgressGauge.Left;
Top:= WizardForm.ProgressGauge.Top + WizardForm.ProgressGauge.Height + ScaleY(10);
Width:= WizardForm.StatusLabel.Width;
Height:= WizardForm.StatusLabel.Height;
AutoSize:= False;
Transparent := True;
Parent:= WizardForm.InstallingPage;
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
PercentsTimer:= SetTimer(0, 0, 100, WrapTimerProc(@PercentsProc, 4));
end;
end;[/more]
Автор: riperoc1
Дата сообщения: 28.11.2010 07:02
всем привет.Вчера по новой скрипт собирал на многие вопросы ответ нашел,а вот на этот не нашел:

1.как убрать информацию какой файл распаковывается
2.как сделать вот такие проценты или можно сделать в другом стиле
Автор: sjwrec
Дата сообщения: 28.11.2010 09:31

Цитата:
sjwrec
Ты не мог бы выложить на http://rghost.ru/ файлы для
"Assassin's Creed II и S.T.A.L.K.E.R. Авто зона v1.0"


Нет не могу. Большие файлы плохо заливаются на Rghost c моим интернетом. Так что только с IFolder.
Автор: FROST999
Дата сообщения: 28.11.2010 09:38

Цитата:
парни,подскажите ,пожалуйста, почему, когда я устанавливаю игру, распаковывается только один архив фриарк из трех, и не пишется какой из скольки архивов распаковывается?Хотя все это прописано в скрипте.  
P.S. два архива-папками,один архив файлы игры там exe итд...

подскажите,пожалуйста,очень надо
Автор: Dark91
Дата сообщения: 28.11.2010 10:21
Можно ли к Isdone прикрутить распаковку isprecomp ?
Автор: riperoc1
Дата сообщения: 28.11.2010 10:50
Dark91
ну так то она уже "прикручена"
Автор: Dark91
Дата сообщения: 28.11.2010 11:00
riperoc1
и каким образом тогда реализовать распаковку ?
Автор: skitonline
Дата сообщения: 28.11.2010 11:03
FROST999
тут люди - не экстроненсы, давай свой скрипт
Автор: riperoc1
Дата сообщения: 28.11.2010 11:13
Dark91
если у тебя isdone внедрен в скрипт то там есть следуюшие строки

Код: // if not ISRarExtract ( 0, OveralPct, 0, ExpandConstant('{src}\aaa.rar'), ExpandConstant('{app}'), false,CallBack, '' ) then break;
if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\setup-1b.bin'), ExpandConstant('{app}\'), false,CallBack, '', '', '') then break;
//if not ISSRepExtract ( 0, OveralPct, 0, ExpandConstant('{app}\setup-1.srep'), ExpandConstant('{app}\setup-1.pcf'), '', true, CallBack ) then break;
//if not ISPrecompExtract( 0, OveralPct, 0, ExpandConstant('{app}\setup-1.pcf'), ExpandConstant('{app}\setup-1.7z'), true, CallBack ) then break;
//if not IS7ZipExtract ( 0, OveralPct, 0, ExpandConstant('{app}\setup-1.7z'), ExpandConstant('{app}\'), true, CallBack, '' ) then break;
Автор: FROST999
Дата сообщения: 28.11.2010 11:14

Код: #define GameID "{E6D22FE1-AB5F-42CA-9480-6F70B96DDD88}"

#define GameName "MX vs. ATV:Reflex"
#define GameVerName "MX vs. ATV:Reflex [v 1.0.0.0]"

#define NeedSize "6315"

#define Processor "3400"
#define VideoCard "256"
#define RAM "1024"
#define WinVerMajor "5"
#define WinVerMinor "1"
#define ServicePack "2"

#define ArcLocation "{src}\data2.arc";
#define ArcLocation "{src}\data3.arc";
#define ArcLocation "{src}\data.arc";

[Setup]
AppId={{#GameID}
AppName={#GameName}
AppVerName={#GameName}
AppPublisher=Rainbow Studios
AppVersion=1.0.0.0
AppReadmeFile={group}\ReadMe.lnk
DefaultDirName={pf}\MX vs. ATV:Reflex
DefaultGroupName=MX vs. ATV:Reflex
OutputBaseFilename=setup
OutputDir=G:\Инсталы\Need for Speed™ Undercover
DirExistsWarning=no
MinVersion=0,5.01
VersionInfoDescription={#GameName}
SetupIconFile=G:\MXvsATVReflex.ico
DiskSpanning=yes
SlicesPerDisk=3
DiskSliceSize=1566000000
DisableReadyPage=True

[Files]
Source: "InstallFiles\*"; Flags: dontcopy;
Source: "Slides\*"; Flags: dontcopy;
Source: "Icons\*"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
Source: "InstallFiles\WizardImage.jpg"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
Source: "InstallFiles\botva2.dll"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
Source: "InstallFiles\ProgressBackground.png"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
Source: "InstallFiles\ProgressImg.png"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
Source: "InstallFiles\StatusPanel2.png"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
Source: "InstallFiles\StatusPanel.png"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
Source: "InstallFiles\Button.png"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
Source: "InstallFiles\Tiger.cjstyles"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
Source: "InstallFiles\Workspace.png"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
Source: "InstallFiles\ISSkin.dll"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
Source: "InstallFiles\InnoCallback.dll"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
Source: "InstallFiles\unarc.dll"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
;Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;
;Source: "G:\MX vs ATV Reflex*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ;
Автор: phants
Дата сообщения: 28.11.2010 11:27
Gnom3, nik1967, NiCKsOn123
спасибо за инфу!

Вроде все получилось кроме одного.
Надо в "Общих документах" создать папку "STALKER-SHOC" с верным содержимым. Подскажите как сделать?
Автор: vasyaetoyaept
Дата сообщения: 28.11.2010 11:28

Цитата:
#define ArcLocation "{src}\data2.arc";
#define ArcLocation "{src}\data3.arc";
#define ArcLocation "{src}\data.arc";

вот именно что только 1 архив потому что #define ArcLocation только один должен быть
Автор: FROST999
Дата сообщения: 28.11.2010 11:32
vasyaetoyaept
подскажите,пожалуйста, как сделать,чтобы все распаковывались?
Автор: Dark91
Дата сообщения: 28.11.2010 11:32
riperoc1
мне нужна распаковка isprecomp, а не precomp - это разные вещи
Автор: troyan90
Дата сообщения: 28.11.2010 11:32

Цитата:
распаковывается почему-то только один архив.

сделай так

Код: #define ArcLocation "{src}\*.arc";
Автор: FROST999
Дата сообщения: 28.11.2010 11:46
troyan90
Спасибо большое!!!
Автор: DeKaNszn
Дата сообщения: 28.11.2010 11:52
FROST999

Цитата:
ВНИМАНИЕ!

Текст всех программ обязательно заключайте в теги [no][code][/code][/no].
Большие тексты (более 10 строк) обязательно прячутся в [no][more][/no]ВАШ ТЕКСТ и/или Ваш КОД[no][/more][/no]

phants
путь: "{commondocs}\STALKER-SHOC"
дальше без скрипта никак
Автор: Kindly
Дата сообщения: 28.11.2010 12:26
Кто знает где и как связаться с репакером Z1oyDed?

Dark91 - спасибо.
Автор: Dark91
Дата сообщения: 28.11.2010 12:35
Kindly
http://free-torrents.org/forum/profile.php?mode=viewprofile&u=1005
Автор: FROST999
Дата сообщения: 28.11.2010 12:39
подскажите ,пожалуйста, почему создается ярлык на рабочем столе не в виде ярлыка,а в виде файла и его нельзя запускать.Из папки игра запускается нормально.
П.С. тот же скрипт от юршат, сделанный под себя
Автор: VASYAKRN
Дата сообщения: 28.11.2010 13:45
http://inno.at.ua/ the best inno site
регестрируйтес и одержуйти повний доступ

Добавлено:
а тьии маеш игровие скрипти

http://inno.at.ua/
всех приглашаю
THE BEST инно сайт
рееструйтесь и получайте повний доступ
обновлено
Автор: behar
Дата сообщения: 28.11.2010 14:56
Помогите решить одну задачу:
Необходимо чтобы инсталлятор обнаружил оптические приводы и выдал список их на выбор, потом опознал вставленный в привод диск ну а далее провел установку программы с этого диска.
Автор: qwerqwer444
Дата сообщения: 28.11.2010 16:01
DeKaNszn
помните вы мне помогали со скриптом когда на странице выбора папки несколько директорий, пример[more][Setup]
AppName=
AppVersion=
AppPublisher=
DefaultDirName={pf32}\my prog

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "111"; DestDir: "{code:GetPath|1}"; Flags: ignoreversion; Check: NeedInstall('1')
Source: "222"; DestDir: "{code:GetPath|2}"; Flags: ignoreversion; Check: NeedInstall('2')
Source: "333"; DestDir: "{code:GetPath|3}"; Flags: ignoreversion; Check: NeedInstall('3')
Source: "444"; DestDir: "{code:GetPath|4}"; Flags: ignoreversion; Check: NeedInstall('4')

[CustomMessages]
english.Install=install
name1=111
name2=222
name3=333
name4=444
path1={pf}
path2={userdocs}
path3={pf64}

[Code]
Const
N = 4; //здесь число необходимых флажков

var
CheckBoxes: Array [1..N] of TNewCheckBox;
Edits: Array [1..N] of TEdit;
Buttons: Array [1..N] of TNewButton;
pathes: Array[1..N] of String;

function GetPath(Param: String): String;
begin
Result := ExpandConstant(pathes[StrToInt(Param)]);
end;

function NeedInstall(Param: String): Boolean;
begin
Result := CheckBoxes[StrToInt(Param)].Checked;
end;

procedure SelectDirButtonClick(Sender: TObject);
var
Btn: TNewButton;
Str: String;
begin
Btn := TNewButton(Sender);
if BrowseForFolder('Please select folder ' + CustomMessage('name' + IntToStr(Btn.Tag)), Str, true)
then pathes[Btn.Tag] := Str
else pathes[Btn.Tag] := CustomMessage('path' + IntToStr(Btn.Tag)); Edits[Btn.Tag].Text := GetPath(IntToStr(Btn.Tag));
end;

procedure CheckboxClick(Sender: TObject);
var
Chb: TNewCheckBox;
Enable: Boolean;
Index: Byte;
begin
Chb := TNewCheckBox(Sender);
Enable := Chb.Checked;
Edits[Chb.Tag].Enabled := Enable;
Buttons[Chb.Tag].Enabled := Enable;
Enable := false
for Index := 1 To N Do Enable := Enable or CheckBoxes[Index].Checked;
WizardForm.NextButton.Enabled := Enable;
end;

procedure InitializeWizard();
Var
Index: Byte;
begin
with WizardForm do begin
SelectDirBitmapImage.Visible := False;
DiskSpaceLabel.Visible := False;
SelectDirBrowseLabel.Visible := False;
SelectDirLabel.Visible := False;
pathes[N] := '{app}';

For Index := 1 To N Do begin
CheckBoxes[Index] := TNewCheckBox.Create(WizardForm);
with CheckBoxes[Index] do
begin
Name := 'NewCheckBox' + IntToStr(Index);
Parent := SelectDirPage;
Left := ScaleX(5);
Top := ScaleY(5) + (Index - 1) * 50;
Width := SelectDirPage.Width - 10;
Height := ScaleY(20);
Caption := CustomMessage('Install') + ' ' + CustomMessage('name' + IntToStr(Index));
Checked := True;
State := cbChecked;
TabOrder := 5 + (Index - 1) * 3;
Tag := Index;
OnClick := @CheckboxClick;
end;

if Index = N
then Edits[Index] := DirEdit
else Edits[Index] := TEdit.Create(WizardForm);
with Edits[Index] do
begin
Left := CheckBoxes[Index].Left;
Top := CheckBoxes[Index].Top + CheckBoxes[Index].Height + 5;
Width := SelectDirPage.Width - 90;
Height := ScaleY(23);
Enabled := CheckBoxes[Index].Checked;
if Index <> N
then begin
Name := 'Edit' + IntToStr(Index);
Parent := SelectDirPage;
pathes[Index] := CustomMessage('path' + IntToStr(Index));
Text := GetPath(IntToStr(Index));
TabOrder := CheckBoxes[Index].TabOrder + 1;
end;
end;

if Index = N
then Buttons[Index] := DirBrowseButton
else Buttons[Index] := TNewButton.Create(WizardForm);
with Buttons[Index] do
begin
Left := Edits[Index].Left + Edits[Index].Width + 5;
Top := Edits[Index].Top;
Width := ScaleX(75);
Height := Edits[Index].Height;
Enabled := CheckBoxes[Index].Checked;
if Index <> N
then begin
Name := 'NewButton' + IntToStr(Index);
Parent := SelectDirPage;
Caption := SetupMessage(msgButtonBrowse);
OnClick := @SelectDirButtonClick;
Tag := Index;
TabOrder := Edits[Index].TabOrder + 1;
end;
end;
end;
end;
end; [/more] так вот на днях столкнулся с проблемкой, понадобилось использовать константу pf64 и вот теперь скрипт стал ругаться на строчку Result := ExpandConstant(pathes[StrToInt(Param)]); немогли бы вы мне помочь его пофиксить,наверно нужна проверка чтобы в 32 битной системе он строчку c pf64 просто не видел.
Автор: DeKaNszn
Дата сообщения: 28.11.2010 17:46
qwerqwer444
в хелпе написано: {pf} на х64 равно {pf64}, а на х86 равно {pf32}
из этого следует, что тебе достаточно написать {pf}
Автор: riperoc1
Дата сообщения: 28.11.2010 18:27
подскажите как исправить

[more=Вот скрипт]
Код: #define MyAppName "Prince of Persia: Warrior Within"
#define AppName "Prince of Persia: Warrior Within"
#define NeedSize "4000000000"
#define records
;#define precomp04
#define precomp038
;#define unrar

[Setup]
AppId={{DDA55E82-39A4-4692-999D-4B2A363241CE}
AppName={#AppName}
AppVerName={#MyAppName}
DefaultDirName={pf}\Prince of Persia Warrior Within
DefaultGroupName=Prince of Persia Warrior Within
DirExistsWarning=no
OutputBaseFilename=setup
;InternalCompressLevel=ultra64
;Compression=lzma/ultra64
;SolidCompression=true
SetupIconFile=Files\icon.ico
DisableReadyPage=True
DiskSpanning=true
DiskSliceSize=1063004405
SlicesPerDisk=3
WizardImageFile=Files\1.bmp
WizardImageStretch=False
WizardSmallImageFile=Files\smallimage.bmp
#ifdef NeedSize
ExtraDiskSpaceRequired={#NeedSize}
#endif
[Files]
Source: Files\button.bmp; DestDir: {tmp}; Flags: dontcopy
Source: Files\1.bmp; DestDir: {tmp}; Flags: dontcopy
Source: Files\2.bmp; DestDir: {tmp}; Flags: dontcopy
Source: Files\1.cjstyles; DestDir: {tmp}; Flags: dontcopy
Source: Files\logo.bmp; DestDir: {tmp}; Flags: dontcopy
Source: Files\ISSkin.dll; DestDir: {tmp}; Flags: dontcopy
;Source: Files\isgsg.dll; DestDir: {tmp}; Flags: dontcopy
Source: ISDone.dll; DestDir: {tmp}; Flags: dontcopy
Source: Files\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
#ifdef records
Source: records.inf; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef precomp04
Source: Files\packjpg_dll.dll; DestDir: {tmp}; Flags: dontcopy
Source: Files\RTconsole.exe; DestDir: {tmp}; Flags: dontcopy
Source: Files\precomp04.exe; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef precomp038
Source: Files\packjpg_dll.dll; DestDir: {tmp}; Flags: dontcopy
Source: Files\RTconsole.exe; DestDir: {tmp}; Flags: dontcopy
Source: Files\precomp038.exe; DestDir: {tmp}; Flags: dontcopy
Source: Files\zlib1.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef unrar
Source: Files\Unrar.dll; DestDir: {tmp}; Flags: dontcopy
#endif

#include "Messages.iss"
[CustomMessages]
rus.ExtractedFile=&#208;&#224;&#241;&#239;&#224;&#234;&#238;&#226;&#251;&#226;&#224;&#229;&#242;&#241;&#255; &#244;&#224;&#233;&#235;:
rus.CancelButton=&#206;&#242;&#236;&#229;&#237;&#232;&#242;&#252; &#240;&#224;&#241;&#239;&#224;&#234;&#238;&#226;&#234;&#243;
rus.Error=&#206;&#248;&#232;&#225;&#234;&#224; &#240;&#224;&#241;&#239;&#224;&#234;&#238;&#226;&#234;&#232;!


[Registry]
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Prince of Persia Warrior Within\1.00.999; ValueType: string; ValueName: Product_Path; ValueData: {app}; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Prince of Persia Warrior Within\1.00.999; ValueType: string; ValueName: Product_Executable; ValueData: PrinceOfPersia.exe; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Prince of Persia Warrior Within\1.00.999; ValueType: string; ValueName: Product_Language; ValueData: 9; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Prince of Persia Warrior Within\1.00.999; ValueType: string; ValueName: Product_Release; ValueData: Retail EMEA; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Prince of Persia Warrior Within\1.00.999; ValueType: string; ValueName: Profiles_Path; ValueData: C:\ProgramData; Flags: uninsdeletevalue uninsdeletekeyifempty

[Run]
Filename: {src}\Redist\DXSETUP.exe; WorkingDir: {src}\Redist\;StatusMsg:"&#211;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#224; DirectX"; Flags:waituntilterminated; BeforeInstall:;


[Icons]
Name: "{group}\Prince of Persia Warrior Within"; IconFilename: {app}\PrinceOfPersia.EXE; Filename: {app}\PrinceOfPersia.EXE;Comment: &#199;&#224;&#239;&#243;&#241;&#234; &#232;&#227;&#240;&#251;;
Name: "{userdesktop}\Prince of Persia Warrior Within"; IconFilename: {app}\PrinceOfPersia.EXE; Filename: {app}\PrinceOfPersia.EXE;Comment: &#199;&#224;&#239;&#243;&#241;&#234; &#232;&#227;&#240;&#251;;


[Code_]
const
ButtonWidth = 80;
ButtonHeight = 23;

bidBack = 0;
bidNext = 1;
bidCancel = 2;
bidDirBrowse = 3;
bidGroupBrowse = 4;
//***********************&#207;&#229;&#240;&#229;&#236;&#229;&#237;&#237;&#251;&#229;***********************\\
var
MainImage : TBitmapImage;
FinishedImage: TBitmapImage;
WelcomeLabel1, WelcomeLabel2,FinishedLabel, FinishedHeadingLabel: TLabel;
LabelPct,LabelCurrFileName: TLabel;
ISDoneProgressBar: TNewProgressBar;
MyCancelButton: TButton;
OveralPct,Cancel:integer;
CallBack:longword;
MyError:boolean;
BtnPanel: TPanel;
BtnImage: TBitmapImage;
//***********************&#202;&#238;&#237;&#229;&#246;-&#207;&#229;&#240;&#229;&#236;&#229;&#237;&#237;&#251;&#229;***********************\\
type
TCallback = function (Pct: integer;CurrentFile:string): longword;
TMessage = record hWnd: HWND; msg, wParam: Word; lParam: LongWord; Time: TFileTime; pt: TPoint; end;

function PeekMessage(var lpMsg: TMessage; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall';
function TranslateMessage(const lpMsg: TMessage): BOOL; external 'TranslateMessage@user32.dll stdcall';
function DispatchMessage(const lpMsg: TMessage): Longint; external 'DispatchMessageA@user32.dll stdcall';

function WrapMyCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:innocallback.dll stdcall';

function ISArcExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; callback: longword; Password, CfgFile, WorkPath: AnsiString):BOOL; external 'ISArcExtract@files:ISDone.dll stdcall';
function IS7ZipExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; callback: longword; Password: AnsiString):BOOL; external 'IS7zipExtract@files:ISDone.dll stdcall';
function ISRarExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; callback: longword; Password: AnsiString):BOOL; external 'ISRarExtract@files:ISDone.dll stdcall';
function ISPrecompExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean; callback: longword):BOOL; external 'ISPrecompExtract@files:ISDone.dll stdcall';
function ISSRepExtract(CurComponent:longword; var OveralPct:integer; PctOfTotal:double; InName, OutFile, IdxFile: AnsiString; DeleteInFile:boolean; callback: longword):BOOL; external 'ISSrepExtract@files:ISDone.dll stdcall';
function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):BOOL; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall';
function StartRecord(RecordFileName:AnsiString; AllComponents:longword):BOOL; external 'StartRecord@files:ISDone.dll stdcall';
function CheckPoint(CurComponent:Integer):BOOL; external 'CheckPoint@files:ISDone.dll stdcall';
function StopRecord:BOOL; external 'StopRecord@files:ISDone.dll stdcall';

function ProgressCallback(Pct: integer; CurrentFile:AnsiString): longword;
var Msg: TMessage;
begin
if Pct<=ISDoneProgressBar.Max then
ISDoneProgressBar.Position := Pct;
LabelPct.Caption := IntToStr(Pct div 10)+'.'+chr(48 + Pct mod 10)+'%';
LabelCurrFileName.Caption :=ExpandConstant('{cm:ExtractedFile} ')+CurrentFile;
while PeekMessage(Msg, 0, 0, 0, 1) do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
Result := Cancel;
end;




//***********************&#205;&#224;&#247;&#224;&#235;&#238;-&#241;&#234;&#232;&#237;***********************\\
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';

procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('1.cjstyles');
LoadSkin(ExpandConstant('{tmp}\1.cjstyles'), '');
Result := True;

end;

procedure DeinitializeSetup();
begin
UnloadSkin();
end;
//***********************&#202;&#238;&#237;&#229;&#246;-&#241;&#234;&#232;&#237;***********************\\
procedure urlbuttonclick(sender:tobject);
var rescode:Integer;
begin
shellexec('open', 'http://www.flibustierka.com/', '', '',sw_shownormal, ewnowait, rescode)
end;


//***********************&#200;&#231;&#238;&#225;&#240;&#224;&#230;&#229;&#237;&#232;&#229; &#232;&#237;&#241;&#242;&#224;&#235;&#224;***********************\\
procedure InitializeWizard();
begin
ExtractTemporaryFile('1.bmp');
MainImage := TBitmapImage.Create(WizardForm);
with MainImage do
begin
Parent := WizardForm;
Left := 0;
Top := 0;
Width := 500;
Height := 313;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
begin
with WizardForm do begin
with MainPanel do
Height := Height - 1;
with WizardSmallBitmapImage do begin
Left := 0;
Top := 0;
Height := 58; //&#208;&#224;&#231;&#236;&#229;&#240; &#240;&#232;&#241;&#243;&#237;&#234;&#224;
Width := 497; //
end;
with PageNameLabel do begin
Width := Width - 497; //&#207;&#238;&#241;&#242;&#224;&#226;&#252;&#242;&#229; &#231;&#228;&#229;&#241;&#252; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#255; &#237;&#224; 0, &#229;&#241;&#235;&#232; &#245;&#238;&#242;&#232;&#242;&#229; &#226;&#229;&#240;&#237;&#243;&#242;&#252; &#242;&#229;&#234;&#241;&#242;
Left := Left + 497; //
end;
with PageDescriptionLabel do begin
Width := Width - 497; //&#207;&#238;&#241;&#242;&#224;&#226;&#252;&#242;&#229; &#231;&#228;&#229;&#241;&#252; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#255; &#237;&#224; 0, &#229;&#241;&#235;&#232; &#245;&#238;&#242;&#232;&#242;&#229; &#226;&#229;&#240;&#237;&#243;&#242;&#252; &#242;&#229;&#234;&#241;&#242;
Left := Left + 497; //
begin
BtnPanel:=TPanel.Create(WizardForm)
with BtnPanel do begin
Left:=5
Top:=320
Width:=180
Height:=39
Cursor:=crHand
onclick:=@urlbuttonclick;
Parent:=WizardForm
end
BtnImage:=TBitmapImage.Create(WizardForm)
with BtnImage do begin
AutoSize:=True
Enabled:=False
ExtractTemporaryFile('Logo.bmp')
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Logo.bmp')
Parent:=BtnPanel
end
end;
begin
ISDoneProgressBar := TNewProgressBar.Create(WizardForm);
with ISDoneProgressBar do begin
Left := ScaleX(0);
Top := ScaleY(40);
Width := ScaleX(417);
Max := 1000;
Height := WizardForm.ProgressGauge.Height;
Parent := WizardForm.InstallingPage;
end;
LabelPct := TLabel.Create(WizardForm);
with LabelPct do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := WizardForm.ProgressGauge.Width;
Top := WizardForm.ProgressGauge.Top + ScaleY(40);
Alignment := taCenter;
Caption := '';
end;
LabelCurrFileName := TLabel.Create(WizardForm);
with LabelCurrFileName do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := WizardForm.ProgressGauge.Width;
Left := ScaleX(0);
Top := WizardForm.ProgressGauge.Top + ScaleY(25);
Caption := '';
end;
end;
end;
end;
end;
end;

ExtractTemporaryFile('2.bmp');
FinishedImage := TBitmapImage.Create(WizardForm);
with FinishedImage do
begin
Parent := WizardForm;
Left := 0;
Top := 0;
Width := 500;
Height := 313;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\2.bmp'));
end;

//WelcomePage, &#241;&#238;&#231;&#228;&#224;&#229;&#236; &#237;&#224;&#228;&#239;&#232;&#241;&#232; &#237;&#224; &#241;&#242;&#240;&#224;&#237;&#232;&#246;&#229;
WelcomeLabel1:= TLabel.Create(WizardForm);
with WelcomeLabel1 do
begin
Left:= ScaleX(176);
Top:= ScaleY(66);
Width:= ScaleX(301);
Height:= ScaleY(71);
AutoSize:= false;
Transparent:= true;
WordWrap:= true;
Font.Size:= 14;
Font.Color:=ClBlack
Font.Style := [fsBold]
Parent:= WizardForm;
Font.Name:= 'Georgia'
Caption:= WizardForm.WelcomeLabel1.Caption;
end;

WelcomeLabel2:=TLabel.Create(WizardForm);
with WelcomeLabel2 do
begin
Top:= ScaleY(136);
Left:= ScaleX(176);
Width:= ScaleX(301);
Height:= ScaleY(300);
AutoSize:= false;
WordWrap:= true;
Font.Color:=ClBlack
Font.Name:= 'Georgia'
Font.Size:= 10;
Transparent:= true;
Parent:= WizardForm;
Caption:= WizardForm.WelcomeLabel2.Caption;
end;

FinishedHeadingLabel:=TLabel.Create(WizardForm);
with FinishedHeadingLabel do
begin
Top:= ScaleY(66);
Left:= ScaleX(176);
Width:= ScaleX(301);
Height:= ScaleY(70);
AutoSize:= false;
WordWrap:= true;
Font.Size:= 12;
Font.Color:=ClBlack
Font.Name:= 'Georgia'
Font.Style := [fsBold]
Transparent:= true;
Parent:= WizardForm;
Caption:= WizardForm.FinishedHeadingLabel.Caption;
end;

FinishedLabel:= TLabel.Create(WizardForm);
with FinishedLabel do
begin
Left:= ScaleX(176);
Top:= ScaleY(140);
Width:= ScaleX(301);
Height:= ScaleY(540);
AutoSize:= false;
WordWrap:= true;
Transparent:= true;
Font.Color:=ClBlack
Font.Size:= 10;
Font.Name:= 'Georgia'
Parent:= WizardForm;
Caption:= ExpandConstant('{cm:FinishedLabel}') + ExpandConstant(' {cm:FinishedLabel2}')
end;
end;


procedure HideComponents;
begin
WelcomeLabel1.Hide;
WelcomeLabel2.Hide;
FinishedHeadingLabel.Hide;
FinishedLabel.Hide;
end;

procedure ShowComponents(CurPageID: Integer);
begin
case CurPageID of
wpWelcome:
begin
WelcomeLabel1.Show
WelcomeLabel2.Show
end;
wpFinished:
begin
FinishedHeadingLabel.Show;
FinishedLabel.Show;
end;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
HideComponents;
ShowComponents(CurPageID);
if CurPageID = wpWelcome then
begin
WizardForm.OuterNotebook.Hide;
FinishedImage.Hide;

end
else if CurPageID = wpFinished then
begin
WizardForm.OuterNotebook.Hide;
MainImage.Hide;
FinishedImage.Show;
end
else WizardForm.OuterNotebook.Show;
Begin
if (CurPageID = wpFinished) and MyError then
begin
WizardForm.Caption:= ExpandConstant('{cm:Error}');
WizardForm.FinishedLabel.Font.Color:= clRed;
WizardForm.FinishedLabel.Caption:= SetupMessage(msgSetupAborted) ;
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
var ChComp, TmpValue:longword;
n:integer;
begin
if CurStep = ssInstall then begin //&#197;&#241;&#235;&#232; &#237;&#229;&#238;&#225;&#245;&#238;&#228;&#232;&#236;&#238;, &#236;&#238;&#230;&#237;&#238; &#239;&#229;&#240;&#229;&#228;&#229;&#235;&#224;&#242;&#252; &#237;&#224; ssPostInstall
WizardForm.ProgressGauge.Hide;
WizardForm.CancelButton.Visible:=false;
MyCancelButton:=TButton.Create(WizardForm);
with MyCancelButton do begin
Parent:=WizardForm;
Width:=ScaleX(135);
Caption:=ExpandConstant('{cm:CancelButton}');
Left:=ScaleX(360);
Top:=WizardForm.cancelbutton.top;
OnClick:=@CancelButtonOnClick;
end;
CallBack:=WrapMyCallback(@ProgressCallback,2);
Cancel:=1;
OveralPct:=0;

// &#208;&#224;&#241;&#239;&#224;&#234;&#238;&#226;&#234;&#224; &#226;&#241;&#229;&#245; &#237;&#229;&#238;&#225;&#245;&#238;&#228;&#232;&#236;&#251;&#245; &#244;&#224;&#233;&#235;&#238;&#226; &#226; &#239;&#224;&#239;&#234;&#243; {tmp}. &#221;&#242;&#238; &#237;&#229;&#238;&#225;&#245;&#238;&#228;&#232;&#236;&#238; &#228;&#235;&#255; &#242;&#238;&#227;&#238;, &#247;&#242;&#238;&#225;&#251;
//&#226;&#251;&#239;&#238;&#235;&#237;&#255;&#242;&#252; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#243; &#226; &#236;&#238;&#236;&#229;&#237;&#242; ssInstall, &#232; &#241;&#229;&#234;&#246;&#232;&#255; [Run] &#226;&#251;&#239;&#238;&#235;&#237;&#255;&#235;&#224;&#241;&#252; &#239;&#238;&#241;&#235;&#229; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#232;.
#ifdef records
ExtractTemporaryFile('records.inf');
#endif
#ifdef precomp04
ExtractTemporaryFile('packjpg_dll.dll');
ExtractTemporaryFile('RTconsole.exe');
ExtractTemporaryFile('precomp04.exe');
#endif
#ifdef precomp038
ExtractTemporaryFile('packjpg_dll.dll');
ExtractTemporaryFile('RTconsole.exe');
ExtractTemporaryFile('precomp038.exe');
ExtractTemporaryFile('zlib1.dll');
#endif
#ifdef unrar
ExtractTemporaryFile('Unrar.dll');
#endif

// &#207;&#238;&#228;&#227;&#238;&#242;&#224;&#226;&#235;&#232;&#226;&#224;&#229;&#236; &#239;&#229;&#240;&#229;&#236;&#229;&#237;&#237;&#243;&#254;, &#241;&#238;&#228;&#229;&#240;&#230;&#224;&#249;&#243;&#254; &#226;&#241;&#254; &#232;&#237;&#244;&#238;&#240;&#236;&#224;&#246;&#232;&#254; &#238; &#226;&#251;&#228;&#229;&#235;&#229;&#237;&#237;&#251;&#245; &#234;&#238;&#236;&#239;&#238;&#237;&#229;&#237;&#242;&#224;&#245; &#228;&#235;&#255; ISDone.dll
ChComp:=0;
#ifdef Components
TmpValue:=1;
if IsComponentSelected('text\rus') then ChComp:=ChComp+TmpValue; //&#234;&#238;&#236;&#239;&#238;&#237;&#229;&#237;&#242; 1
TmpValue:=TmpValue*2;
if IsComponentSelected('text\eng') then ChComp:=ChComp+TmpValue; //&#234;&#238;&#236;&#239;&#238;&#237;&#229;&#237;&#242; 2
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\rus') then ChComp:=ChComp+TmpValue; //&#234;&#238;&#236;&#239;&#238;&#237;&#229;&#237;&#242; 3
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\eng') then ChComp:=ChComp+TmpValue; //&#234;&#238;&#236;&#239;&#238;&#237;&#229;&#237;&#242; 4
#endif

StartRecord(ExpandConstant('{src}\records.inf'),ChComp);
repeat
MyError:=true;
// if not ISRarExtract ( 0, OveralPct, 0, ExpandConstant('{src}\aaa.rar'), ExpandConstant('{app}'), false,CallBack, '' ) then break;
if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\setup-1b.bin'), ExpandConstant('{app}\'), false,CallBack, '', '', '') then break;
if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\setup-1c.bin'), ExpandConstant('{app}\'), false,CallBack, '', '', '') then break;
if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\setup-1d.bin'), ExpandConstant('{app}\'), false,CallBack, '', '', '') then break;
if not ISArcExtract ( 0, OveralPct, 0, ExpandConstant('{src}\setup-1e.bin'), ExpandConstant('{app}\'), false,CallBack, '', '', '') then break;
if not ISSRepExtract ( 0, OveralPct, 0, ExpandConstant('{app}\setup-1.srep'), ExpandConstant('{app}\setup-1.pcf'), '', true, CallBack ) then break;
if not ISPrecompExtract( 0, OveralPct, 0, ExpandConstant('{app}\setup-1.pcf'), ExpandConstant('{app}\setup-1.7z'), true, CallBack ) then break;
if not IS7ZipExtract ( 0, OveralPct, 0, ExpandConstant('{app}\setup-1.7z'), ExpandConstant('{app}\'), true, CallBack, '' ) then break;
//if not ShowChangeDiskWindow('&#207;&#238;&#230;&#224;&#235;&#243;&#233;&#241;&#242;&#224;, &#226;&#241;&#242;&#224;&#226;&#252;&#242;&#229; &#228;&#232;&#241;&#234; 2 &#232; &#228;&#238;&#230;&#228;&#232;&#242;&#229;&#241;&#252; &#229;&#227;&#238; &#232;&#237;&#232;&#246;&#232;&#224;&#235;&#232;&#231;&#224;&#246;&#232;&#232;.', ExpandConstant('{src}'),'CODMW2_Disk2.arc' ) then break;
//if not ISArcExtract ( 1, OveralPct, 0, ExpandConstant('{src}\rustext.arc'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
//if not ISArcExtract ( 2, OveralPct, 0, ExpandConstant('{src}\engtext.arc'), ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
//if not ISArcExtract ( 3, OveralPct, 0, ExpandConstant('{src}\rusvoice.arc'),ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
//if not ISArcExtract ( 4, OveralPct, 0, ExpandConstant('{src}\engvoice.arc'),ExpandConstant('{app}'), false,CallBack, '', '', '') then break;
MyError:=false;
until true;
StopRecord;

MyCancelButton.Visible:=false;
WizardForm.CancelButton.Visible:=true;
end;
if (CurStep=ssPostInstall) and MyError then
Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n);
end;
//***********************&#202;&#238;&#237;&#229;&#246;-&#200;&#231;&#238;&#225;&#240;&#224;&#230;&#229;&#237;&#232;&#229; &#232;&#237;&#241;&#242;&#224;&#235;&#224;***********************\\



//***********************&#202;&#237;&#238;&#239;&#234;&#224; &#238;&#242;&#236;&#229;&#237;&#251;***********************\\
procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:=False;
Confirm:=False;
if MsgBox('&#194;&#251; &#228;&#229;&#233;&#241;&#242;&#226;&#232;&#242;&#229;&#235;&#252;&#237;&#238; &#245;&#238;&#242;&#232;&#242;&#229; &#238;&#242;&#236;&#229;&#237;&#232;&#242;&#252; &#243;&#241;&#242;&#224;&#237;&#238;&#226;&#234;&#243; {#MyAppName}? ', mbError, MB_YESNO) = idYes
then
Cancel:=true;
end;
//***********************&#202;&#238;&#237;&#229;&#246;-&#202;&#237;&#238;&#239;&#234;&#224; &#238;&#242;&#252;&#236;&#229;&#237;&#251;***********************\\



Автор: serg_aka_lain
Дата сообщения: 28.11.2010 18:40
riperoc1

Цитата:
подскажите как исправить

Процедура CancelButtonOnClick должна быть расположена выше
процедуры CurStepChanged, либо она совсем(ваааще) отсутствует, и отсюда Uncnown identifier ...
Автор: FROST999
Дата сообщения: 28.11.2010 19:00

Цитата:
подскажите ,пожалуйста, почему создается ярлык на рабочем столе не в виде ярлыка,а в виде файла и его нельзя запускать.Из папки игра запускается нормально.
П.С. тот же скрипт от юршат, сделанный под себя

подскажите пожалуйста
Автор: riperoc1
Дата сообщения: 28.11.2010 19:05
Спасибо теперь не вылетает,я так понимаю эта процедура для отмены распаковки с использованием isdone, если так то у меня она не отменяется помогите исправить

Страницы: 12345678910111213

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


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