Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
BlackSelf, а можно на исходники взглянуть? Интересно, как там всё устроено :)
(ответ получен...)
МИШАНЧИК
15-10-2009, 01:59
Serega, У меня есть все версии, но по умолчанию стоит InnoCompiler091007 + Inno_ISCmplr_Setup от Restools »
А вот из Inno_ISCmplr_Setup» что нужно использовать?
http://i049.radikal.ru/0910/c2/6855545a493d.jpg
1.Как туда вставить ссылку с картинкой и черточкой под кнопками?
2.Как поменять кнопки на свои?
3.Можно ли поменять шрифт в заголовке на свой в системе?
что нужно использовать? »
Я использую все файлы из InnoSetup_ANSI\FullVCL\*
Кто знает - возможно ли на странице компонентов прикрутить комментарий к каждому компоненту? Желательно чтобы он отображался под полем компонентов (над кнопками далее и отмена). Спасибо.
как сделать средствами 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;
Как сделать, чтобы аддон к игре устанавливался строго в папку оригинала без возможности изменения пути установки (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;
BlackSelf, Thank you, man! ;) :oszone:
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
Привет Всем!Можете сказать скрипт от этой установки :)
Подскажите пожалуйста возможно ли в innosetup изменить диалоговые сообщения в процессе установки приложения. ( Далее, назад завершить и всё такое )?
serg aka lain
17-10-2009, 22:08
Подскажите пожалуйста возможно ли в innosetup изменить диалоговые сообщения в процессе установки приложения. ( Далее, назад завершить и всё такое )? »
Конечно, возможно.
Подскажите пожалуйста,есть запакованные файлы в архив 7z хотелось бы прикрутить установщик что бы распаковывал это архив в ту директорию которую выбераешь в установщике.
но у моего и у Вашего варианта есть один и тот-же недостаток, если нажать кнопку, а затем сдвинуть мышей в сторону, она (кнопка) назад уже не отжимается (до следующего нажатия), как это побороть не соображу »
Я тоже не мог сразу сообразить, но вот в итоге, что вышло :) :
[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;
И самое для меня главное, он должен работать в любой версии Inno »
Согласен, интересный подход ;)
Подскажите пожалуйста,как как разделить архив на тома во 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.