Войти

Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

A1EXXX
14-10-2009, 23:47
BlackSelf, а можно на исходники взглянуть? Интересно, как там всё устроено :)
(ответ получен...)

МИШАНЧИК
15-10-2009, 01:59
Serega, У меня есть все версии, но по умолчанию стоит InnoCompiler091007 + Inno_ISCmplr_Setup от Restools »
А вот из Inno_ISCmplr_Setup» что нужно использовать?

x-net
15-10-2009, 06:46
http://i049.radikal.ru/0910/c2/6855545a493d.jpg
1.Как туда вставить ссылку с картинкой и черточкой под кнопками?
2.Как поменять кнопки на свои?
3.Можно ли поменять шрифт в заголовке на свой в системе?

Serega
15-10-2009, 17:41
что нужно использовать? »
Я использую все файлы из InnoSetup_ANSI\FullVCL\*

MrAWP
15-10-2009, 22:10
Кто знает - возможно ли на странице компонентов прикрутить комментарий к каждому компоненту? Желательно чтобы он отображался под полем компонентов (над кнопками далее и отмена). Спасибо.

Serega
16-10-2009, 00:34
как сделать средствами WinApi кнопки плоскими »
Сделал не на WinApi, а с помощью панелей, но обычный Inno не понимает OnMouseDown и OnMouseUp...

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
var
Backbtn, Nextbtn, Cancelbtn: TPanel;

procedure MouseDown(Sender: TObject; TButton: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
TPanel(Sender).BorderStyle:= bsSingle;
end;

procedure MouseUp(Sender: TObject; TButton: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
TPanel(Sender).BorderStyle:= bsNone;
end;

procedure Click(Sender: TObject);
begin
case TPanel(Sender) of
Backbtn: WizardForm.BackButton.OnClick(WizardForm.BackButton);
Nextbtn: WizardForm.NextButton.OnClick(WizardForm.NextButton);
Cancelbtn: WizardForm.CancelButton.OnClick(WizardForm.CancelButton);
end;
end;

procedure CancelbtnClick(Sender: TObject);
begin
WizardForm.CancelButton.OnClick(WizardForm.CancelButton);
end;

procedure InitializeWizard;
begin
Backbtn:= TPanel.Create(WizardForm.BackButton);
with Backbtn do
begin
SetBounds(WizardForm.BackButton.Left, WizardForm.BackButton.Top,
WizardForm.BackButton.Width, WizardForm.BackButton.Height);
BorderStyle:= bsNone;
BevelOuter:= bvRaised;
OnClick:= @Click;
OnMouseDown:= @MouseDown;
OnMouseUp:= @MouseUp;
Parent:= WizardForm;
end;
Nextbtn:= TPanel.Create(WizardForm.NextButton);
with Nextbtn do
begin
SetBounds(WizardForm.NextButton.Left, WizardForm.NextButton.Top,
WizardForm.NextButton.Width, WizardForm.NextButton.Height);
BorderStyle:= bsNone;
BevelOuter:= bvRaised;
OnClick:= @Click;
OnMouseDown:= @MouseDown;
OnMouseUp:= @MouseUp;
Parent:= WizardForm;
end;
Cancelbtn:= TPanel.Create(WizardForm.NextButton);
with Cancelbtn do
begin
SetBounds(WizardForm.CancelButton.Left, WizardForm.CancelButton.Top,
WizardForm.CancelButton.Width, WizardForm.CancelButton.Height);
BorderStyle:= bsNone;
OnClick:= @Click;
OnMouseDown:= @MouseDown;
OnMouseUp:= @MouseUp;
Parent:= WizardForm;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
Backbtn.Caption:= WizardForm.BackButton.Caption;
Backbtn.Visible:= WizardForm.BackButton.Visible;
Nextbtn.Caption:= WizardForm.NextButton.Caption;
Nextbtn.Visible:= WizardForm.NextButton.Visible;
Cancelbtn.Caption:= WizardForm.CancelButton.Caption;
Cancelbtn.Visible:= WizardForm.CancelButton.Visible;
end;

A1EXXX
16-10-2009, 20:25
Как сделать, чтобы аддон к игре устанавливался строго в папку оригинала без возможности изменения пути установки (http://s50.radikal.ru/i127/0910/09/8e929dfdad78.jpg), и чтоб если оригинала нет (в реестре; подхватывало путь из него), выскакивало такое окошко (http://s53.radikal.ru/i140/0910/15/09ecaa366662.jpg)???

BlackSelf
16-10-2009, 20:57
A1EXXX,

[Setup]
AppName=NBA 2K10
AppVerName=NBA 2K10
DefaultDirName={reg:HKLM\Software\2K Sports\NBA 2K10,InstallDir}
OutputDir=.

[_code]
function InitializeSetup(): Boolean;
var
ResultCode:Integer;
begin
if RegValueExists(HKEY_LOCAL_MACHINE, 'Software\2K Sports\NBA 2K10','InstallDir')
then
Result := True
else
MsgBox('Игра NBA 2K10 не найдена.',mbInformation, mb_Ok)
end;

Procedure InitializeWizard();
begin
WizardForm.DirEdit.Enabled:=False;
WizardForm.DirBrowseButton.Enabled:=False;
end;

A1EXXX
16-10-2009, 21:23
BlackSelf, Thank you, man! ;) :oszone:

A1EXXX
16-10-2009, 21:44
http://i030.radikal.ru/0910/e5/e167a06acf13t.jpg (http://radikal.ru/F/i030.radikal.ru/0910/e5/e167a06acf13.jpg.html)
Немного поправил скрипт от ResTools для добавления анимации (копирования) на страницу процесса инсталляции;
необходимое прикрепил, визуально - смотрим скрин ;)
Исходники можно взять здесь (http://restools.hanzify.org/article.asp?id=79)

serg aka lain
16-10-2009, 22:15
Сделал не на WinApi, а с помощью панелей, но обычный Inno не понимает OnMouseDown и OnMouseUp... »
Да я тоже так пытался, только на панели ещё и лейблы натягивал, но у моего и у Вашего варианта есть один и тот-же недостаток, если нажать кнопку, а затем сдвинуть мышей в сторону, она (кнопка) назад уже не отжимается (до следующего нажатия), как это побороть не соображу. Ну вот и думал как-то через API можно.

з.ы. Если интересно вышлю свой пример в личку.

Crysis23
17-10-2009, 11:34
Привет Всем!Можете сказать скрипт от этой установки :)

Bambaso
17-10-2009, 21:38
Подскажите пожалуйста возможно ли в innosetup изменить диалоговые сообщения в процессе установки приложения. ( Далее, назад завершить и всё такое )?

serg aka lain
17-10-2009, 22:08
Подскажите пожалуйста возможно ли в innosetup изменить диалоговые сообщения в процессе установки приложения. ( Далее, назад завершить и всё такое )? »
Конечно, возможно.

SinCore
18-10-2009, 11:43
Подскажите пожалуйста,есть запакованные файлы в архив 7z хотелось бы прикрутить установщик что бы распаковывал это архив в ту директорию которую выбераешь в установщике.

Serega
18-10-2009, 14:44
но у моего и у Вашего варианта есть один и тот-же недостаток, если нажать кнопку, а затем сдвинуть мышей в сторону, она (кнопка) назад уже не отжимается (до следующего нажатия), как это побороть не соображу »
Я тоже не мог сразу сообразить, но вот в итоге, что вышло :) :

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
var
Backbtn, Nextbtn, Cancelbtn: TPanel;

