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

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

Автор: log1stable
Дата сообщения: 06.06.2012 14:00
Можно в шапку?
Max Payne 3 RePack скрипт для Inno Setup от log1st.
Скачать
-Написано на Inno Setup 5.4.3.ee2 (ansi);
-Частично заюзан FormDesigner встроенный;
-Музыка (вкл/выкл);
-Скинизация;
-Скриншоты с рамкой;
-Нарисовано в botva2.dll;
-Можно удалить любой элемент картинок;
-Проверка системных требований; (в #define-директивах ввести нужные значения!)
-Новые страницы в Note (WelcomeP, ScreensP, SystemsP, ParametersP, InstallingP, FinishedP);
-Исходники всех .png-картинок в формате .psd;
-Сворачивание в трей;
-Баллооны(оповещения) из трея;
-Новая иконка;
-Прозрачность;
-Дополнительный софт (Без TasksMemo) через RadioButton'ы и CheckBox'ы;
-Смена WizardForm.Caption по таймеру.
-Максимально упрощено благодаря #define и #include - директивам.
-"Статус-панель" из простых label'ов;
-Все ресурсы раскиданы по папкам.


Код:

Автор: Hell_Dog2011
Дата сообщения: 06.06.2012 15:36
помогите плиз по моему вопросу очень надо.

Добавлено:
при установки как доходит до распаковки srep выдаёт ошибку невозможно записать данные на диск возможно на нём закончилось свободное место.[more][Code]
const
PCFonFLY=true;
notPCFonFLY=false;

var
LabelPct, LabelCurrFileName, LabelStatusRollback, LabelStatus, LabelTime3: TLabel;
OveralPct, n, Cancel: integer;
CancelUnpackingBtn: HWND;
Comps1,Comps2,Comps3, TmpValue: longword;
MyError: boolean;
msgError: string;
PCFVer: double;

type
TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): 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; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: BOOL ):BOOL; external 'ISArcExtract@files:ISDone.dll stdcall';
function IS7ZipExtract(CurComponent:longword; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):BOOL; external 'IS7zipExtract@files:ISDone.dll stdcall';
function ISRarExtract(CurComponent:longword; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):BOOL; external 'ISRarExtract@files:ISDone.dll stdcall';
function ISPrecompExtract(CurComponent:longword; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):BOOL; external 'ISPrecompExtract@files:ISDone.dll stdcall';
function ISSRepExtract(CurComponent:longword; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):BOOL; external 'ISSrepExtract@files:ISDone.dll stdcall';
function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):BOOL; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall';
function ISDoneInitialize(RecordFileName:AnsiString; TimeType,Comp1,Comp2,Comp3:longword; PrecompVers: double; RecursiveSubDir:boolean; WinHandle, NeededMem:longint; callback:TCallback):BOOL; external 'ISDoneInitialize@files:ISDone.dll stdcall';
function ISDoneStop:BOOL; external 'ISDoneStop@files:ISDone.dll stdcall';
function GetWindowLong(hWnd, nIndex: Integer): Longint; external 'GetWindowLongA@user32 stdcall delayload';
function SetWindowText(hWnd: Longint; lpString: AnsiString): Longint; external 'SetWindowTextA@user32 stdcall delayload';
function cm(Message: String): String; Begin Result:= ExpandConstant('{cm:'+ Message +'}') End;

Procedure SetTaskBarTitle(Title: AnsiString); var h: Integer;
begin
h:= GetWindowLong(MainForm.Handle, -8); if h <> 0 then SetWindowText(h, Title);
end;

procedure AppProcessMessage;
var
Msg: TMessage;
begin
while PeekMessage(Msg, 0, 0, 0, 1) do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end;

function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
var
pr: Extended;
w, w1: integer;
p: string;
begin
w:=Round(458*OveralPct/1000);
ImgSetPosition(PB3Img,120,302,w,21);
LabelCurrFileName.Caption :=ExpandConstant('{app}\')+CurrentFile;
if LabelCurrFileName.Caption<>WizardForm.FilenameLabel.Caption then
LabelCurrFileName.Caption:=MinimizePathName(LabelCurrFileName.Caption, LabelCurrFileName.Font, 560);
p :=IntToStr(OveralPct div 10)+' %.';
LabelPct.Caption :=ExpandConstant('{cm:AllProgress} ')+p+ExpandConstant(' {cm:Remains} ')+TimeStr1;
LabelTime3.Caption:=ExpandConstant('{cm:AllElapsedTime} ')+TimeStr3;
if GetTickCount-LastTimerEvent>5000{5 секунд} then begin
LastTimerEvent:= GetTickCount;
ImgSetVisibility(AImg[CurrentImage],False);
CurrentImage:=CurrentImage+1;
if CurrentImage=GetArrayLength(AImg) then CurrentImage:=0;
ImgSetVisibility(AImg[CurrentImage],True);
end;
ImgApplyChanges(WizardForm.Handle);
AppProcessMessage;
Result := Cancel;
end;

procedure CancelUnpackingOnEnter(hBtn:HWND);
begin
sndPlaySound(ExpandConstant('{tmp}\WFEnter.wav'),$0001);
end;

procedure CancelUnpackingOnClick(hBtn:HWND);
begin
if MsgBox( SetupMessage( msgExitSetupMessage ), mbConfirmation, MB_YESNO ) = IDYES then Cancel:= -1;
end;

procedure HideComponent;
begin
LabelStatusRollback.Show;
LabelPct.Hide;
LabelCurrFileName.Hide;
LabelStatus.Hide;
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
ProgressInfoLabel.Hide;
StatusLabel.Hide;
ProgressInfoLabel.Hide;
FilenameLabel.Hide;
ImgSetVisibility(PBBkg1Img,False);
ImgSetVisibility(PBBkg2Img,False);
ImgSetVisibility(PB1Img,False);
ImgSetVisibility(PB2Img,False);
ImgSetVisibility(PB3Img,False);
BtnSetVisibility(CancelUnpackingBtn, False);
BtnSetVisibility(hCancelBtn, True);
ImgApplyChanges(WizardForm.Handle);
end;

procedure Error;
var n:integer;
begin
Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n);
end;

procedure CreateISDoneComponents;
begin
CancelUnpackingBtn:=BtnCreate(WizardForm.Handle,ScaleX(652),ScaleY(487),ScaleX(111),ScaleY(39),ExpandConstant('{tmp}\button.png'),18,False);
BtnSetEvent(CancelUnpackingBtn,BtnMouseEnterEventID,WrapBtnCallback(@CancelUnpackingOnEnter,1));
BtnSetEvent(CancelUnpackingBtn,BtnClickEventID,WrapBtnCallback(@CancelUnpackingOnClick,1));
BtnSetFont(CancelUnpackingBtn,WFButtonFont.Handle);
BtnSetFontColor(CancelUnpackingBtn,$DAE369,$DAE369,$DAE369,$B6B6B6);
BtnSetCursor(CancelUnpackingBtn,GetSysCursorHandle(32649));
BtnSetVisibility(CancelUnpackingBtn, False);

LabelPct := TLabel.Create(WizardForm);
with LabelPct do begin
AutoSize:=False;
SetBounds(ScaleX(80), ScaleY(355), ScaleX(638), ScaleY(19));
Alignment := taCenter;
Transparent:=True;
Font.Name:= 'Georgia'
Font.Size:= 10;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold,fsItalic];
Parent := WizardForm;
end;

LabelCurrFileName := TLabel.Create(WizardForm);
with LabelCurrFileName do begin
AutoSize:=False;
SetBounds(ScaleX(119), ScaleY(270), ScaleX(560), ScaleY(17));
Transparent:=True;
Font.Name:= 'Georgia'
Font.Size:= 10;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold,fsItalic];
Caption:= '';
Parent := WizardForm;
Hide;
end;

LabelStatusRollback := TLabel.Create(WizardForm);
with LabelStatusRollback do begin
Parent := WizardForm;
AutoSize := False;
SetBounds(ScaleX(120), ScaleY(245), ScaleX(400), ScaleY(17));
Transparent:=True;
Font.Name:= 'Georgia';
Font.Size:= 11;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold,fsItalic];
Caption := cm('TitleBack');
end;

LabelStatus := TLabel.Create(WizardForm);
with LabelStatus do begin
Parent := WizardForm;
AutoSize := False;
SetBounds(ScaleX(120), ScaleY(245), ScaleX(400), ScaleY(17));
Transparent:=True;
Font.Name:= 'Georgia';
Font.Size:= 10;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold,fsItalic];
Caption := cm('ArcTitle');
end;

LabelTime3 := TLabel.Create(WizardForm);
with LabelTime3 do begin
AutoSize:=False;
SetBounds(ScaleX(80), ScaleY(405), ScaleX(638), ScaleY(19));
Alignment := taCenter;
Transparent:=True;
Font.Name:= 'Georgia'
Font.Size:= 10;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold,fsItalic];
Parent := WizardForm;
end;
end;

Procedure UnpackingISDoneFinished(CurPageID: Integer);
begin
if (CurPageID = wpFinished) and MyError then
begin
LabelTime3.Hide;
WizardForm.Caption:= ExpandConstant('{cm:ISDoneError}');
SetTaskBarTitle(SetupMessage(msgErrorTitle));
FinishedHeadingLabel.Caption:=cm('FinishedHeading1');
FinishedLabel.Caption:= msgError + ExpandConstant(' {cm:Trouble}') + #10#13#10#13+ExpandConstant('{cm:FinishedLabel2}');
SetTimer(WizardForm.Handle,WFDiskTimerID,1000,WrapTimerProc(@FinishFlashing,4));
end;
if (CurPageID = wpFinished) and (Cancel <> 0) then
begin
LabelTime3.Hide;
WizardForm.Caption:= ExpandConstant('{cm:ISDoneError1}');
SetTaskBarTitle(SetupMessage(msgErrorTitle));
FinishedHeadingLabel.Caption:=cm('FinishedHeading1');
FinishedLabel.Caption:= msgError + ExpandConstant(' {cm:Trouble}') + #10#13#10#13+ExpandConstant('{cm:FinishedLabel2}');
SetTimer(WizardForm.Handle,WFDiskTimerID,1000,WrapTimerProc(@FinishFlashing,4));
end;
end;

procedure UnpackingISDone(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
if MyError then Error;
if CurStep = ssInstall then begin
PBBkg1Img:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\ProgressBackground.png'),119,300,460,25,True,True);
PBBkg2Img:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\ProgressBackground2.png'),581,300,98,25,True,True);
ImgApplyChanges(WizardForm.Handle);
PB3Img:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\ProgressImg.png'),120,302,458,21,True,True);
PB2Img:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\ProgressImg.png'),582,302,96,21,True,True);
PBOldProc:=SetWindowLong(WizardForm.ProgressGauge.Handle,-4,CallBackProc(@PBProc,4));
ImgSetVisibility(PB2Img,False);
LabelStatus.Show;
BtnSetText(CancelUnpackingBtn,WizardForm.CancelButton.Caption);
BtnSetVisibility(CancelUnpackingBtn, True);
BtnSetVisibility(hCancelBtn, False);
LabelPct.Show;
LabelCurrFileName.Show;
ProgressInfoLabel.Hide;
Cancel:=0;

// Распаковка всех необходимых файлов в папку {tmp}.

ExtractTemporaryFile('facompress.dll'); //ускоряет распаковку .arc архивов.
// ExtractTemporaryFile('arc.ini');
// ExtractTemporaryFile('srep.exe');

#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

// Подготавливаем переменную, содержащую всю информацию о выделенных компонентах для ISDone.dll
// максимум 96 компонентов.
Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
TmpValue:=1;
//if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue; //компонент 1
//if Comp1 then Comps1:=Comps1+TmpValue; //компонент 1
TmpValue:=TmpValue*2;
//if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue; //компонент 2
if Comp2 then Comps1:=Comps1+TmpValue; //компонент 2
TmpValue:=TmpValue*2;
//if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue; //компонент 3
if Comp3 then Comps1:=Comps1+TmpValue; //компонент 3
TmpValue:=TmpValue*2;
//if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue; //компонент 4
//if Comp4 then Comps1:=Comps1+TmpValue; //компонент 4
TmpValue:=TmpValue*2;
//if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue; //компонент 5
if Comp5 then Comps1:=Comps1+TmpValue; //компонент 5
TmpValue:=TmpValue*2;
//if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue; //компонент 5
if Comp6 then Comps1:=Comps1+TmpValue; //компонент 6
// .....
#endif

#ifdef precomp04
PCFVer:=0.4;
#else
#ifdef precomp038
PCFVer:=0.38;
#else
PCFVer:=0;
#endif
#endif
repeat
MyError:=true;
if not ISDoneInitialize(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, 0, false, MainForm.Handle, {#NeedMem}, @ProgressCallback) then break;
repeat

//if not ISArcExtract ( 0, 0, ExpandConstant('{src}\*.bin'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;

// далее находятся закомментированые примеры различных комбинаций параметров и функций распаковки
//********bin*pc\audio\Sfx*********//
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data.bin'), ExpandConstant('{app}\pc\audio\Sfx\'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data1.bin'), ExpandConstant('{app}\pc\audio\Sfx\'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data2.bin'), ExpandConstant('{app}\pc\audio\Sfx\'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data3.bin'), ExpandConstant('{app}\pc\audio\Sfx\'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\audio\Sfx\*.srep'),ExpandConstant('{app}\pc\audio\Sfx\.rcf'), true ) then break;
//************data4pc_anim**************\\
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data4.bin'), ExpandConstant('{app}\pc\anim'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\anim\*.srep'),ExpandConstant('{app}\pc\anim\*.img'), true ) then break;

