Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Цитата comsun:
Подскажите как добавить в инсталлятор двоичные данные реестра? »
Подробней объясните, а лучше экспортируйте из реестра данные, которые хотите внести и покажите сам reg файл.
------- »
вот например рег-код
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Licenses]
"{I4381D080AD75646D}"=hex(3):10,00,00,00
"{04381D080AD75646D}"=hex(3):5B,3E,86,0F,EF,81,A3,B4,26,6F,27,FF,5A,C4,29,D8,B4,\ 5E,E1,0C,BD,D2,64,D8,9F,CA,D1,0E,45,A4,67,63,6F,77,E8,9E,CE,12,0F,AB,1A,E6,8C,\ 6C,5C,C9,16,4C,71,CE,1E,E9,36,45,4E,B7,76,62,49,7C,81,22,65,A7,42,47,2F,7F,94,\ B6,D1,2F,6E,1B,13,AE,9E,52,76,8D,33,0B,EB,A9,E1,BA,48,D5,8B,79,97,39,2E,97,40,\ 43,8E,A8,22,C4,DE,0C,97,9B,EC,F5,40,6B,C2,AC,00,73,20,03,54,C7,BA,66,62,E0,F8,\ 86,2C,31,72,CA,F8,E5,89,67,4F,D6,30,31,C5,C1,54,C2,BB,97,B8,E1,3F,C8,21,52,8C,\ CF,18,C4,72,F6,2C,9D,B1,EB,1D,9D,EC,1B,EE,1F,17,23,DD,5C,86,37,65,7B,D8,4E,2F,\
9F,72,B5,42,EE,A7,40,68
Habetdin
09-03-2010, 00:19
comsun, [Registry]
Root: HKCU; SubKey: Software\Licenses; ValueType: binary; ValueName: {I4381D080AD75646D}; ValueData: 10,00,00,00
импорт через ISTool: Project - Import from file - Registry
вот например рег-код »
Спасибо, в следующей версии программы, эту ошибку исправлю...
импорт через ISTool »
У вас ошибка, должно быть так:
[Registry]
Root: HKCU; SubKey: Software\Licenses; ValueType: binary; ValueName: {{I4381D080AD75646D}; ValueData: 10 00 00 00; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKCU; SubKey: Software\Licenses; ValueType: binary; ValueName: {{04381D080AD75646D}; ValueData: 5B 3E 86 0F EF 81 A3 B4 26 6F 27 FF 5A C4 29 D8 B4 5E E1 0C BD D2 64 D8 9F CA D1 0E 45 A4 67 63 6F 77 E8 9E CE 12 0F AB 1A E6 8C 6C 5C C9 16 4C 71 CE 1E E9 36 45 4E B7 76 62 49 7C 81 22 65 A7 42 47 2F 7F 94 B6 D1 2F 6E 1B 13 AE 9E 52 76 8D 33 0B EB A9 E1 BA 48 D5 8B 79 97 39 2E 97 40 43 8E A8 22 C4 DE 0C 97 9B EC F5 40 6B C2 AC 00 73 20 03 54 C7 BA 66 62 E0 F8 86 2C 31 72 CA F8 E5 89 67 4F D6 30 31 C5 C1 54 C2 BB 97 B8 E1 3F C8 21 52 8C CF 18 C4 72 F6 2C 9D B1 EB 1D 9D EC 1B EE 1F 17 23 DD 5C 86 37 65 7B D8 4E 2F 9F 72 B5 42 EE A7 40 68; Flags: uninsdeletevalue uninsdeletekeyifempty
Serega, Работает!!!
Как всегда после Ваших ответов!
Спасибо!
Когда можно ждать новой версии Вашей программы?
Очень удобная и нужная.
Где будет релиз,в этой теме?
Ещё раз Огромное Спасибо!
Cartmans
09-03-2010, 12:39
Кто-то ответит на мой вопрос?
Когда можно ждать новой версии Вашей программы? »
Надеюсь в ближайшее время, работы проделано уже очень много, т.е. думаю на днях будет...
alex2010
09-03-2010, 14:03
кто ответит на мой вопрос?
а как сделать так, как у RG Механики?(если можно только код для вставки изображения)
http://s57.radikal.ru/i157/1002/94/a62770aad612t.jpg (http://radikal.ru/F/s57.radikal.ru/i157/1002/94/a62770aad612.png.html)
Cartmans
09-03-2010, 16:15
alex2010, У меня скрипт на подобии. Вот скрин - http://xmages.net/upload/b3c0ea9d.png
Только вот скрипт случайно удалил, сейчас пишу заново.
Upd:
Вопрос:
что нужно делать что бы добиться максимального сжатия, но при этом что бы при распаковке требовало 1ГБ. Была игра, весила 6.17 ГБ, получилось ужать только до 5.36ГБ, но это очень мало, другие ужимали эту игру до 3ГБ
Выше сказанное о FreeArc'e »
alex2010
09-03-2010, 16:51
Cartmans, как сделаешь, выложи плиз(если можно) только код для вставки изборбажения :)
Jerichoman
09-03-2010, 18:36
Опять ошибки в том же скрипте, но уже другие
http://s49.radikal.ru/i123/1003/11/b67109e46beat.jpg (http://radikal.ru/F/s49.radikal.ru/i123/1003/11/b67109e46bea.jpg.html) http://s46.radikal.ru/i113/1003/47/c212d338895bt.jpg (http://radikal.ru/F/s46.radikal.ru/i113/1003/47/c212d338895b.jpg.html)
помогите http://upwap.ru/779001
Причем это появляется при попытке восстановить файлы обработанные precomp
Cartmans
09-03-2010, 20:03
Вопрос:
что нужно делать что бы добиться максимального сжатия, но при этом что бы при распаковке требовало 1ГБ. Была игра, весила 6.17 ГБ, получилось ужать только до 5.36ГБ, но это очень мало, другие ужимали эту игру до 3ГБ
Выше сказанное о FreeArc'e »
Ну подскажите, я уже не могу ждать...
Всем привет!
У кого есть скрип для распаковки perecomp + freearc ?
Нужно, что бы сначала распаковался freearc потом perecomp
Буду рад любым скриптам ( примерам)
Спс за внимание!
Cartmans, какая игра?
Serega, спасибо тебе еще раз за помощь =))только вот одна проблема =(
не хочет запускаться бат файл =((
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
UnPackError:= UnPack(Archives)
if UnPackError = 0 then
SetTaskBarTitle(SetupMessage(msgSetupAppTitle))
else
begin
// Error occured, uninstall it then
Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n); //откат установки из-за ошибки unarc.dll
SetTaskBarTitle(SetupMessage(msgErrorTitle))
WizardForm.Caption:= SetupMessage(msgErrorTitle) +' - '+ cm('ArcBreak')
end;
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ExecAndWait(ExpandConstant('{app}\rep.bat'), '', '', SW_SHOW, True);
батник
@echo off
mode con cols=95 lines=3
color 0f
echo.
srep.exe -d WarGame.srep WarGame.rep
del /F /Q WarGame.srep
del /F /Q srep.dll
echo on
cls
Всё необходимое.На всякий случай
http://rghost.ru/1130065
Вопрос:
что нужно делать что бы добиться максимального сжатия, но при этом что бы при распаковке требовало 1ГБ. Была игра, весила 6.17 ГБ, получилось ужать только до 5.36ГБ, но это очень мало, другие ужимали эту игру до 3ГБ
Выше сказанное о FreeArc'e » »
Впиши это в категорию сжатия!
-mx -lc2gb -ld1gb (где lc2gb это ск у тебя на компе ОЗУ, ld1gb ск нужно для распаковки)
Cartmans
09-03-2010, 20:40
patrion, Во спасибо!
Lol2xD., у тебя вскрипте написано
ExecAndWait(ExpandConstant('{app}\1.bat'), '', '', SW_SHOW, True); а у тебя сам батник rep.bat измени на ExecAndWait(ExpandConstant('{app}\rep.bat'), '', '', SW_SHOW, True);
vint56, ды я ошибся не тот скрипт в архив кинул.ДАже если всё правильно прописано не хочет работать=((
Можешь как нибудь помочь?
http://rghost.ru/1130065
правильный скрипт
#include "ExecAndWait.iss"
[Setup]
AppName=Gears of War
AppVerName=Gears of War v.1.2 RUS
DefaultDirName={pf}\Gears of War
UsePreviousAppDir=false
DirExistsWarning=no
ShowLanguageDialog=auto
OutputBaseFilename=setup
OutputDir=.
VersionInfoCopyright=
VersionInfoCompany=Navvy
DefaultGroupName=Gears of War
UsePreviousGroup=false
UsePreviousSetupType=false
WizardImageFile=G:\rep\gow\Gears_of_W_2m.bmp
WizardSmallImageFile=G:\rep\gow\Gears_of_W_9m.bmp
SetupIconFile=G:\rep\gow\Icon_1.ico
AppID={{30800035-9A34-4975-8138-B0ED67D394D1}
InternalCompressLevel=ultra64
SolidCompression=true
Compression=lzma/ultra64
AppCopyright=Navvy
PrivilegesRequired=none
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
[CustomMessages]
rus.ArcBreak=Установка прервана!
rus.ExtractedInfo=Распаковано %1 Мб из %2 Мб
rus.ArcInfo=Архив: %1 из %2
rus.ArcTitle=Распаковка архивов FreeArc
rus.ArcError=Распаковщик FreeArc вернул код ошибки: %1
rus.ArcFail=Распаковка не завершена!
rus.AllProgress=Общий прогресс распаковки: %1%%
rus.ArcBroken=Возможно, архив %1 повреждён%nили недостаточно места на диске назначения.
rus.Extracting=Распаковывается: %1
rus.taskbar=%1%%, жди %2
rus.remains=Осталось ждать %1
rus.LongTime=вечно
rus.ending=завершение
rus.hour=часов
rus.min=мин
rus.sec=сек
[Files]
;Source: *.arc; DestDir: {app}; Flags: nocompression
Source: unarc.dll; DestDir: {tmp}; Flags: dontcopy deleteafterinstall
Source: InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
[UninstallDelete]
Type: filesandordirs; Name: {app}
[Code]
const
Archives = '{src}\*.arc'; // укажите расположение архивов FreeArc; для внешних файлов строку в [Files] добавлять необязательно
CP_ACP = 0; CP_UTF8 = 65001;
oneMb = 1048576;
type
#ifdef UNICODE ; если у вас ошибка на этой строке, то установите препроцессор или исправьте скрипт для вашей версии Inno Setup
#define A "W"
#else
#define A "A" ; точка входа в SetWindowText, {#A} меняется на A или W в зависимости от версии
#endif
#if Ver < 84018176
AnsiString = String; // There is no need for this line in Inno Setup 5.2.4 and above (для Inno Setup версий 5.2.4 и выше эта строка не нужна)
#endif
TMyMsg = record
hwnd: HWND;
message: UINT;
wParam: Longint;
lParam: Longint;
time: DWORD;
pt: TPoint;
end;
TFreeArcCallback = function (what: PAnsiChar; int1, int2: Integer; str: PAnsiChar): Integer;
TArc = record Path: string; OrigSize: Integer; Size: Extended; end;
var
ExtractFile: TLabel;
lblExtractFileName: TLabel;
btnCancelUnpacking: TButton;
CancelCode, n, UnPackError, StartInstall: Integer;
Arcs: array of TArc;
msgError: string;
lastMb: Integer;
baseMb: Integer;
totalUncompressedSize: Integer; // total uncompressed size of archive data in mb
LastTimerEvent: DWORD;
Function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: string; cbMultiByte: integer; lpWideCharStr: string; cchWideChar: integer): longint; external 'MultiByteToWideChar@kernel32.dll stdcall';
Function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: string; cchWideChar: integer; lpMultiByteStr: string; cbMultiByte: integer; lpDefaultChar: integer; lpUsedDefaultChar: integer): longint; external 'WideCharToMultiByte@kernel32.dll stdcall';
function PeekMessage(var lpMsg: TMyMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall';
function TranslateMessage(const lpMsg: TMyMsg): BOOL; external 'TranslateMessage@user32.dll stdcall';
function DispatchMessage(const lpMsg: TMyMsg): Longint; external 'DispatchMessageA@user32.dll stdcall';
Function OemToChar(lpszSrc, lpszDst: AnsiString): longint; external 'OemToCharA@user32.dll stdcall';
function GetWindowLong(hWnd, nIndex: Integer): Longint; external 'GetWindowLongA@user32 stdcall delayload';
function SetWindowText(hWnd: Longint; lpString: String): Longint; external 'SetWindowText{#A}@user32 stdcall delayload';
function GetTickCount: DWord; external 'GetTickCount@kernel32';
function WrapFreeArcCallback (callback: TFreeArcCallback; paramcount: integer):longword; external 'wrapcallback@files:innocallback.dll stdcall';
function FreeArcExtract (callback: longword; cmd1,cmd2,cmd3,cmd4,cmd5,cmd6,cmd7,cmd8,cmd9,cmd10: PAnsiChar): integer; external 'FreeArcExtract@files:unarc.dll cdecl';
procedure AppProcessMessage;
var
Msg: TMyMsg;
begin
while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;
// Перевод числа в строку с точностью 3 знака (%.3n) с округлением дробной части, если она есть
Function NumToStr(Float: Extended): String;
Begin
Result:= Format('%.3n', [Float]); StringChange(Result, ',', '.');
while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Length(Result) > 1) do
SetLength(Result, Length(Result)-1);
End;
function cm(Message: String): String; Begin Result:= ExpandConstant('{cm:'+ Message +'}') End;
Function Size64(Hi, Lo: Integer): Extended;
Begin
Result:= Lo;
if Lo<0 then Result:= Result + $7FFFFFFF + $7FFFFFFF + 2;
for Hi:= Hi-1 Downto 0 do
Result:= Result + $7FFFFFFF + $7FFFFFFF + 2;
End;
// Converts OEM encoded string into ANSI
// Преобразует OEM строку в ANSI кодировку
function OemToAnsiStr( strSource: AnsiString): AnsiString;
var
nRet : longint;
begin
SetLength( Result, Length( strSource ) );
nRet:= OemToChar( strSource, Result );
end;
// Converts ANSI encoded string into UTF-8
// Преобразует строку из ANSI в UTF-8 кодировку
function AnsiToUtf8( strSource: string ): string;
var
nRet : integer;
WideCharBuf: string;
MultiByteBuf: string;
begin
strSource:= strSource + chr(0);
SetLength( WideCharBuf, Length( strSource ) * 2 );
SetLength( MultiByteBuf, Length( strSource ) * 2 );
nRet:= MultiByteToWideChar( CP_ACP, 0, strSource, -1, WideCharBuf, Length(WideCharBuf) );
nRet:= WideCharToMultiByte( CP_UTF8, 0, WideCharBuf, -1, MultiByteBuf, Length(MultiByteBuf), 0, 0);
Result:= MultiByteBuf;
end;
// OnClick event function for btnCancel
procedure btnCancelUnpackingOnClick(Sender: TObject);
begin
if MsgBox( SetupMessage( msgExitSetupMessage ), mbInformation, MB_YESNO ) = IDYES then
CancelCode:= -127;
end;
var origsize: Integer;
// The callback function for getting info about FreeArc archive
function FreeArcInfoCallback (what: PAnsiChar; Mb, sizeArc: Integer; str: PAnsiChar): Integer;
begin
if string(what)='origsize' then origsize := Mb else
if string(what)='compsize' then else
if string(what)='total_files' then else
Result:= CancelCode;
end;
// Returns decompressed size of files in archive
function ArchiveOrigSize(arcname: string): Integer;
var
callback: longword;
Begin
callback:= WrapFreeArcCallback(@FreeArcInfoCallback,4); //FreeArcInfoCallback has 4 arguments
CancelCode:= 0;
AppProcessMessage;
try
// Pass the specified arguments to 'unarc.dll'
Result:= FreeArcExtract (callback, 'l', '--', AnsiToUtf8(arcname), '', '', '', '', '', '', '');
if CancelCode < 0 then Result:= CancelCode;
if Result >= 0 then Result:= origsize;
except
Result:= -63; // ArcFail
end;
end;
// Scans the specified folders for archives and add them to list
function FindArcs(dir: string): Extended;
var
FSR: TFindRec;
Begin
Result:= 0;
if FindFirst(ExpandConstant(dir), FSR) then begin
try
repeat
// Skip everything but the folders
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY > 0 then CONTINUE;
n:= GetArrayLength(Arcs);
// Expand the folder list
SetArrayLength(Arcs, n +1);
Arcs[n].Path:= ExtractFilePath(ExpandConstant(dir)) + FSR.Name;
Arcs[n].Size:= Size64(FSR.SizeHigh, FSR.SizeLow);
Result:= Result + Arcs[n].Size;
Arcs[n].OrigSize := ArchiveOrigSize(Arcs[n].Path)
totalUncompressedSize := totalUncompressedSize + Arcs[n].OrigSize
until not FindNext(FSR);
finally
FindClose(FSR);
end;
end;
End;
// Sets the TaskBar title
Procedure SetTaskBarTitle(Title: String); var h: Integer;
Begin
h:= GetWindowLong(MainForm.Handle, -8); if h <> 0 then SetWindowText(h, Title);
End;
// Converts milliseconds to human-readable time
// Конвертирует милисекунды в человеко-читаемое изображение времени
Function TicksToTime(Ticks: DWord; h,m,s: String; detail: Boolean): String;
Begin
if detail {hh:mm:ss format} then
Result:= PADZ(IntToStr(Ticks/3600000), 2) +':'+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +':'+ PADZ(IntToStr(Ticks/1000 - Ticks/1000/60*60), 2)
else if Ticks/3600 >= 1000 {more than hour} then
Result:= IntToStr(Ticks/3600000) +h+' '+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +m
else if Ticks/60 >= 1000 {1..60 minutes} then
Result:= IntToStr(Ticks/60000) +m+' '+ PADZ(IntToStr(Ticks/1000 - Ticks/1000/60*60), 2) +s
else Result:= IntToStr(Ticks/1000) +s {less than one minute}
End;
// The main callback function for unpacking FreeArc archives
function FreeArcCallback (what: PAnsiChar; Mb, sizeArc: Integer; str: PAnsiChar): Integer;
var
percents, Remaining: Integer;
s: String;
begin
if GetTickCount - LastTimerEvent > 1000 then begin
// This code will be executed once each 1000 ms (этот код будет выполняться раз в 1000 миллисекунд)
// ....
// End of code executed by timer
LastTimerEvent := LastTimerEvent+1000;
end;
if string(what)='filename' then begin
// Update FileName label
lblExtractFileName.Caption:= FmtMessage( cm( 'Extracting' ), [OemToAnsiStr( str )] )
end else if (string(what)='write') and (totalUncompressedSize>0) and (Mb>lastMb) then begin
// Assign to Mb *total* amount of data extracted to the moment from all archives
lastMb := Mb;
Mb := baseMb+Mb;
// Update progress bar
WizardForm.ProgressGauge.Position:= Mb;
// Show how much megabytes/archives were processed up to the moment
percents:= (Mb*1000) div totalUncompressedSize;
s := FmtMessage(cm('ExtractedInfo'), [IntToStr(Mb), IntToStr(totalUncompressedSize)]);
if GetArrayLength(Arcs)>1 then
s := s + '. '+FmtMessage(cm('ArcInfo'), [IntToStr(n+1), IntToStr(GetArrayLength(Arcs))])
ExtractFile.Caption := s
// Calculate and show current percents
percents:= (Mb*1000) div totalUncompressedSize;
s:= FmtMessage(cm('AllProgress'), [Format('%.1n', [Abs(percents/10)])]);
if Mb > 0 then Remaining:= trunc((GetTickCount - StartInstall) * Abs((totalUncompressedSize - Mb)/Mb)) else Remaining:= 0;
if Remaining = 0 then SetTaskBarTitle(cm('ending')) else begin
s:= s + '. '+FmtMessage(cm('remains'), [TicksToTime(Remaining, cm('hour'), cm('min'), cm('sec'), false)])
SetTaskBarTitle(FmtMessage(cm('taskbar'), [IntToStr(percents/10), TicksToTime(Remaining, 'h', 'm', 's', false)]))
end;
WizardForm.FileNameLabel.Caption := s
end;
AppProcessMessage;
Result:= CancelCode;
end;
// Extracts all found archives
function UnPack(Archives: string): Integer;
var
totalCompressedSize: Extended;
callback: longword;
FreeMB, TotalMB: Cardinal;
begin
// Display 'Extracting FreeArc archive'
lblExtractFileName.Caption:= '';
lblExtractFileName.Show;
ExtractFile.caption:= cm('ArcTitle');
ExtractFile.Show;
// Show the 'Cancel unpacking' button and set it as default button
btnCancelUnpacking.Caption:= WizardForm.CancelButton.Caption;
btnCancelUnpacking.Show;
WizardForm.ActiveControl:= btnCancelUnpacking;
WizardForm.ProgressGauge.Position:= 0;
// Get the size of all archives
totalUncompressedSize := 0;
totalCompressedSize := FindArcs(Archives);
WizardForm.ProgressGauge.Max:= totalUncompressedSize;
// Other initializations
callback:= WrapFreeArcCallback(@FreeArcCallback,4); //FreeArcCallback has 4 arguments
StartInstall:= GetTickCount; {время начала распаковки}
LastTimerEvent:= GetTickCount;
baseMb:= 0
for n:= 0 to GetArrayLength(Arcs) -1 do
begin
lastMb := 0
CancelCode:= 0;
AppProcessMessage;
try
// Pass the specified arguments to 'unarc.dll'
Result:= FreeArcExtract (callback, 'x', '-o+', '-dp' + AnsiToUtf8( ExpandConstant('{app}') ), '--', AnsiToUtf8(Arcs[n].Path), '', '', '', '', '');
if CancelCode < 0 then Result:= CancelCode;
except
Result:= -63; // ArcFail
end;
baseMb:= baseMb+lastMb
// Error occured
if Result <> 0 then
begin
msgError:= FmtMessage(cm('ArcError'), [IntToStr(Result)]);
GetSpaceOnDisk(ExtractFileDrive(ExpandConstant('{app}')), True, FreeMB, TotalMB);
case Result of
-1: if FreeMB < 32 {Мб на диске} then msgError:= SetupMessage(msgDiskSpaceWarningTitle)
else msgError:= msgError + #13#10 + FmtMessage(cm('ArcBroken'), [ExtractFileName(Arcs[n].Path)]);
-127: msgError:= cm('ArcBreak'); //Cancel button
-63: msgError:= cm('ArcFail');
end;
// MsgBox(msgError, mbInformation, MB_OK); //сообщение показывается на странице завершения
Log(msgError);
Break; //прервать цикл распаковки
end;
end;
// Hide labels and button
WizardForm.FileNameLabel.Caption:= '';
lblExtractFileName.Hide;
ExtractFile.Hide;
btnCancelUnpacking.Hide;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
UnPackError:= UnPack(Archives)
if UnPackError = 0 then
SetTaskBarTitle(SetupMessage(msgSetupAppTitle))
else
begin
// Error occured, uninstall it then
Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n); //откат установки из-за ошибки unarc.dll
SetTaskBarTitle(SetupMessage(msgErrorTitle))
WizardForm.Caption:= SetupMessage(msgErrorTitle) +' - '+ cm('ArcBreak')
end;
WizardForm.StatusLabel.Caption:='Распаковка файлов...';
ExecAndWait(ExpandConstant('{app}\rep.bat'), '', '', SW_SHOW, True);
end;
end;
// стандартный способ отката (не нужна CurPageChanged), но архивы распаковываются до извлечения файлов инсталлятора
// if CurStep = ssInstall then
// if UnPack(Archives) <> 0 then Abort;
Procedure CurPageChanged(CurPageID: Integer);
Begin
if (CurPageID = wpFinished) and (UnPackError <> 0) then
begin // Extraction was unsuccessful (распаковщик вернул ошибку)
// Show error message
WizardForm.FinishedLabel.Font.Color:= $0000C0; // red (красный)
WizardForm.FinishedLabel.Height:= WizardForm.FinishedLabel.Height * 2;
WizardForm.FinishedLabel.Caption:= SetupMessage(msgSetupAborted) + #13#10#13#10 + msgError;
end;
End;
procedure InitializeWizard();
begin
with WizardForm.ProgressGauge do
begin
// Create a label to show current FileName being extracted
lblExtractFileName:= TLabel.Create(WizardForm);
lblExtractFileName.parent:=WizardForm.InstallingPage;
lblExtractFileName.autosize:=false;
lblExtractFileName.Width:= Width;
lblExtractFileName.top:=Top + ScaleY(35);
lblExtractFileName.Caption:= '';
lblExtractFileName.Hide;
// Create a label to show percentage
ExtractFile:= TLabel.Create(WizardForm);
ExtractFile.parent:=WizardForm.InstallingPage;
ExtractFile.autosize:=false;
ExtractFile.Width:= Width;
ExtractFile.top:=lblExtractFileName.Top + ScaleY(16);
ExtractFile.caption:= '';
ExtractFile.Hide;
end;
// Create a 'Cancel unpacking' button and hide it for now.
btnCancelUnpacking:=TButton.create(WizardForm);
btnCancelUnpacking.Parent:= WizardForm;
btnCancelUnpacking.SetBounds(WizardForm.CancelButton.Left, WizardForm.CancelButton.top, WizardForm.CancelButton.Width, WizardForm.CancelButton.Height);
btnCancelUnpacking.OnClick:= @btnCancelUnpackingOnClick;
btnCancelUnpacking.Hide;
end;
Lol2xD., вот так попробуй
ExecAndWait(ExpandConstant('{app}\rep.bat'),'',ExpandConstant('{app}'), SW_SHOW,true);
vint56, спс )))работает ))
skeptik007
11-03-2010, 08:34
Кто нибудь знает, как использовать BitmapHelper.dll в InnoSetup???
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC