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

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

Автор: Edison007007
Дата сообщения: 15.10.2011 14:38
EDIK3472
1. хоть маленько английский знаешь, ведь понятно написано?
2.
Цитата:
Я прекомпом не пользуюсь я фреарком сжимаю и все!

ню ню... precomp+srep... это только фреаарк?
Вы походу, что-то делаете, не понимая, что...

Snoopak96
Будем теперь считать шлепки по лицу
Автор: SsSsL
Дата сообщения: 15.10.2011 14:56
Доброго времени суток!

Подскажите как сделать страницу WizardForm.SelectTasksPage всегда активной? Создаю на ней чекбоксы с доп ПО (ДиректХ, XNA, и тд) через секцию Code, но как только убираю задачи из Tasks она перестаёт отображаться и после страницы выбора папки в меню "Пуск" - следующая идет страница готовности...
Автор: log1stable
Дата сообщения: 15.10.2011 18:15
SsSsL, я б советовал создать новую страницу со всеми нужными тебе чекбоксы.
Автор: R3Pa4eK
Дата сообщения: 15.10.2011 18:19
SsSsL
Создай пустой чек-бокс в Task-List.
Автор: Dark_Delphin
Дата сообщения: 15.10.2011 20:38
VASYAKRN, не учат.

Подскажите пожалуйста , почему на странице компоннетов нет выбора компонентов?




Вот скрипт
[more]#define Components

// Навания игры ;;
#define MyAppName "Call of Duty - Black Ops"
#define AppName "Call of Duty - Black Ops"
#define CompanyName "Activision"
#define Version "1.3"
#define Publisher "Dark"
// Навания игры ;;

// Создаем запуск игры ;;
#define EXE "Chernobyl.exe"
// Создаем запуск игры ;;



// Форма инсталлятора ;;
#define FormPic "form.png"
// Форма инсталлятора ;;

// Место на диске в (МБ)
#define Size "7500"
// Место на диске в (МБ)

// ExtraDiskSpaceRequired ;;
#define NeedSize "5000000000"
// ExtraDiskSpaceRequired ;;

// Количество свободной оперативной памяти нужное для распаковки ;;
#define NeedMem 512
// Количество свободной оперативной памяти нужное для распаковки ;;

// Раскоментируем после первой установки и компилим проект заново. ;;
//#define records
// Раскоментируем после первой установки и компилим проект заново. ;;
#define precomp04
//#define precomp038
//#define unrar