//************data5pc_models_cdimages**************\\
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data5.bin'), ExpandConstant('{app}\pc\models\cdimages\'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\models\cdimages\*.srep'),ExpandConstant('{app}\pc\models\cdimages\*.img'), true ) then break;

//************data6pc_data_maps_east**************\\
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data6.bin'), ExpandConstant('{app}\pc\data\maps\east\'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\data\maps\east\*.srep'),ExpandConstant('{app}\pc\data\maps\east\*.img'), true ) then break;

//************data7pc_data_cdimages**************\\
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data7.bin'), ExpandConstant('{app}\pc\data\cdimages\'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\data\cdimages\*.srep'),ExpandConstant('{app}\pc\data\cdimages\*.img'), true ) then break;

//************data8pc\data_maps_jersey**************\\
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data8.bin'), ExpandConstant('{app}\pc\data\maps\jersey\'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\data\maps\jersey\*.srep'),ExpandConstant('{app}\pc\data\maps\jersey\*.img'), true ) then break;

//************data9pc_data_maps_manhat**************\\
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data9.bin'), ExpandConstant('{app}\pc\data\maps\manhat\'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data0.bin'), ExpandConstant('{app}\'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data01.bin'), ExpandConstant('{app}\'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\data\maps\manhat\*.srep'),ExpandConstant('{app}\pc\data\maps\manhat\*.img'), true ) then break;