procedure MouseDown(Sender: TObject; TButton: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
TPanel(Sender).BorderStyle:= bsSingle;
end;

procedure MouseUp(Sender: TObject; TButton: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
TPanel(Sender).BorderStyle:= bsNone;
end;

procedure MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
case TWinControl(Sender) of
WizardForm:
begin
Backbtn.BorderStyle:= bsNone;
Nextbtn.BorderStyle:= bsNone;
Cancelbtn.BorderStyle:= bsNone;
end;
end;
end;

procedure Click(Sender: TObject);
begin
case TPanel(Sender) of
Backbtn: WizardForm.BackButton.OnClick(WizardForm.BackButton);
Nextbtn: WizardForm.NextButton.OnClick(WizardForm.NextButton);
Cancelbtn:
begin
Cancelbtn.BorderStyle:= bsNone;
WizardForm.CancelButton.OnClick(WizardForm.CancelButton);
end;
end;
end;

procedure InitializeWizard;
begin
WizardForm.OnMouseMove:= @MouseMove;
Backbtn:= TPanel.Create(WizardForm.BackButton);
with Backbtn do
begin
SetBounds(WizardForm.BackButton.Left, WizardForm.BackButton.Top,
WizardForm.BackButton.Width, WizardForm.BackButton.Height);
BorderStyle:= bsNone;
OnClick:= @Click;
OnMouseDown:= @MouseDown;
OnMouseUp:= @MouseUp;
Parent:= WizardForm;
end;
Nextbtn:= TPanel.Create(WizardForm.NextButton);
with Nextbtn do
begin
SetBounds(WizardForm.NextButton.Left, WizardForm.NextButton.Top,
WizardForm.NextButton.Width, WizardForm.NextButton.Height);
BorderStyle:= bsNone;
OnClick:= @Click;
OnMouseDown:= @MouseDown;
OnMouseUp:= @MouseUp;
Parent:= WizardForm;
end;
Cancelbtn:= TPanel.Create(WizardForm.NextButton);
with Cancelbtn do
begin
SetBounds(WizardForm.CancelButton.Left, WizardForm.CancelButton.Top,
WizardForm.CancelButton.Width, WizardForm.CancelButton.Height);
BorderStyle:= bsNone;
OnClick:= @Click;
OnMouseDown:= @MouseDown;
OnMouseUp:= @MouseUp;
Parent:= WizardForm;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
Backbtn.Caption:= WizardForm.BackButton.Caption;
Backbtn.Visible:= WizardForm.BackButton.Visible;
Nextbtn.Caption:= WizardForm.NextButton.Caption;
Nextbtn.Visible:= WizardForm.NextButton.Visible;
Cancelbtn.Caption:= WizardForm.CancelButton.Caption;
Cancelbtn.Visible:= WizardForm.CancelButton.Visible;
end;


изменить диалоговые сообщения в процессе установки приложения »
Сформулируйте более точнее, что вы хотите сделать.

запакованные файлы в архив 7z хотелось бы прикрутить установщик что бы распаковывал »
В шапке есть Inno Setup Scripting 5.1 - руководство по расширенным возможностям Inno Setup от Kindly, там есть примеры для работы с 7z.

serg aka lain
18-10-2009, 19:54
Serega, благодарю за желание помочь.
Я тоже нашёл неплохой вариант, адаптировал под свои нужды всем известный код, с текстурными кнопками.
Получилось вроде-бы не плохо.
И самое для меня главное, он должен работать в любой версии Inno




; Inno Setup Compiler 5.3.5 (ansi & unicode)
; = Emulation of switching-off of style XP =
; http://forum.oszone.net/ <serg aka lain>

[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
LicenseFile=compiler:License.txt
OutputDir=userdocs:My Program.

[Code]

const
RGN_DIFF = 4;
RADIUS = 1;
bidBack = 0;
bidNext = 1;
bidCancel = 2;
bidDirBrowse = 3;
bidGroupBrowse = 4;

function CreateRoundRectRgn(p1, p2, p3, p4, p5, p6: Integer): THandle;
external 'CreateRoundRectRgn@gdi32 stdcall';
function CombineRgn(p1, p2, p3: THandle; p4: Integer): Integer;
external 'CombineRgn@gdi32 stdcall';
function SetWindowRgn(hWnd: HWND; hRgn: THandle; bRedraw: Boolean): Integer;
external 'SetWindowRgn@user32 stdcall';

var
FormRegion, InnerRegion: tHandle;
Panel: TPanel;
ButtonPanel: array [0..4] of TPanel;
ButtonLabel: array [0..4] of TLabel;

procedure ShapeForm(aForm : TForm; edgeSize : integer);
begin
FormRegion := CreateRoundRectRgn(0, 0, aForm.width, aForm.height, edgeSize, edgeSize);
CombineRgn(FormRegion, FormRegion, InnerRegion, RGN_DIFF);
SetWindowRgn(aForm.Handle, FormRegion, True);
end;

procedure ButtonLabelClick(Sender: TObject);
var
Button: TButton;
begin
case TLabel(Sender).Tag of
bidBack: Button := WizardForm.BackButton;
bidNext: Button := WizardForm.NextButton;
bidCancel: Button := WizardForm.CancelButton;
bidDirBrowse: Button := WizardForm.DirBrowseButton;
bidGroupBrowse: Button := WizardForm.GroupBrowseButton;
else
Exit
end
Button.OnClick(Button);
end;

procedure ButtonLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ButtonPanel[TLabel(Sender).Tag].BorderStyle := bsSingle;
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ButtonPanel[TLabel(Sender).Tag].BorderStyle := bsSizeable;
end;

procedure LabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
ButtonPanel[TLabel(Sender).Tag].BorderStyle := bsSizeable;
end;

procedure LoadButton(AButton: TButton; AButtonIndex: integer);
var
Labl: TLabel;
begin
Panel := TPanel.Create(WizardForm);
Panel.Left := AButton.Left;
Panel.Top := AButton.Top;
Panel.Width := AButton.Width;
Panel.Height := AButton.Height;
Panel.Tag := AButtonIndex;
Panel.BorderStyle := bsSizeable;
Panel.Parent := AButton.Parent;
ButtonPanel[AButtonIndex] := Panel;

with TLabel.Create(WizardForm) do
begin
Width := Panel.Width;
Height := Panel.Height;
AutoSize := False;
Tag := AButtonIndex;
OnClick := @ButtonLabelClick;
OnDblClick := @ButtonLabelClick;
OnMouseDown := @ButtonLabelMouseDown;
OnMouseUp := @ButtonLabelMouseUp;
OnMouseMove := @LabelMouseMove;
TransParent := True;
Parent := Panel;
end;

Labl := TLabel.Create(WizardForm);
Labl.Width := Panel.Width - ScaleX(10);
Labl.Height := Panel.Height - ScaleY(10);
Labl.Alignment := taCenter;
Labl.Autosize := False;
Labl.Font.Color := clBlack;
Labl.Caption := AButton.Caption;
Labl.OnClick := @ButtonLabelClick;
Labl.OnDblClick := @ButtonLabelClick;
Labl.OnMouseDown := @ButtonLabelMouseDown;
Labl.OnMouseUp := @ButtonLabelMouseUp;
Labl.Cursor := crHand;
Labl.Tag := AButtonIndex;
Labl.Transparent := True;
ButtonLabel[AButtonIndex] := Labl;
Labl.Parent := Panel;
end;

procedure UpdateButton(AButton: TButton;AButtonIndex: integer);
begin
ButtonLabel[AButtonIndex].Caption := AButton.Caption;
ButtonPanel[AButtonIndex].Visible := AButton.Visible;
ButtonLabel[AButtonIndex].Enabled := Abutton.Enabled;
end;

procedure LicenceAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled := True;
end;

procedure LicenceNotAcceptedRadioOnClick(Sender: TObject);
begin
ButtonLabel[bidNext].Enabled := False;
end;

procedure InitializeWizard();
begin
ShapeForm(WizardForm, RADIUS);

WizardForm.LicenseAcceptedRadio.OnClick := @LicenceAcceptedRadioOnClick;
WizardForm.LicenseNotAcceptedRadio.OnClick := @LicenceNotAcceptedRadioOnClick;

LoadButton(WizardForm.BackButton,bidBack);
LoadButton(WizardForm.NextButton,bidNext);
LoadButton(WizardForm.CancelButton,bidCancel);
LoadButton(WizardForm.DirBrowseButton,bidDirBrowse);
LoadButton(WizardForm.GroupBrowseButton,bidGroupBrowse);
end;

procedure CurPageChanged(CurPageID: Integer);
begin
UpdateButton(WizardForm.BackButton,bidBack);
UpdateButton(WizardForm.NextButton,bidNext);
UpdateButton(WizardForm.CancelButton,bidCancel);

ButtonLabel[bidBack].Left := ButtonPanel[bidBack].Width div 2 - ButtonLabel[bidBack].Width div 2;
ButtonLabel[bidBack].Top := ButtonPanel[bidBack].Height div 2 - ButtonLabel[bidBack].Height div 2;
ButtonLabel[bidNext].Left := ButtonPanel[bidNext].Width div 2 - ButtonLabel[bidNext].Width div 2;
ButtonLabel[bidNext].Top := ButtonPanel[bidNext].Height div 2 - ButtonLabel[bidNext].Height div 2;
ButtonLabel[bidCancel].Left := ButtonPanel[bidCancel].Width div 2 - ButtonLabel[bidCancel].Width div 2;
ButtonLabel[bidCancel].Top := ButtonPanel[bidCancel].Height div 2 - ButtonLabel[bidCancel].Height div 2;
ButtonLabel[bidDirBrowse].Left := ButtonPanel[bidDirBrowse].Width div 2 - ButtonLabel[bidDirBrowse].Width div 2;
ButtonLabel[bidDirBrowse].Top := ButtonPanel[bidDirBrowse].Height div 2 - ButtonLabel[bidDirBrowse].Height div 2;
ButtonLabel[bidGroupBrowse].Left := ButtonPanel[bidGroupBrowse].Width div 2 - ButtonLabel[bidGroupBrowse].Width div 2;
ButtonLabel[bidGroupBrowse].Top := ButtonPanel[bidGroupBrowse].Height div 2 - ButtonLabel[bidGroupBrowse].Height div 2;
end;

Serega
18-10-2009, 20:38
И самое для меня главное, он должен работать в любой версии Inno »
Согласен, интересный подход ;)

Odebay
19-10-2009, 05:29
Подскажите пожалуйста,как как разделить архив на тома во FreeArc по 700mb

Krekerpro
19-10-2009, 13:54
День добрый,хотелось бы узнать,как сделать прозрачный фон на картинке в левом нижнем углу http://clip2net.com/clip/m0/1255946027-clip-124kb.jpg.
Используется этот скрипт-http://forum.oszone.net/post-1241284-239.html




© OSzone.net 2001-2012