[Setup]
AppName={#MyAppName}
AppVerName={#MyAppName}
AppVersion={#Version}
AppPublisher={#Publisher}
DefaultDirName={pf}\{#CompanyName}\{#MyAppName}
DefaultGroupName={#Publisher}\{#MyAppName}
AllowNoIcons=yes
OutputDir=Out
OutputBaseFilename=setup
ShowLanguageDialog=no
DirExistsWarning=no
MinVersion=0,5.01
VersionInfoDescription={#MyAppName}
ShowTasksTreeLines=True
DisableReadyPage=True
#ifdef NeedSize
ExtraDiskSpaceRequired={#NeedSize}
#endif

#include "ISS\Messages.iss"

#ifdef Components
[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: text; Description: Язык субтитров; Types: full; Flags: fixed
Name: text\rus; Description: Русский; Flags: exclusive; ExtraDiskSpaceRequired: 100000000
Name: text\eng; Description: Английский; Flags: exclusive; ExtraDiskSpaceRequired: 200000000
Name: voice; Description: Язык озвучки; Types: full; Flags: fixed
Name: voice\rus; Description: Русский; Flags: exclusive; ExtraDiskSpaceRequired: 500000000
Name: voice\eng; Description: Английский; Flags: exclusive; ExtraDiskSpaceRequired: 600000000
Name: redist; Description: Дополнительное ПО; Types: full; Flags: fixed
Name: redist\VCRedist; Description: Установить библиотеки Microsoft Visual C ++ ; Flags:checkablealone;
Name: redist\DirectX; Description: Обновить Microsoft DirectX; Flags: checkablealone;
#endif



[Files]
Source: "Files\*"; Flags: dontcopy;
Source: "ISDone\*"; Flags: dontcopy;

Source: "Files\InnoCallback.dll"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
//Source: "Files\ISSkin.dll"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;
//Source: "Files\skin.cjstyles"; DestDir: "{app}"; Flags: ignoreversion; Attribs: hidden system;

#ifdef records
Source: "ISDone\records.inf"; DestDir: "{tmp}"; Flags: dontcopy
#endif
#ifdef precomp04
Source: "ISDone\packjpg_dll.dll"; DestDir: "{tmp}"; Flags: dontcopy
Source: "ISDone\RTconsole.exe"; DestDir: "{tmp}"; Flags: dontcopy
Source: "ISDone\precomp04.exe"; DestDir: "{tmp}"; Flags: dontcopy
#endif
#ifdef precomp038
Source: "ISDone\packjpg_dll.dll"; DestDir: "{tmp}"; Flags: dontcopy
Source: "ISDone\RTconsole.exe"; DestDir: "{tmp}"; Flags: dontcopy
Source: "ISDone\precomp038.exe"; DestDir: "{tmp}"; Flags: dontcopy
Source: "ISDone\zlib1.dll"; DestDir: "{tmp}"; Flags: dontcopy
#endif
#ifdef unrar
Source: "ISDone\Unrar.dll"; DestDir: "{tmp}"; Flags: dontcopy
#endif

[Icons]
Name: {userdesktop}\{#MyAppName}; Filename: "{app}\{#EXE}"; WorkingDir: "{app}"; Check: Desktop and not InstallRedist;
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}; IconFilename: "{app}\5.ico"; Comment: {cm:Deletegame}; Check: NoIcons and not InstallRedist;
Name: {group}\{#MyAppName}; Filename: "{app}\{#EXE}"; WorkingDir: "{app}"; Comment: {cm:Launchgame}; Check: NoIcons and not InstallRedist;

[Registry]
Root: HKLM; Subkey: "SOFTWARE\{#CompanyName}\{#MyAppName}"; ValueName: "InstallDir"; ValueType: String; ValueData: "{app}"; Flags: uninsdeletekey; Check: not InstallRedist;
Root: HKLM; Subkey: "SOFTWARE\{#CompanyName}\{#MyAppName}"; ValueName: "Language"; ValueType: String; ValueData: "rus"; Flags: uninsdeletekey; Check: not InstallRedist;
Root: HKLM; Subkey: "SOFTWARE\{#CompanyName}\{#MyAppName}"; ValueName: "execPath"; ValueType: String; ValueData: "{app}\{#EXE}"; Flags: uninsdeletekey; Check: not InstallRedist;
Root: HKLM; Subkey: "SOFTWARE\{#CompanyName}\{#MyAppName}"; ValueName: "info"; ValueType: String; ValueData: "adab76f30e304e148dd119624ee27b07"; Flags: uninsdeletekey; Check: not InstallRedist;
Root: HKLM; Subkey: "SOFTWARE\{#CompanyName}\{#MyAppName}"; ValueName: "installdir"; ValueType: String; ValueData: "{app}"; Flags: uninsdeletekey; Check: not InstallRedist;
Root: HKLM; Subkey: "SOFTWARE\{#CompanyName}\{#MyAppName}"; ValueName: "language"; ValueType: String; ValueData: "us"; Flags: uninsdeletekey; Check: not InstallRedist;

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

[Code]
const
WFDiskTimerID = 1;
WFSysReqTimerID = 2;
ARTitleTimerID = 2;
BASS_ACTIVE_PAUSED = 3;
BASS_SAMPLE_LOOP = 4;

type
TPBProc = function (h:hWnd;Msg,wParam,lParam:Longint):Longint;// Для прогресс бара
TTimerProc = procedure (h: Longword; msg: Longword; idevent: Longword; dwTime: Longword);
TSystemTime = record wYear, wMonth, wDayOfWeek, wDay, wHour, wMinute, wSecond, wMilliseconds: Word; end;

var
SelectTasksPage: TWizardPage; // Создаем страницу с ДОП. ПО

Image, Workspace, TextWorkspace,
Logo, Edit, HDD: Longint;

Welcome1, Welcome2, PageNameLabel, PageDescriptionLabel,
SelectDirBrowseLabel, DirEditLabel,
SelectStartMenuFolderBrowseLabel, GroupEditLabel, NoIconsLabel,
SelectTasksLabel, DesktopLabel, DirectXLabel, Finish1, Finish2: TLabel;

NoIconsCheck, DesktopCheck, DirectXCheck: HWND;

StatusLabel, FilenameLabel: TLabel;

mp3Name: string;
MusicButton,mp3Handle: HWND;

NeedSize:Integer;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel, FreeSpaceLabel: TLabel;

/////////////////////////////////////////////////////////////////////
function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall';
function SetLayeredWindowAttributes(hwnd: hWnd; crKey: TColor; bAlpha: byte; dwFlags: DWORD): Boolean; external 'SetLayeredWindowAttributes@user32.dll stdcall';
function GetWindowLong(Wnd: HWnd; Index: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';

//Процедура для подвижности инсталлятора
procedure LabelOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(WizardForm.Handle,$0112,$F012,0);
end;

function GetLocalTime(var lpSystemTime: TSystemTime): Boolean; external 'GetLocalTime@kernel32.dll stdcall';
function SystemTimeToFileTime(const lpSystemTime: TSystemTime; var lpFileTime: TFileTime): Boolean; external 'SystemTimeToFileTime@kernel32.dll stdcall';
function FileTimeToSystemTime(const lpFileTime: TFileTime; var lpSystemTime: TSystemTime): Boolean; external 'FileTimeToSystemTime@kernel32.dll stdcall';
function WrapTimerProc(callback:TTimerProc; paramcount:integer):longword; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall';

function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';

/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
// Подключаем botva2
#include "ISS\botva2.iss"
// Подключаем кнопки
#include "ISS\Button.iss"
// Подключаем музыку
#include "ISS\BASS.iss"
// Подключаем сис требования
//#include "ISS\System.iss"
// Подключаем прогресс бар(Для прогресс бара)
#include "ISS\ProgressBar.iss"
// Подключаем распаковщик ISDone
#include "ISS\ISDone.iss"
// Подключаем сам прогресс бар
#include "ISS\ProgresStep.iss"
/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
procedure InitializeWizard2;
begin


with WizardForm do begin
ComponentsDiskSpaceLabel.Hide;
SelectComponentsLabel.Hide;
//WizardForm.ComponentsList.Hide;
//WizardForm.ComponentsList.Show;
Bevel.Hide;// Убераем стандартною линию
BorderStyle:=bsNone;// Убераем заголовок(Стандартную тему)
InnerNotebook.Hide;// Убераем всё стандартное
OuterNotebook.Hide;// Убераем всё стандартное
ClientWidth:=ScaleX(606);// Размер инсталлятора(Ширина)
ClientHeight:=ScaleY(384);// Размер инсталлятора(Высота)
Color:=$282828;// Цвет всего инсталлятора
end;
with TLabel.Create(WizardForm) do begin
Parent:=WizardForm;
AutoSize:=False;
Top:=14;
Left:=-10;
Width:=WizardForm.ClientWidth
Height:=WizardForm.ClientHeight
Transparent:=True;
Alignment := taCenter;
Font.Name:= 'Comic Sans MS'
Font.Color:=$FFFFFF;
Caption:=WizardForm.Caption;
OnMouseDown:=@LabelOnMouseDown;
end;
ExtractTemporaryFile('Skin.png');
ExtractTemporaryFile('Img.jpg');
ExtractTemporaryFile('Workspace.png');
ExtractTemporaryFile('Textspace.png');
ExtractTemporaryFile('Logo.png');
ExtractTemporaryFile('Edit.png');
ExtractTemporaryFile('hard-drive.png');
ExtractTemporaryFile('CheckBox.png');

//Skin - Тема инсталлятора Skin:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\Skin.png'),ScaleX(0), ScaleY(0),WizardForm.ClientWidth,WizardForm.ClientHeight,True,True);
//Image и Worspace - Картинка Инсталлятора
Image:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\Img.jpg'),ScaleX(15), ScaleY(34),ScaleX(578), ScaleY(335),True,True);
Workspace:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\Workspace.png'),ScaleX(15), ScaleY(34),ScaleX(578), ScaleY(335),True,True);
//TextWorckspace - Для того чтобы, текст можно было различить
TextWorkspace:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\Textspace.png'),ScaleX(30), ScaleY(80),ScaleX(546), ScaleY(240),True,True);
//Logo - Инфо о создателя этой программы или RePack`a
Logo:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\Logo.png'),ScaleX(35), ScaleY(345),ScaleX(171), ScaleY(13),True,True);
//Edit - полоса которая отображает путь установки
Edit:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\Edit.png'),ScaleX(125), ScaleY(185),ScaleX(280),ScaleY(20),True,True);
//HDD - Просто картинка (Папка)
HDD:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\hard-drive.png'),ScaleX(60), ScaleY(147),ScaleX(60), ScaleY(60),True,True);

ImgApplyChanges(WizardForm.Handle);
    SetWindowLong(WizardForm.Handle,-20,GetWindowLong(WizardForm.Handle,-20) or $80000);
SetLayeredWindowAttributes(WizardForm.Handle,$00FF00,0,1);
end;
/////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////
procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);

if FreeMB > 1024 then
FreeSpaceLabel.Caption := ExpandConstant('{cm:FreeSpace} ')+ FloatToStr(round(FreeMB/1024*100)/100) + ' Гб' else
FreeSpaceLabel.Caption := ExpandConstant('{cm:FreeSpace} ')+ IntToStr(FreeMB)+ ' Мб';

if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := False else
WizardForm.NextButton.Enabled := True; end;

procedure GetNeedSpaceCaptionFlashing(h: Longword; msg: Longword; idevent: Longword; dwTime: Longword);
begin
if FreeSpaceLabel.Font.Color=$FFFFFF then FreeSpaceLabel.Font.Color:=$0000FF else FreeSpaceLabel.Font.Color:=$FFFFFF;
end;

procedure GetNeedSpaceCaption;
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSpace} ')+ FloatToStr(round(NeedSize/1024*100)/100) + ' Гб' else
NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSpace} ')+ IntToStr(NeedSize)+ ' Мб';

if (FreeMB<NeedSize) then
SetTimer(WizardForm.Handle,WFDiskTimerID,1000,WrapTimerProc(@GetNeedSpaceCaptionFlashing,4));
end;

procedure CurPageChanged3(CurPageID: Integer);
begin
if CurPageID=wpSelectDir then begin
GetNeedSpaceCaption;

if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False
end;
end;
////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////
//Не создавать папку в меню Пуск
function InstallRedist: Boolean;
begin
if MyError then
Result:= True;
end;

function NoIcons: Boolean;
begin
Result:= BtnGetEnabled(hGroupBrowseBtn);
end;

procedure NoIconsClick(hBtn:HWND);
var
Check:boolean;
begin
sndPlaySound(ExpandConstant('{tmp}\Check.wav'), $0001);
Check:=BtnGetChecked(hBtn);
BtnSetEnabled(hGroupBrowseBtn, not Check);
GroupEditLabel.Enabled:=not Check;
if Check then NoIconsLabel.Font.Color:=$B6B6B6 else NoIconsLabel.Font.Color:=$FFFFFF;
end;

procedure NoIconsLabelClick(Sender:TObject);
begin
BtnSetChecked(NoIconsCheck, not BtnGetChecked(NoIconsCheck));
NoIconsClick(NoIconsCheck);
end;
//=====================================

//Создать ярлык на Рабочем столе
function Desktop: Boolean;
begin
Result:= BtnGetChecked(DesktopCheck);
end;

procedure DesktopClick(hBtn:HWND);
begin
sndPlaySound(ExpandConstant('{tmp}\Check.wav'), $0001);
if BtnGetChecked(hBtn) then DesktopLabel.Font.Color:=$B6B6B6 else DesktopLabel.Font.Color:=$FFFFFF;
end;

procedure DesktopLabelClick(Sender:TObject);
begin
BtnSetChecked(DesktopCheck, not BtnGetChecked(DesktopCheck));
DesktopClick(DesktopCheck);
end;
//=====================================

//Установить Microsoft DirectX
function DirectX: Boolean;
begin
Result:= BtnGetChecked(DirectXCheck);
end;

procedure DirectXClick(hBtn:HWND);
begin
sndPlaySound(ExpandConstant('{tmp}\Check.wav'),$0001);
if BtnGetChecked(hBtn) then DirectXLabel.Font.Color:=$B6B6B6 else DirectXLabel.Font.Color:=$FFFFFF;
end;

procedure DirectXLabelClick(Sender:TObject);
begin
BtnSetChecked(DirectXCheck, not BtnGetChecked(DirectXCheck));
DirectXClick(DirectXCheck);
end;

//=====================================
/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
procedure InitializeWizard3;
begin
PageNameLabel:=TLabel.Create(WizardForm);
with PageNameLabel do begin
AutoSize:= False;
WordWrap:= True;
SetBounds(ScaleX(45), ScaleY(90), ScaleX(400), ScaleY(50));
Transparent:=True;
Font.Name:= 'Verdana';
Font.Size:= 9;
Font.Color:=$FFFFFF;
// Font.Style:=[fsBold, fsItalic];
OnMouseDown:=@LabelOnMouseDown;
Parent:=WizardForm;
end;
PageDescriptionLabel:=TLabel.Create(WizardForm);
with PageDescriptionLabel do begin
AutoSize:= False;
WordWrap:= True;
SetBounds(ScaleX(80), ScaleY(110), ScaleX(400), ScaleY(50));
Transparent:=True;
Font.Name:= 'Verdana';
Font.Size:= 8;
Font.Color:=$FFFFFF;
// Font.Style:=[fsBold, fsItalic];
OnMouseDown:=@LabelOnMouseDown;
Parent:=WizardForm;
end;
///////////////////////////////
Welcome1:= TLabel.Create(WizardForm);
with Welcome1 do begin
AutoSize:=False
SetBounds(ScaleX(118), ScaleY(127), ScaleX(350), ScaleY(65));
WordWrap:=True
Alignment := taCenter;
Transparent:=True
Font.Name:='Verdana';
Font.Size:= 10;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold]
Caption:= ExpandConstant('{cm:Welcome1}')+#13#10+('{#MyAppName}');
OnMouseDown:=@LabelOnMouseDown;
Parent:=WizardForm;
end;

Welcome2:=TLabel.Create(WizardForm);
with Welcome2 do begin
AutoSize:=False
SetBounds(ScaleX(50), ScaleY(170), ScaleX(500), ScaleY(500));
WordWrap:=True
Alignment := taCenter;
Transparent:=True
Font.Name:='Verdana';
Font.Size:= 8;
Font.Color:=$FFFFFF;
//Font.Style := [fsBold, fsItalic];
Caption:= ExpandConstant('{cm:Welcome2}');
OnMouseDown:=@LabelOnMouseDown;
Parent:=WizardForm;
end;
///////////////////////////////
SelectDirBrowseLabel := TLabel.Create(WizardForm);
with SelectDirBrowseLabel do begin
AutoSize:=False;
SetBounds(ScaleX(125), ScaleY(150), ScaleX(400), ScaleY(50));
WordWrap:= True;
Transparent:=True;
Font.Name:= 'Verdana';
Font.Size:= 8;
Font.Color:=$FFFFFF;
// Font.Style := [fsBold]//, fsItalic];
OnMouseDown:=@LabelOnMouseDown;
Caption:= WizardForm.SelectDirBrowseLabel.Caption;
Parent := WizardForm;
end;

DirEditLabel := TLabel.Create(WizardForm);
with DirEditLabel do begin
AutoSize:=False;
SetBounds(ScaleX(130), ScaleY(188), ScaleX(275), ScaleY(15));
WordWrap:= True;
ShowAccelChar := False;
Transparent:=True;
Font.Name:= 'Arial'
Font.Size:= 8;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold];
Caption := MinimizePathName(WizardForm.DirEdit.Text, DirEditLabel.Font, DirEditLabel.Width);
OnMouseDown:=@LabelOnMouseDown;
Parent := WizardForm;
end;

NeedSize := {#Size};
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do begin
Parent := WizardForm;
AutoSize:=False;
Left := ScaleX(165);
Top := ScaleY(235);
Width := ScaleX(209);
Height := ScaleY(13);
WordWrap:= True;
Transparent:=True;
Alignment := taCenter;
Font.Name:= 'Verdana';
Font.Size:= 8;
Font.Color:=$FFFFFF;
//Font.Style:=[fsItalic];
OnMouseDown:=@LabelOnMouseDown;
end;

FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do begin
Parent := WizardForm;
AutoSize:=False;
Left := ScaleX(165);
Top := ScaleY(213);
Width := ScaleX(209);
Height := ScaleY(13);
WordWrap:= True;
Transparent:=True;
Alignment := taCenter;
Font.Name:= 'Verdana';
Font.Size:= 8;
Font.Color:=$FFFFFF;
//Font.Style:=[fsItalic];
OnMouseDown:=@LabelOnMouseDown;
end;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
WizardForm.DiskSpaceLabel.Hide;
///////////////////////////////
SelectStartMenuFolderBrowseLabel := TLabel.Create(WizardForm);
with SelectStartMenuFolderBrowseLabel do begin
AutoSize:=False;
SetBounds(ScaleX(125), ScaleY(150), ScaleX(400), ScaleY(50));
WordWrap:= True;
Transparent:=True;
Font.Name:= 'Verdana';
Font.Size:= 8;
Font.Color:=$FFFFFF;
// Font.Style := [fsBold]//, fsItalic];
OnMouseDown:=@LabelOnMouseDown;
Caption:= WizardForm.SelectStartMenuFolderBrowseLabel.Caption;
Parent := WizardForm;
end;

GroupEditLabel := TLabel.Create(WizardForm);
with GroupEditLabel do begin
AutoSize:=False;
SetBounds(ScaleX(130), ScaleY(188), ScaleX(275), ScaleY(15));
WordWrap:= True;
ShowAccelChar := False;
Transparent:=True;
Font.Name:= 'Arial'
Font.Size:= 8;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold];
Caption := MinimizePathName(WizardForm.GroupEdit.Text, GroupEditLabel.Font, GroupEditLabel.Width);
OnMouseDown:=@LabelOnMouseDown;
Parent := WizardForm;
end;

//Не создавать папку в меню Пуск
NoIconsCheck:=BtnCreate(WizardForm.Handle,ScaleX(122),ScaleY(213),ScaleX(20),ScaleY(20),ExpandConstant('{tmp}\CheckBox.png'),2,True);
BtnSetEvent(NoIconsCheck,BtnClickEventID,WrapBtnCallback(@NoIconsClick,1));
BtnSetEvent(NoIconsCheck,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetCursor(NoIconsCheck,GetSysCursorHandle(32649));

NoIconsLabel := TLabel.Create(WizardForm);
with NoIconsLabel do begin
AutoSize:=False;
SetBounds(ScaleX(147), ScaleY(215), ScaleX(275), ScaleY(17));
OnClick:= @NoIconsLabelClick;
Cursor:= CrHand;
Transparent:=True;
Font.Name:= 'Verdana';
Font.Size:= 8;
Font.Color:=$FFFFFF;
//Font.Style:=[fsBold, fsItalic];
Caption := WizardForm.NoIconsCheck.Caption;
Parent := WizardForm;
end;
///////////////////////////////
SelectTasksPage := CreateCustomPage(wpSelectProgramGroup, ExpandConstant('{cm:TasksName}'), ExpandConstant('{cm:TasksDescription}'));
SelectTasksLabel := TLabel.Create(WizardForm);
with SelectTasksLabel do begin
AutoSize:=False;
SetBounds(ScaleX(90), ScaleY(150), ScaleX(400), ScaleY(50));
WordWrap:= True;
Transparent:=True;
Font.Name:= 'Verdana';
Font.Size:= 8;
Font.Color:=$FFFFFF;
//Font.Style:=[fsBold, fsItalic];
Caption:= ExpandConstant('{cm:SelectTasksLabel}');
OnMouseDown:=@LabelOnMouseDown;
Parent := WizardForm;
end;

//Создать ярлык на Рабочем столе
DesktopCheck:=BtnCreate(WizardForm.Handle,ScaleX(87),ScaleY(196),ScaleX(20),ScaleY(20),ExpandConstant('{tmp}\CheckBox.png'),2,True);
BtnSetEvent(DesktopCheck,BtnClickEventID,WrapBtnCallback(@DesktopClick,1));
BtnSetEvent(DesktopCheck,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetCursor(DesktopCheck,GetSysCursorHandle(32649));

DesktopLabel := TLabel.Create(WizardForm);
with DesktopLabel do begin
AutoSize:=False;
SetBounds(ScaleX(112), ScaleY(198), ScaleX(400), ScaleY(20));
OnClick:= @DesktopLabelClick;
Cursor:= CrHand;
Transparent:=True;
Font.Name:= 'Verdana';
Font.Size:= 8;
Font.Color:=$FFFFFF;
//Font.Style:=[fsBold, fsItalic];
Caption := ExpandConstant('{cm:Desktop}');
Parent := WizardForm;
end;

//Установить Microsoft DirectX
DirectXCheck:=BtnCreate(WizardForm.Handle,ScaleX(87),ScaleY(220),ScaleX(20),ScaleY(20),ExpandConstant('{tmp}\CheckBox.png'),2,True);
BtnSetEvent(DirectXCheck,BtnClickEventID,WrapBtnCallback(@DirectXClick,1));
BtnSetEvent(DirectXCheck,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetCursor(DirectXCheck,GetSysCursorHandle(32649));

DirectXLabel := TLabel.Create(WizardForm);
with DirectXLabel do begin
AutoSize:=False;
SetBounds(ScaleX(112), ScaleY(222), ScaleX(400), ScaleY(20));
OnClick:= @DirectXLabelClick;
Cursor:= CrHand;
Transparent:=True;
Font.Name:= 'Verdana';
Font.Size:= 8;
Font.Color:=$FFFFFF;
//Font.Style:=[fsBold, fsItalic];
Caption := ExpandConstant('{cm:DirectX}');
Parent := WizardForm;
end;
///////////////////////////////
StatusLabel := TLabel.Create(WizardForm);
with StatusLabel do begin
AutoSize:=False;
SetBounds(ScaleX(95), ScaleY(166), ScaleX(400), ScaleY(17));
Transparent:=True;
Font.Name:= 'Verdana';
Font.Size:= 8;
Font.Color:=$FFFFFF;
//Font.Style:=[fsBold,fsItalic];
OnMouseDown:=@LabelOnMouseDown;
Parent := WizardForm;
end;

FilenameLabel := TLabel.Create(WizardForm);
with FilenameLabel do begin
AutoSize:=False;
SetBounds(ScaleX(0), ScaleY(0), ScaleX(0), ScaleY(0));
Transparent:=True;
Font.Name:= 'Verdana';
Font.Size:= 8;
Font.Color:=$FFFFFF;
//Font.Style:=[fsItalic];
OnMouseDown:=@LabelOnMouseDown;
end;
///////////////////////////////
Finish1:= TLabel.Create(WizardForm);
with Finish1 do begin
AutoSize:=False
SetBounds(ScaleX(118), ScaleY(127), ScaleX(350), ScaleY(65));
WordWrap:=True
Alignment := taCenter;
Transparent:=True
Font.Name:='Verdana';
Font.Size:= 10;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold]
Caption:= ExpandConstant('{cm:Finish1}');
OnMouseDown:=@LabelOnMouseDown;
Parent:=WizardForm;
end;

Finish2:=TLabel.Create(WizardForm);
with Finish2 do begin
AutoSize:=False
SetBounds(ScaleX(50), ScaleY(170), ScaleX(500), ScaleY(500));
WordWrap:=True
Alignment := taCenter;
Transparent:=True
Font.Name:='Verdana';
Font.Size:= 8;
Font.Color:=$FFFFFF;
//Font.Style := [fsBold, fsItalic];
Caption:= ExpandConstant('{cm:Finish2}');
OnMouseDown:=@LabelOnMouseDown;
Parent:=WizardForm;
end;
end;
/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
procedure HideComponents;
begin
Welcome1.Hide;
Welcome2.Hide;

SelectDirBrowseLabel.Hide;
DirEditLabel.Hide;
NeedSpaceLabel.Hide;
FreeSpaceLabel.Hide;

SelectStartMenuFolderBrowseLabel.Hide;
GroupEditLabel.Hide;
NoIconsLabel.Hide;

SelectTasksLabel.Hide;
DesktopLabel.Hide;
DirectXLabel.Hide;

StatusLabel.Hide;
FilenameLabel.Hide;

Finish1.Hide;
Finish2.Hide;
end;

procedure ShowComponents(CurPageID: Integer);
begin
PageNameLabel.Caption:=WizardForm.PageNameLabel.Caption
PageDescriptionLabel.Caption:=WizardForm.PageDescriptionLabel.Caption
case CurPageID of
wpWelcome: begin
Welcome1.Show
Welcome2.Show
end;

wpSelectDir: begin
ImgSetVisibility(Edit,True);
ImgSetVisibility(HDD,True);
ImgSetVisibility(DirBrowse,True);
BtnSetVisibility(hDirBrowseBtn,True);
SelectDirBrowseLabel.Show
DirEditLabel.Show
NeedSpaceLabel.Show
FreeSpaceLabel.Show
end;

wpSelectProgramGroup: begin
ImgSetVisibility(Edit,True);
ImgSetVisibility(HDD,True);
ImgSetVisibility(GroupBrowse,True);
BtnSetVisibility(hGroupBrowseBtn,True);
BtnSetVisibility(NoIconsCheck,True);
SelectStartMenuFolderBrowseLabel.Show
GroupEditLabel.Show
NoIconsLabel.Show;
end;

SelectTasksPage.ID: begin
BtnSetVisibility(DesktopCheck,True);
BtnSetVisibility(DirectXCheck,True);
SelectTasksLabel.Show;
DesktopLabel.Show;
DirectXLabel.Show;
WizardForm.NextButton.Caption:=SetupMessage(msgButtonInstall);
end;

wpInstalling: begin
BtnSetVisibility(hNextBtn,False);
BtnSetVisibility(hNextBtn,True);
BtnSetEnabled(hNextBtn,false);
StatusLabel.Show;
FilenameLabel.Show;
end;

wpFinished: begin
BtnSetVisibility(CancelUnpackingBtn,False);
BtnSetVisibility(CancelUnpackingBtn,True);
BtnSetEnabled(CancelUnpackingBtn,false);

BtnSetVisibility(hNextBtn,True);
BtnSetEnabled(hNextBtn,false);

Finish1.Show;
Finish2.Show;
end;
end;
end;
/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
procedure InitializeWizard;
begin
InitializeWizard2; // Для изображения инсталлятора
CreateWizardImage; // Для изображения кнопок
InitializeWizard3; // Для надписей
ButtonsTextures; // Для кнопок
ProgresStepWizard; // Для прогресс бара
InsertMusic; // Для музыки
// SystemWizardImage; // Для сис требований
// SystemPageComponents; // Для сис требований
end;

// Для работы с botva2 и innocallback
function InitializeSetup: Boolean;
begin
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');// Botva2
if not FileExists(ExpandConstant('{tmp}\innocallback.dll')) then ExtractTemporaryFile('innocallback.dll');// innocallback
// if not FileExists(ExpandConstant('{tmp}\skin.cjstyles')) then ExtractTemporaryFile('skin.cjstyles');
if not FileExists(ExpandConstant('{tmp}\BASS.dll')) then ExtractTemporaryFile('BASS.dll');
if not FileExists(ExpandConstant('{tmp}\MusicButton.png')) then ExtractTemporaryFile('MusicButton.png');
if not FileExists(ExpandConstant('{tmp}\Music.mp3')) then ExtractTemporaryFile('Music.mp3');
// LoadSkin(ExpandConstant('{tmp}\skin.cjstyles'), '');
Result:=True;
end;
/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
procedure CurPageChanged(CurPageID: Integer);
begin
SetStateNewButtons; // Для кнопок
HideComponents;

ImgSetVisibility(Edit,False);
ImgSetVisibility(HDD,False);
ImgSetVisibility(DirBrowse,False);
ImgSetVisibility(GroupBrowse,False);

BtnSetVisibility(hDirBrowseBtn,False);
BtnSetVisibility(hGroupBrowseBtn,False);
BtnSetVisibility(NoIconsCheck,False);
BtnSetVisibility(DesktopCheck,False);
BtnSetVisibility(DirectXCheck,False);

ShowComponents(CurPageID);
ISDonePageChanged(CurPageID);
CurPageChanged3(CurPageID);
// SystemCurPageChanged(CurPageID); // Для сис требований

ImgApplyChanges(WizardForm.Handle);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
ISDoneStepChanged(CurStep); // Для распаковщика ISDone
PBStepChanged(CurStep); // Для прогресс бара
end;
/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
procedure DeInitializeSetup();
begin
gdipShutdown;// Для botva2
BASS_Stop;
BASS_Free;
WFButtonFont.Free; // Для кнопок (Надписи)
end;

//function InitializeUninstall(): Boolean; // Скин для деинсталлятора[/more]






Заранее спасибо.
Автор: Snoopak96
Дата сообщения: 15.10.2011 20:44
Dark_Delphin

Цитата:
InnerNotebook.Hide;// Убераем всё стандартное
OuterNotebook.Hide;// Убераем всё стандартное

Автор: vintage_1
Дата сообщения: 15.10.2011 20:55
Snoopak96
Dark_Delphin

Цитата:
Потому что инсталл был задуман без выбора компонентов!
Автор: Dark_Delphin
Дата сообщения: 15.10.2011 20:55
Snoopak96, не работает так.
Автор: Snoopak96
Дата сообщения: 15.10.2011 21:06
Dark_Delphin
Ответ выше тебе vintage_1 написал, а этим я хотел сказать:

Цитата:
InnerNotebook.Hide;// Убераем всё стандартное
OuterNotebook.Hide;// Убераем всё стандартное

Что самому придётся делать выбор компонентов, т.к. все дефолтные скрыты.

Автор: R3Pa4eK
Дата сообщения: 15.10.2011 21:20
Dark_Delphin
WizardForm.ComponentsList.Parent:= WizardForm;
Автор: Xom9I4oK
Дата сообщения: 15.10.2011 21:24
Есть у кого-нить скрипт автоматического встраивание звука в .bik файлы с отображением прогресса на прогресс баре?
Автор: AlexandR2011
Дата сообщения: 15.10.2011 21:58
Как в Inno setup можно задать в скрипте чтоб показать размер установленной игры,а не setup'a, в удаление и изменении программы?вот...
Пробывал:

Код: [Setup]
UninstallDisplaySize=размер_в_байтах
Автор: GDDR7
Дата сообщения: 16.10.2011 08:36
Всем доброго времени суток!
Подскажите пожалуйста как называется этот скин и где его можно скачать??? http://img822.imageshack.us/img822/7262/90089194.jpg
Автор: Mordavorot
Дата сообщения: 16.10.2011 08:44
дистрибутив игры сделан Inno Setup 5.
Можно ли как-то заменить в нём кое-какие ресурсы?
Чем открыть можно?
Автор: insombia
Дата сообщения: 16.10.2011 09:29
GDDR7 а через inno unpacker не пробовал распаковать?
Автор: Y4enik32
Дата сообщения: 16.10.2011 09:50
GDDR7
Если я тебя правильно понял то вот

Добавлено:

Цитата:
Доброго времени суток.
Подскажите пожалуйста чем можно распаковать архивы .pages ?

P.S. Игра с такими архивами - Rage

Автор: Edison007007
Дата сообщения: 16.10.2011 10:38

Цитата:
Есть у кого-нить скрипт автоматического встраивание звука в .bik файлы с отображением прогресса на прогресс баре?

есть такой пример:
[more]
Код: [_code]
procedure Bink (video, sound:string; track:integer);
var BinkCode:integer;
begin
Exec(ExpandConstant('{tmp}\mix.dll'), AddQuotes(AddBackSlash(ExpandConstant('{app}'))+video)+' '+AddQuotes(AddBackSlash(ExpandConstant('{app}'))+sound)+' '+AddQuotes(AddBackSlash(ExpandConstant('{app}'))+video)+' '+'/o /l4 /t'+inttostr(track)+' /#', ExpandConstant('{tmp}'), SW_SHOW, ewWaitUntilTerminated, BinkCode);
DeleteFile(AddBackSlash(ExpandConstant('{app}'))+sound);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = sspostInstall then
begin
WizardForm.StatusLabel.Caption:='переклейко';
ExtractTemporaryFile('mix.dll');
ExtractTemporaryFile('radutil.dll');
ExtractTemporaryFile('binkmake.dll');
end;

if CurStep = sspostInstall then
begin
Bink('SP\Content\BinkMovies\Decoy.bik', 'SP\Content\BinkMovies\0_Decoy.wav', 0);
end;
end;
Автор: Xom9I4oK
Дата сообщения: 16.10.2011 11:42
Edison007007

Цитата:
есть такой пример:
Подробнее...

Спасибо, а mix.dll - это binkmix.exe или что? И если нет, то где взять эту дллку?

Snoopak96
А поподробнее можно - в упор не вижу где вообще в примерах хоть какая-та связь с прогресс-баром. Какие еще дополнительно нужно библиотеки кроме ISExec для прогресс-бара - ISDone? И если да, то без ISDone никак?
Автор: Dark_Delphin
Дата сообщения: 16.10.2011 11:54
Всем привет.

Кто может в скрипт вот этот добавить выбор компонентов, я старницу создал, а выбора компонентов на ней нету(( И что-бы компоннеты распаковывались из АРК-архивов.

Вот скрипт из всеми файлами http://rghost.ru/25728291

Большое заранее спасибо!

Автор: Snoopak96
Дата сообщения: 16.10.2011 12:49
Xom9I4oK

Цитата:
Спасибо, а mix.dll - это binkmix.exe

Да

Добавлено:
Можно так же так сделать: http://krinkels.ru/forum/showthread.php?34-ISDone/page3
Прогрессбар тогда плавный будет
Автор: vintage_1
Дата сообщения: 16.10.2011 13:44
Xom9I4oK
Вот написал библиотеку давно ISProcess.dll
Там так раз реализован плавный прогресс бар.
http://rghost.ru/24619481
P.S.: Там пример распаковки ARC архивов, но можно и переделать этот пример под свои нужды
Автор: Xom9I4oK
Дата сообщения: 16.10.2011 14:26
vintage_1
А чем она от исдана отличается? И если мне, например, обычные файлы тоже надо распаковать, те что Инно сам пакует (без внешних архивов) как это все будет нормально работать (отображаться) или эта длл только для внешних файлов? И если не трудно поподробнее как будет выглядеть нижприведенная строка с использованием ISProcess.dll.
if not ISExec ( 0, 0, 0, ExpandConstant('{tmp}\binkmix.exe'), ExpandConstant('"{app}\A01_in.bik" "{app}\A01_in.wav" "{app}\A01_in.bik" /t1 /l0 /o /#'), ExpandConstant('{app}'), '...') then break;
Начало я так понял ISProcess_Init(ExpandConstant('{tmp}\binkmix.exe'), ... а дальше как? И еще как скрыть окно, которое открывает binkmix.exe при микшировании звука и где это надо прописать в ISProcess? И это как переделать тоже под ISProcess?
Exec(ExpandConstant('{tmp}\patch.exe'), fPatchFile+' '+fSourceFile+' '+fDestfile, '', SW_Hide, ewWaitUntilTerminated, Erg);
Автор: Dark_Delphin
Дата сообщения: 16.10.2011 14:31
Помогите плиз.. Выше

Автор: vintage_1
Дата сообщения: 16.10.2011 14:42
Xom9I4oK

Цитата:
А чем она от исдана отличается?

Эммм, то что она не записывает данные записи для плавного прогресс бара в records.inf

ISProcess_Init это тоже что и Exec
Только ISProcess_Init в 2 раза умнее Exec

Пример в Exec:
Exec(ExpandConstant('{tmp}\patch.exe'), fPatchFile+' '+fSourceFile+' '+fDestfile, '', SW_Hide, ewWaitUntilTerminated, Erg);

Пример в ISProcess_Init:
ISProcess_Init(ExpandConstant('{tmp}\patch.exe'), fPatchFile+' '+fSourceFile+' '+fDestfile, SW_Hide);

P.S.: Как - то так.
Автор: Xom9I4oK
Дата сообщения: 16.10.2011 14:59
vintage_1
Может и умнее не спорю, но Erg в моем случае это ResultCode и мне надо знать его значение (то есть то что возвращает патчер после пропатчивания файла) и в вашей процедуре его походу нет? И насчет бик-файла как тогда пример в ISProcess_Init будет выглядеть?
P.S. А от IsExec v0.7 чем отличается?
Автор: EDIK3472
Дата сообщения: 16.10.2011 17:31
как исправить http://linkme.ufanet.ru/images/7edad18df42ceae0162db2a20427632e.png помогите
Автор: Brabusdark
Дата сообщения: 16.10.2011 17:40
скинь скрипт сделаю
а если так то вот сдесь
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\bin\*.bin'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
где *.bin твой файл
Автор: Mordavorot
Дата сообщения: 16.10.2011 17:41
Чем можно открыть уже скомпилированный дистрибутив?
и заменить в нём файл-другой.
Автор: log1stable
Дата сообщения: 16.10.2011 18:31
Mordavorot, открыть можно в Inno Unpacker или UniExtract. Ими же извлечь файлы. Но изменить невозможно.
Автор: VASYAKRN
Дата сообщения: 16.10.2011 18:37

Пожалста подскажите как сделать деинсталятор похож на инсталятор(добавить маску маска и сделать 3 странице:Приветствие,Деинсталяция и готово)
ссилка

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

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


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