(*//if not ISSRepExtract( 0, 0, ExpandConstant('{app}\models\cutscene.srep'),ExpandConstant('{app}\models\cutscene.img'), true ) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\models\gta_int.srep'),ExpandConstant('{app}\models\gta_int.img'), true ) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\models\gta3.srep'),ExpandConstant('{app}\models\gta3.img'), true ) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\models\player.srep'),ExpandConstant('{app}\models\player.img'), true ) then break;

//************good**************\\
(*//if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data1.bin'), ExpandConstant('{app}\audio\SFX'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\audio\SFX\*.srep'),ExpandConstant('{app}\audio\SFX'), true ) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data2.bin'), ExpandConstant('{app}\audio\SFX'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\audio\SFX\*.srep'),ExpandConstant('{app}\audio\SFX'), true ) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data3.bin'), ExpandConstant('{app}\audio\streams'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\audio\streams\*.srep'),ExpandConstant('{app}\audio\streams'), true ) then break;)///

//if not ISSRepExtract( 0, 0, ExpandConstant('{app}\data.srp'),ExpandConstant('{app}\data.pcf'), true ) then break;
//if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data.pcf'), ExpandConstant('{app}\'), true ) then break;
//if not ISArcExtract ( 0, 0, ExpandConstant('{src}\bin\data1.bin'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;

//if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\data64.7z'), ExpandConstant('{app}'), false, '' ) then break;
//if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data1.srp'), ExpandConstant('{app}\data1.pcf'), true ) then break;
//if not ISArcExtract ( 0, 0, ExpandConstant('{app}\data64.arc'), ExpandConstant('{app}\'), true, '', '', '',notPCFonFLY ) then break;
//if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data1.pcf'), ExpandConstant('{app}'), true ) then break;
//if not IS7ZipExtract ( 0, 0, ExpandConstant('{app}\data.7z'), ExpandConstant('{app}'), true, '' ) then break;

//if not ISArcExtract ( 0, 0, ExpandConstant('{src}\bin\data2.bin'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
//if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data2.srp'), ExpandConstant('{app}\data2.pcf'), true ) then break;
//if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data2.pcf'), ExpandConstant('{app}'), true ) then break;
//if not IS7ZipExtract ( 0, 0, ExpandConstant('{app}\data1\CODMW2.7z'), ExpandConstant('{app}\data1'), true, '' ) then break;
//if not ISArcExtract ( 0, 0, ExpandConstant('{src}\bin\data3.bin'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
//if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data3.pcf'), ExpandConstant('{app}'), true ) then break;
//if not ISArcExtract ( 0, 0, ExpandConstant('{src}\bin\data4.bin'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;

// примеры использования компонентов и всплывающего запроса следующего диска:

//if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW2_Disk2.arc' ) then break;
//if not ISArcExtract ( 1, 0, ExpandConstant('{src}\bin\data1.bin'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
//if not ISArcExtract ( 2, 0, ExpandConstant('{src}\bin\data1.bin'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
//if not ISArcExtract ( 3, 0, ExpandConstant('{src}\bin\data4.bin'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
//if not ISArcExtract ( 4, 0, ExpandConstant('{src}\engvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
//if not ISArcExtract ( 5, 0, ExpandConstant('{src}\bin\data4.bin'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
(* if not ISArcExtract ( 6, 0, ExpandConstant('{src}\engvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ShowChangeDiskWindow('Пожалуйста, вставьте первый диск и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW_2.arc' ) then break;

// просто различные комбинации параметров в функциях распаковки

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\sds_ru2.arc'), ExpandConstant('{app}\data1'), false, '', '', ExpandConstant('{app}\data1'), PCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\sds_ru.arc'), ExpandConstant('{app}\data1'), false, '', '', ExpandConstant('{app}\data1'), PCFonFLY) then break;

if not ISPrecompExtract( 0, 0, ExpandConstant('{src}\data1\*.pcf'), ExpandConstant('{src}\data1'), false) then break;
if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\data1\sds_ru.7z'), ExpandConstant('{src}\data1'), true, '') then break;

if not ISRarExtract ( 0, 0, ExpandConstant('{src}\data_*.rar'), ExpandConstant('{app}'), false, '' ) then break;
if not ISRarExtract ( 0, 0, ExpandConstant('{src}\*part1.rar'), ExpandConstant('{app}'), false, 'Password' ) then break;

if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\data*.7z'), ExpandConstant('{app}\data1'), false, '' ) then break;
if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\sound.7z'), ExpandConstant('{app}\data1'), false, '' ) then break;

if not ISArcExtract ( 0, 33, ExpandConstant('{src}\dataR.arc'), ExpandConstant('{app}\data1'), false, '', '', '',notPCFonFLY) then break;
if not ISArcExtract ( 0, 33, ExpandConstant('{src}\CODMW_*.arc'), ExpandConstant('{app}\data1'), false, '', '', '',notPCFonFLY) then break;
if not ISArcExtract ( 0, 34, ExpandConstant('{src}\dataR.arc'), ExpandConstant('{app}\data1\'), false, '', '', '',notPCFonFLY) then break;

if not ISPrecompExtract( 0, 0, ExpandConstant('{src}\*.pcf'), ExpandConstant('{app}\data1'), false) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{src}\data0.pcf'), ExpandConstant('{app}\data1'), false) then break;

if not ISSRepExtract ( 0, 0, ExpandConstant('{src}\*.srep'), ExpandConstant('{app}\data1\'), false) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{src}\data02.srep'), ExpandConstant('{app}\data1\data.pcf'), false) then break;
*)
MyError:=false;
until true;
ISDoneStop;
until true;
BtnSetVisibility(CancelUnpackingBtn, False);
BtnSetVisibility(hCancelBtn, True);
BtnSetEnabled(hCancelBtn, False);
ImgSetVisibility(PB2Img,True);
LabelStatus.Hide;
LabelPct.Hide;
LabelCurrFileName.Hide;
ProgressInfoLabel.Show;
if (Cancel <> 0) or MyError then HideComponent;
end;
end;[/more]
Автор: Snoopak96
Дата сообщения: 08.06.2012 18:19
Название: Installer in the form PSP
Автор: Snoopak96
Версия: 1.0

Описание:
All included инсталлятор в виде PlayStation Portable.

Особенности:
В качестве фона используется изображение и видео с Blur эффектом;
Для проигрывания видео используется Xvid кодек;
Имеется возможность развернуть видео на весь экран формы PSP, минимизации, а так же отключение видео;
В установщике присутствует модуль bass для проигрывания и регулирования уровня громкости музыки;
Помимо основных страниц установщика имеются три дополнительным в котором вы можете указать особенности вашей сборки, проверить системные требования, указать описание игры;
Описание выполнено с эффектом повторяющихся титров;
Присутствуют дополнительные функции блокировки кнопок установщика, перехода на URL-адрес релиз-группы;
Для распаковки игры используется библиотека ISDone 0.6final от Profrager;
Скрипт легко перестраивается под необходимые компоненты для установки на страницах выбора сочетания текста и озвучек, дополнительных задач;
Примечание:
PSD исходники прилагаются.





Требования:
Расширенная версия Inno Setup - Ansi.

Скачать: http://krinkels.org/downloads.php?do=file&id=82

З.Ы.Писал данный инсталл около полу года назад, изменять/обновлять скрипт не планирую. Скрипт компилить только на анси версии, ибо на юникод будут баги с мерцанием движущего теста по blur цвету (для одарённых - двойная буферизация не поможет).
Автор: tyumenik
Дата сообщения: 09.06.2012 12:41
Кто-то знает скрипт??? Заранее спасибо!!!



Автор: YURSHAT
Дата сообщения: 10.06.2012 12:53

Цитата:
Кто-то знает скрипт???

Все знают, поэтому никто и не отвечает. Это одна минута работы в ФормДизайнере....
Автор: log1stable
Дата сообщения: 10.06.2012 15:58
Есть у кого-нибудь исходники button2 из ботвы? Никак ровно не сделаю
Автор: ZverBY
Дата сообщения: 11.06.2012 10:07
Как сделать, чтобы можно было вместо формата BIN ставить любое !!!
Пример:
Автор: log1stable
Дата сообщения: 11.06.2012 11:10
ZverBY, FreeArc + ISDone.
Автор: innonewbie
Дата сообщения: 11.06.2012 17:16
Всем привет! Есть ли способ средствами inno заблокировать exe-файлу доступ в интернет хотя бы стандартным брандмауэром виндовс, чтоб не вылазило данное окно: [more=скриншот] [/more]. Знаю, что с помошью FirewallInstallHelper.dll можно добавить в исключения (т.е разрешить достп к интернету, а как запретить)
Автор: tyumenik
Дата сообщения: 11.06.2012 22:18
YURSHAT, ну, я чайник))) Не поможешь мне? Тогда ЛС...
Автор: molot76
Дата сообщения: 12.06.2012 04:41

Цитата:
Как сделать, чтобы можно было вместо формата BIN ставить любое !!!

сжимаешь фриарком, потом переименовываешь во что хочешь а в исдоне пишешь то что переименовал, сам так делаю.
Автор: repacksman
Дата сообщения: 12.06.2012 17:23
Привет всем. У меня есть разговор к людям которые ддосят мой сайт. Пожалста напишите мне в Скайп vasyakrn или Ася 615352188. Есть розговор. Буду очень благодарен. Извините за оффтоп
Анонимность гарантирувана
Автор: poxnanik
Дата сообщения: 12.06.2012 17:48
что за ошибка подскажите
Автор: boss911
Дата сообщения: 13.06.2012 07:31
Недавно обновился до 5.5.0 Unicode (Preprocessor) версию. Только что заметил, что после каждой компиляции, в конце, выдает такие предупреждения:
[more]
Код: Warning: Message name "ToUNCPathname" in "C:\Program Files\Inno Setup\Languages\Russian.isl" is not recognized by this version of Inno Setup. Ignoring.
Warning: A message named "ApplicationsFound" has not been defined for the "rus" language. Will use the English message from Default.isl.
Warning: A message named "ApplicationsFound2" has not been defined for the "rus" language. Will use the English message from Default.isl.
Warning: A message named "CannotInstallToNetworkDrive" has not been defined for the "rus" language. Will use the English message from Default.isl.
Warning: A message named "CannotInstallToUNCPath" has not been defined for the "rus" language. Will use the English message from Default.isl.
Warning: A message named "CloseApplications" has not been defined for the "rus" language. Will use the English message from Default.isl.
Warning: A message named "DontCloseApplications" has not been defined for the "rus" language. Will use the English message from Default.isl.
Warning: A message named "InvalidParameter" has not been defined for the "rus" language. Will use the English message from Default.isl.
Warning: A message named "SetupAlreadyRunning" has not been defined for the "rus" language. Will use the English message from Default.isl.
Warning: A message named "ShutdownBlockReasonInstallingApp" has not been defined for the "rus" language. Will use the English message from Default.isl.
Warning: A message named "ShutdownBlockReasonUninstallingApp" has not been defined for the "rus" language. Will use the English message from Default.isl.
Warning: A message named "StatusClosingApplications" has not been defined for the "rus" language. Will use the English message from Default.isl.
Warning: A message named "StatusRestartingApplications" has not been defined for the "rus" language. Will use the English message from Default.isl.
Warning: A message named "WindowsServicePackRequired" has not been defined for the "rus" language. Will use the English message from Default.isl.
Warning: A message named "WindowsVersionNotSupported" has not been defined for the "rus" language. Will use the English message from Default.isl.
*** Finished. [7:19:26, 00:06,078 elapsed]
Автор: Gnom3
Дата сообщения: 13.06.2012 09:30
boss911
смотрим изменения:

[more=Изменения]1. Изменены требования к ОС для не юникодной версии Inno Setup: Windows 95, 98, Ме и NT 4.0 больше не поддерживается. Для юникодной версии Inno Setup минимальной поддерживаемой ОС теперь является Windows 2000.

2. Директивы и параметры MinVersion и OnlyBelowVersion теперь требуют только единственный номер версии. Например: MinVersion=5.1. Для совместимости с предыдущими версиями Inno Setup для ОС Windows 95/98/Me и Windows NT номера версий могут быть указаны раздельно, но больше не используются.

3. На ОС Windows Vista и выше Inno Setup теперь поддерживает Windows Restart Manager API, чтобы закрыть и перезапустить приложения, использующих файлы, которые требуют обновления:

а) Добавлена новая директива в секцию [Setup]: CloseApplications (по умолчанию имеет значение yes). Если параметр установлен в yes и установка не запущена как "тихая", то на странице Мастера Preparing to Install (Подготовка к инсталляции) установщик сделает паузу, если обнаружит программы или приложения, которые используют устанавливаемые файлы из секции [Files] или [InstallDelete]. При этом пользователю будет выдан запрос на завершение работы этих программ или приложений с последующим их перезапуском после завершения работы инсталлятора. Если параметр установлен в yes и установщик запущен в "тихом" режиме, то программы и приложения, которые используют устанавливаемые файлы будут закрыты автоматически, без уведомления пользователя, а после завершения установки запущены вновь (если не была выполнена отмена в параметрах командной строки, см. ниже).

б) Добавлена новая директива в секцию [Setup]: CloseApplicationsFilter, которая по умолчанию имеет следующие значения *.exe,*.dll,*.chm. При установке командный движок инсталлятора в первую очередь проверит использование этих файлов. Задав для этого параметра значение *.*, можно обеспечить более качественную проверку в ущерб скорости.

в) Добавлена новая директива в секцию [Setup]: RestartApplications (по умолчанию имеет значение yes). Примечание: чтобы инсталлятор смог перезапустить программу (приложение) после завершения установки, эта программа (приложение) должна поддерживать API-функцию Windows RegisterApplicationRestart.

г) Добавлены новые параметры командной строки для инсталлятора: /NOCLOSEAPPLICATIONS и /NORESTARTAPPLICATIONS. Они предназначены для отмены директив CloseApplications и RestartApplications.

д) В секцию [code*] добавлена новая функция: RmSessionStarted.

е) TWizardForm: добавлено новое свойство PreparingMemo.

4. На странице Мастера Preparing to Install (Подготовка к инсталляции) теперь также проверяются файлы, определенные в секции [InstallDelete], которые были поставлены в очередь на замену или удаление (этим или другим инсталлятором) при следующей перезагрузке системы. В этом случае инсталляция останавливается, если это происходит. Ранее проверка выполнялась только для файлов, указанных в секции [Files].

5. Теперь установщик дополнительно скрывает кнопки "Назад" и "Далее" при обработке команд функции PrepareToInstall в секции [code*]. Ранее они только отключались.

6. Добавлена новая директива в секцию [Setup]: AllowNetworkDrive (по умолчанию имеет значение yes). Если параметр имеет значение no (нет), то на странице Мастера Select Destination Location (Выбор папки установки) пользователю не будет разрешено указать путь на сетевом диске. Примечание: чтобы полностью запретить инсталляцию на сетевых ресурсах, следует также использовать директиву AllowUNCPath=no.

7. Изменения для ОС Windows 7:

а) Добавлены новые флаги для секции [Icon]: preventpinning. Предотвращает запись команды в меню "Пуск" из имеющихся на Панели задач Windows 7 (и выше). Это также делает запись неподходящей для включения в список наиболее часто используемых команд (MFU) меню "Пуск". На ранних версиях Windows этот флаг игнорируется. Добавлен Миланом Бердой через GitHub.

б) Исправлена ошибка в реестре со значениями EstimatedSize в разделе деинсталляции реестра на Windows 7 SP1 и выше. Теперь установщик корректно выполняет запись для размеров 4 Гбайт или больше.

8. Улучшена работа функции "auto-retry" в секции [Files]: теперь событие повторяется автоматически, даже если используется флаг restartreplace.

9. Сценарии Паскаля: Функция InstallOnThisVersion теперь возвращает логическое значение. Если передается строка с недействительной версией, то будет вызвано исключение.

10. Добавлена поддержка размеров 128x128 и 256x256 для значков компилятора и документов. Автор Motaz.

11. Сообщения, которые были добавлены и упразднены в этой версии Inno (смотрите различия в Default.isl):

а) Новые сообщения: ApplicationsFound, ApplicationsFound2, CannotInstallToNetworkDrive, CannotInstallToUNCPath, CloseApplications, DontCloseApplications, InvalidParameter, SetupAlreadyRunning, ShutdownBlockReasonInstallingApp, ShutdownBlockReasonUninstallingApp, StatusClosingApplications, StatusRestartingApplications, WindowsServicePackRequired, WindowsVersionNotSupported.

б) Новые пользовательские сообщения: AutoStartProgramGroupDescription, AutoStartProgram, AddonHostProgramNotFound.

в) Удаленные сообщения: ToUNCPathname.


Примечание: в настоящий момент официально обновлены только английские и голландские языковые файлы с сообщениями. Дополнительные сведения смотрите на странице Inno Setup Translations.


12. Изменения в препроцессоре Inno Setup (ISPP):

а) Добавлена функция DirExists.

б) Исходный код ISPP был перемещен в основной репозитарий исходного кода Inno Setup.

13. Другие мелкие исправления.[/more]
За перевод - спасибо Leserg
Автор: SotM
Дата сообщения: 13.06.2012 09:43
boss911
Если поискать в других языках, то там эти новые фичи присутствуют только в Dutch файле. Так что обделены остались не только русские. Но я думаю ты сможешь автору помочь с этим вопросом.

P.S. Хе, Gnom3 опередил...
Автор: boss911
Дата сообщения: 13.06.2012 10:59
Gnom3

Я в курсе этих изменений, о чем и написал в своем посте. Читал не тут.

SotM

Цитата:
Но я думаю ты сможешь автору помочь с этим вопросом.

А вот я не думаю, так как с английским не дружу. Хрен с ним, не критично. Они что датчане?
Автор: ultimo
Дата сообщения: 14.06.2012 09:04
Нужно создать в определенном ини-файле определенную строку (строки) в определенной секции...Сколько не искал, нигде толком про построение функции не пишется (а самому додумать сложно)

Нашел вот такую функцию:

function SetIniString(const Section, Key, Value, Filename: String): Boolean;

А как ее продолжать? (Ко всему прочему необходимо в файле создать также новую секцию)
Автор: troyan90
Дата сообщения: 14.06.2012 16:31
ultimo
пример использования:

Код: SetIniString('Section', 'Key', 'Value', ExpandConstant('{app}\file.ini'));
Автор: log1stable
Дата сообщения: 16.06.2012 11:29
Вот, что иконки с большим разрешением теперь поддерживает - значительный плюс!
Автор: ultimo
Дата сообщения: 16.06.2012 16:31
troyan90
Спасибо большое за пояснение)

Еще такой вопрос: как создать надпись в конкретном месте обычного инсталлятора на конкретной странице (мне конкретно нужно на странице wpSelectDir)
Автор: troyan90
Дата сообщения: 16.06.2012 17:20
ultimo
[more=пример]
Код: [_code]
procedure InitializeWizard();
var
lbl: TLabel;
begin
lbl:=TLabel.Create(WizardForm);
with lbl do
begin
Parent:=WizardForm.SelectDirPage; //страница
SetBounds(ScaleX(0), ScaleY(100),ScaleX(WizardForm.SelectDirPage.Width), ScaleY(30)); //положение
Caption:='Ваш текст'; //текст
//Font.Size:=14;
end;
end;
Автор: ultimo
Дата сообщения: 16.06.2012 17:24
troyan90
ой, спасибо, я правда уже успел найти аналог...TNewStaticText. Вскоре надо будет с реестром заниматься...Я нашел скрипт, который вносит изменения в реестр, при этом засдается бекап старых записей, и после деинсталляции программы старые значения реестра восстанавливаются. Но на практике ничего не вышло.
Автор: innonewbie
Дата сообщения: 16.06.2012 19:30
Подскажите, пожадуйста, по такому вопросу: создал [more=CustomForm][Code]
var
img1: TBitmapImage;
Readme: TSetupForm;
CancelButton: TButton;

procedure ReadmeForm();
begin
Readme := CreateCustomForm();
with Readme do
begin
Position := poScreenCenter;
ClientWidth := WizardForm.Width;
ClientHeight := WizardForm.Height;
Caption := 'Readme';
BorderStyle:=bsNone;
end;
img1 := TBitmapImage.Create(Readme);
ExtractTemporaryFile('1.bmp');
with TBitmapImage.Create(Readme) do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := WizardForm.Width;
Height := WizardForm.Height;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
Parent := Readme;
end;

CancelButton := TButton.Create(Readme);
with CancelButton do
begin
Width := WizardForm.CancelButton.Width;
Height := WizardForm.CancelButton.Height;
Left := Readme.Width - Width - ScaleX(15);
Top := Readme.Height - Height * 2 - ScaleY(15);
Caption := 'Закрыть';
ModalResult := mrCancel;
Parent := Readme;
end;
end; [/more]. Как сделать, чтоб эта форма открывалась при нажатии на созданную мной [more=кнопку][Code]
var
infoBtn: TButton;

procedure InitializeWizard();
begin
infoBtn:=TButton.Create(WizardForm)
with infoBtn do begin
Left:=11
Top:=327
Width:=80
Height:=23
Cursor:=crHand
OnClick:=@infoButtonOnClick
Parent:=WizardForm
Caption:= 'Readme';
end;
end;[/more], пробовал через OnClick - не выходит никак И второй вопрос: можно ли в CustomForm "вписать" текст, но не NewStaticText, а создать нечто вроде страницы лицензии, чтобы текст брался из txt/rtf-файла?
Автор: nik1967
Дата сообщения: 16.06.2012 20:16
innonewbie, попробуй вместо procedure ReadmeForm(); написать procedure infoButtonOnClick (Sender: TObject); может получится ?
Автор: alex0413
Дата сообщения: 16.06.2012 20:42

Цитата:
innonewbie, попробуй вместо procedure ReadmeForm(); написать procedure infoButtonOnClick (Sender: TObject); может получится ?

а потом Вызвать в этой процедуре форму.
Получается так[more=код][Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[no][code]
var
img1: TBitmapImage;
Readme: TSetupForm;
CancelButton: TButton;
infoBtn: TButton;

procedure infoButtonOnClick (Sender: TObject);
begin
Readme := CreateCustomForm();
with Readme do
begin
Position := poScreenCenter;
ClientWidth := WizardForm.Width;
ClientHeight := WizardForm.Height;
Caption := 'Readme';
BorderStyle:=bsNone;
end;
(* img1 := TBitmapImage.Create(Readme);
ExtractTemporaryFile('1.bmp');
with TBitmapImage.Create(Readme) do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := WizardForm.Width;
Height := WizardForm.Height;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
Parent := Readme;
end; *)

CancelButton := TButton.Create(Readme);
with CancelButton do
begin
Width := WizardForm.CancelButton.Width;
Height := WizardForm.CancelButton.Height;
Left := Readme.Width - Width - ScaleX(15);
Top := Readme.Height - Height * 2 - ScaleY(15);
Caption := '&#199;&#224;&#234;&#240;&#251;&#242;&#252;';
ModalResult := mrCancel;
Parent := Readme;
end;
Readme.ShowModal;
end;

procedure InitializeWizard();
begin
infoBtn:=TButton.Create(WizardForm)
with infoBtn do begin
Left:=11
Top:=327
Width:=80
Height:=23
Cursor:=crHand
OnClick:=@infoButtonOnClick
Parent:=WizardForm
Caption:= 'Readme';
end;
end;[/no][/more]

вот с инфой из rtf файла

[more=код][no]; &#209;&#234;&#240;&#232;&#239;&#242; &#241;&#238;&#231;&#228;&#224;&#237; &#247;&#229;&#240;&#229;&#231; &#204;&#224;&#241;&#242;&#229;&#240; Inno Setup Script.
; &#200;&#209;&#207;&#206;&#203;&#220;&#199;&#211;&#201;&#210;&#197; &#196;&#206;&#202;&#211;&#204;&#197;&#205;&#210;&#192;&#214;&#200;&#222; &#196;&#203;&#223; &#207;&#206;&#196;&#208;&#206;&#193;&#205;&#206;&#209;&#210;&#197;&#201; &#200;&#209;&#207;&#206;&#203;&#220;&#199;&#206;&#194;&#192;&#205;&#200;&#223; INNO SETUP!

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
InfoBeforeFile=Info.rtf

[code]
var
img1: TBitmapImage;
Readme: TSetupForm;
CancelButton: TButton;
infoBtn: TButton;

procedure infoButtonOnClick (Sender: TObject);
begin
Readme := CreateCustomForm();
with Readme do
begin
Position := poScreenCenter;
ClientWidth := WizardForm.Width;
ClientHeight := WizardForm.Height;
Caption := 'Readme';
BorderStyle:=bsDialog;
end;
(* img1 := TBitmapImage.Create(Readme);
ExtractTemporaryFile('1.bmp');
with TBitmapImage.Create(Readme) do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := WizardForm.Width;
Height := WizardForm.Height;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
Parent := Readme;
end; *)

CancelButton := TButton.Create(Readme);
with CancelButton do
begin
Width := WizardForm.CancelButton.Width;
Height := WizardForm.CancelButton.Height;
Left := Readme.Width - Width - ScaleX(15);
Top := Readme.Height - Height * 2 - ScaleY(15);
Caption := '&#199;&#224;&#234;&#240;&#251;&#242;&#252;';
ModalResult := mrCancel;
Parent := Readme;
end;
WizardForm.InfoBeforeMemo.Parent:=Readme;
WizardForm.InfoBeforeMemo.SetBounds(20,20,Readme.Width-40,Readme.Height-100);
Readme.ShowModal;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID = wpInfoBefore) then Result := True;
end;

procedure InitializeWizard();
begin
infoBtn:=TButton.Create(WizardForm)
with infoBtn do begin
Left:=11
Top:=327
Width:=80
Height:=23
Cursor:=crHand
OnClick:=@infoButtonOnClick
Parent:=WizardForm
Caption:= 'Readme';
end;
end;[/no][/more]
Автор: nik1967
Дата сообщения: 16.06.2012 21:51

Цитата:
вот с инфой из rtf файла

[more=Или такой вариант]
Код: [Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp

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

[Files]
Source: ReadMe.rtf; Flags: dontcopy;

[ code]
var
ReadmeF: TSetupForm;
CancelButton,infoBtn: TButton;
Info: TRichEditViewer;
Readme: AnsiString;

procedure InfoButtonOnClick(Sender: TObject);
begin
ReadmeF:= CreateCustomForm();
with ReadmeF do begin
ClientWidth := WizardForm.ClientWidth;
ClientHeight := WizardForm.ClientHeight;
Caption := 'Readme';

ExtractTemporaryFile('ReadMe.rtf');
LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMe.rtf', Readme);
Info:= TRichEditViewer.Create(ReadmeF);
with Info do begin
SetBounds(ScaleX(43),ScaleY(49),ScaleX(420),ScaleY(200));
Parent:= ReadmeF;
ParentColor := True;
Color:= WizardForm.Color;
BorderStyle:= bsNone;
ScrollBars:= ssVertical;
ReadOnly:= true;
RTFText:= Readme;
end;

CancelButton := TButton.Create(ReadmeF);
with CancelButton do begin
Width := WizardForm.CancelButton.Width;
Height := WizardForm.CancelButton.Height;
Left := WizardForm.CancelButton.Left;
Top := WizardForm.CancelButton.Top;
Caption := 'Закрыть';
ModalResult := mrCancel;
Parent := ReadmeF;
end;
Center;
end;
ReadmeF.ShowModal();
end;

procedure InitializeWizard();
begin
infoBtn:=TButton.Create(WizardForm);
with infoBtn do begin
Left:=ScaleX(11);
Top:=WizardForm.CancelButton.Top;
Width:=WizardForm.CancelButton.Width;
Height:=WizardForm.CancelButton.Height;
Cursor:=crHand;
OnClick:=@InfoButtonOnClick;
Parent:=WizardForm;
Caption:= 'Readme';
end;
end;
Автор: innonewbie
Дата сообщения: 17.06.2012 07:28
nik1967, alex0413, спасибо большое, всё получилось как надо!
Автор: ultimo
Дата сообщения: 17.06.2012 10:17
[more] nik1967
здравствуйте, изменил немного код, но не отображается картинка...В чем причина?


Код:
[ Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp

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

[Files]
Source: ReadMe.rtf; Flags: dontcopy;
Source: image.bmp; Flags: dontcopy

[ code]
var
ReadmeF: TSetupForm;
CancelButton,infoBtn: TButton;
Info: TRichEditViewer;
Readme: AnsiString;
MsgStr: TNewStaticText;
BtnPanel: TPanel;
BtnImage: TBitmapImage;

procedure LogoOnClick(Sender: TObject);
var ResCode: Integer;
begin
ShellExec('', 'http://www.mysite.com/', '' , '', SW_SHOW, ewNoWait, ResCode)
end;

procedure InfoButtonOnClick(Sender: TObject);
begin
ReadmeF:= CreateCustomForm();
with ReadmeF do begin
ClientWidth := WizardForm.ClientWidth;
ClientHeight := WizardForm.ClientHeight;
Caption := 'Readme';

ExtractTemporaryFile('ReadMe.rtf');
LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMe.rtf', Readme);
Info:= TRichEditViewer.Create(ReadmeF);
with Info do begin
SetBounds(ScaleX(39),ScaleY(50),ScaleX(420),ScaleY(237));
Parent:= ReadmeF;
ParentColor := True;
Color:= WizardForm.Color;
//BorderStyle:= bsSingle;
BorderStyle:= bsNone;
ScrollBars:= ssVertical;
ReadOnly:= true;
RTFText:= Readme;
end;
///////////////////////////////////////////////////////
begin
MsgStr := TNewStaticText.Create(WizardForm);
with MsgStr do
begin
Top := ScaleY(27);
Left := ScaleX(39);
Width := ScaleX(110);
AutoSize := true;
Caption:='Прочитайте, пожалуйста, информацию';
Parent := ReadmeF;
end;
end;

CancelButton := TButton.Create(ReadmeF);
with CancelButton do begin
Width := WizardForm.CancelButton.Width;
Height := WizardForm.CancelButton.Height;
Left := WizardForm.CancelButton.Left;
Top := WizardForm.CancelButton.Top;
Caption := 'Закрыть';
ModalResult := mrCancel;
Parent := ReadmeF;
end;
Center;
end;
ReadmeF.ShowModal();
end;

procedure ReadmeButton();
begin

infoBtn:=TButton.Create(WizardForm);
with infoBtn do begin
Left:=ScaleX(11);
Top:=WizardForm.CancelButton.Top;
Width:=WizardForm.CancelButton.Width;
Height:=WizardForm.CancelButton.Height;
//Cursor:=crHand;
OnClick:=@InfoButtonOnClick;
Parent:=WizardForm;
Caption:= 'Readme';
end;
end;

procedure ImageSiteLogo();
begin
ExtractTemporaryFile('image.bmp')

BtnPanel:=TPanel.Create(ReadmeF)
with BtnPanel do begin
Left:=118
Top:=327
Width:=100
Height:=23
Cursor:=crHand
OnClick:=@logoOnClick
Parent:=ReadmeF
end
BtnImage:=TBitmapImage.Create(ReadmeF)
with BtnImage do begin
AutoSize:=True;
Enabled:=False;
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\image.bmp')
Parent:=BtnPanel
end
end;

procedure InitializeWizard();

begin
ImageSiteLogo();
ReadmeButton();
end;
Автор: innonewbie
Дата сообщения: 17.06.2012 13:10
ultimo, [more=так][Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp

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

[Files]
Source: ReadMe.rtf; Flags: dontcopy;
Source: image.bmp; Flags: dontcopy

[code]
var
ReadmeF: TSetupForm;
CancelButton,infoBtn: TButton;
Info: TRichEditViewer;
Readme: AnsiString;
MsgStr: TNewStaticText;
BtnPanel: TPanel;
BtnImage: TBitmapImage;

procedure LogoOnClick(Sender: TObject);
var ResCode: Integer;
begin
ShellExec('', 'http://www.mysite.com/', '' , '', SW_SHOW, ewNoWait, ResCode)
end;

procedure InfoButtonOnClick(Sender: TObject);
begin
ReadmeF:= CreateCustomForm();
with ReadmeF do begin
ClientWidth := WizardForm.ClientWidth;
ClientHeight := WizardForm.ClientHeight;
Caption := 'Readme';

ExtractTemporaryFile('ReadMe.rtf');
LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMe.rtf', Readme);
Info:= TRichEditViewer.Create(ReadmeF);
with Info do begin
SetBounds(ScaleX(39),ScaleY(50),ScaleX(420),ScaleY(237));
Parent:= ReadmeF;
ParentColor := True;
Color:= WizardForm.Color;
//BorderStyle:= bsSingle;
BorderStyle:= bsNone;
ScrollBars:= ssVertical;
ReadOnly:= true;
RTFText:= Readme;
end;
///////////////////////////////////////////////////////
begin
MsgStr := TNewStaticText.Create(WizardForm);
with MsgStr do
begin
Top := ScaleY(27);
Left := ScaleX(39);
Width := ScaleX(110);
AutoSize := true;
Caption:='Прочитайте, пожалуйста, информацию';
Parent := ReadmeF;
end;
ExtractTemporaryFile('image.bmp')

BtnPanel:=TPanel.Create(ReadmeF)
with BtnPanel do begin
Left:=118
Top:=327
Width:=100
Height:=23
Cursor:=crHand
OnClick:=@logoOnClick
Parent:=ReadmeF
end;
BtnImage:=TBitmapImage.Create(ReadmeF)
with BtnImage do begin
AutoSize:=True;
Enabled:=False;
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\image.bmp')
Parent:=BtnPanel
end;
CancelButton := TButton.Create(ReadmeF);
with CancelButton do begin
Width := WizardForm.CancelButton.Width;
Height := WizardForm.CancelButton.Height;
Left := WizardForm.CancelButton.Left;
Top := WizardForm.CancelButton.Top;
Caption := 'Закрыть';
ModalResult := mrCancel;
Parent := ReadmeF;
end;
Center;
end;
ReadmeF.ShowModal();
end;
end;

procedure ReadmeButton();
begin

infoBtn:=TButton.Create(WizardForm);
with infoBtn do begin
Left:=ScaleX(11);
Top:=WizardForm.CancelButton.Top;
Width:=WizardForm.CancelButton.Width;
Height:=WizardForm.CancelButton.Height;
//Cursor:=crHand;
OnClick:=@InfoButtonOnClick;
Parent:=WizardForm;
Caption:= 'Readme';
end;
end;

procedure InitializeWizard();

begin
//ImageSiteLogo();
ReadmeButton();
end;[/more] пробуйте.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

Предыдущая тема: поиск


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