Войти

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


Страниц : 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

R.i.m.s.k.y.
17-06-2013, 19:38
Цитата CkauNui:
они устанавливаются так, как я прописал в [Files] »
да, сверху вниз
Цитата CkauNui:
как сделать чтобы не выскакивало окошко о уже установленных компонентах ? »
Flags: disablenouninstallwarning
disablenouninstallwarning
Instructs Setup not to warn the user that this component will not be uninstalled after he/she deselected this component when it's already installed on his/her machine.

Depending on the complexity of your components, you can try to use the [InstallDelete] section and this flag to automatically 'uninstall' deselected components.

Johny777
17-06-2013, 19:44
CkauNui,
возможностью добавления картинок к пунктам »
так сойдёт: ?

[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
Compression=none
AppId=TheBestAppId
DisableWelcomePage=yes
DisableFinishedPage=yes
DisableDirPage=yes
DisableReadyPage=yes


[Components]
Name: hl2; Description: Half-Life 2; Flags: disablenouninstallwarning
Name: hl2\ru; Description: Russian; Flags: disablenouninstallwarning exclusive
Name: hl2\en; Description: English; Flags: disablenouninstallwarning exclusive

Name: ep1; Description: Half-Life 2 Episode One; Flags: disablenouninstallwarning
Name: ep1\ru; Description: Russian; Flags: disablenouninstallwarning exclusive
Name: ep1\en; Description: English; Flags: disablenouninstallwarning exclusive

Name: ep2; Description: Half-Life 2 Episode Two; Flags: disablenouninstallwarning
Name: ep2\ru; Description: Russian; Flags: disablenouninstallwarning exclusive
Name: ep2\en; Description: English; Flags: disablenouninstallwarning exclusive

Name: portal; Description: Portal; Flags: disablenouninstallwarning
Name: portal\ru; Description: Russian; Flags: disablenouninstallwarning exclusive
Name: portal\en; Description: English; Flags: disablenouninstallwarning exclusive


[Files]
Source: Wasteland_Scanner_con.bmp; Flags: dontcopy nocompression
Source: Strider_early2.bmp; Flags: dontcopy nocompression
Source: Cremator_poster.bmp; Flags: dontcopy nocompression
Source: Portal.bmp; Flags: dontcopy nocompression


[code ]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif

const
UNDEF_INDEX = -777;
ALPHA_BLEND_LEVEL = 128; // max=Byte=255

WS_EX_LAYERED = $80000;
WS_EX_TRANSPARENT = $20;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;
GWL_EXSTYLE = (-20);


var
InfoPic: TBitmapImage;
LastIndex: Integer;
TempPath: String;
PicForm: TForm;


type
COLORREF = DWORD;


function GetCursorPos(var lpPoint: TPoint): BOOL; external 'GetCursorPos@user32.dll stdcall';
function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; external 'SetLayeredWindowAttributes@user32.dll stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLong{#A}@user32.dll stdcall';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function SetFocus(hWnd: HWND): HWND; external 'SetFocus@user32.dll stdcall';


procedure ShowPicHint(const PicFilePath: String);
var
pt: TPoint;
begin
if not GetCursorPos(pt) then Exit;
InfoPic.Bitmap.LoadFromFile(PicFilePath);
try
with PicForm do
begin
SetBounds(ScaleX(pt.x + 16), ScaleY(pt.y + 7), InfoPic.Width, InfoPic.Height);
Show;
end;
finally
SetFocus(WizardForm.Handle);
end;
end;


procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
var
UndefPic: String;
begin
if Index = -1 then Exit;
if Index = LastIndex then Exit;
try
case TNewCheckListBox(Sender).ItemCaption[Index] of
'Half-Life 2': UndefPic := 'Wasteland_Scanner_con.bmp';
'Half-Life 2 Episode One': UndefPic := 'Strider_early2.bmp';
'Half-Life 2 Episode Two': UndefPic := 'Cremator_poster.bmp';
'Portal': UndefPic := 'Portal.bmp';
else
begin
LastIndex := UNDEF_INDEX;
PicForm.Hide;
Exit;
end;
end;
if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);
ShowPicHint(TempPath + UndefPic);
finally
LastIndex := Index;
end;
end;


procedure CompOnMouseLeave(Sender: TObject);
begin
PicForm.Hide;
LastIndex := -1;
end;


procedure InitInfo();
begin
WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
TempPath := AddBackslash(ExpandConstant('{tmp}'));
LastIndex := UNDEF_INDEX;
PicForm := TForm.Create(WizardForm)
with PicForm do
begin
BorderStyle := bsNone;
FormStyle := fsStayOnTop;
InfoPic := TBitmapImage.Create(PicForm)
with InfoPic do
begin
Parent := PicForm;
AutoSize := True;
end;
end;
SetWindowLong(PicForm.Handle, GWL_EXSTYLE, GetWindowLong(PicForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(PicForm.Handle, 0, ALPHA_BLEND_LEVEL, LWA_ALPHA);
end;


procedure InitializeWizard();
begin
InitInfo();
end;



скрин:
http://img208.imageshack.us/img208/1341/tokc.jpg (http://imageshack.us/photo/my-images/208/tokc.jpg/)
наглядный пример: http://sendfile.su/905839
и как сделать чтобы не выскакивало окошко о уже установленных компонентах ? »
секция компонентов, флаг disablenouninstallwarning. Пример выше ^
и возможно ли поменять цвет у fixed элементов ? »
Редактируй скин
или они устанавливаются так, как я прописал в [Files] ? »
да, и никак иначе. Меняй порядок, если надо

UPD: Немного улучшил код "картинки-подсказки". Демо перезалито!

habib2302
17-06-2013, 21:30
люди.как сделать,чтобы этот текст Перед установкой необходимо удалить все старые версии приложения, вызвать программы удаления сейчас переводился в зависимости от выбраного языка

insombia
17-06-2013, 22:09
habib2302 не давно сам хотел сделать себе выбор языка,но потом подумал - а зачем? каталисты его сделали по тому что на их сайт и англичаны заходят и качают репаки,а переход сделан спецом для них,так что не вижу смысла этой фичи

saurn
17-06-2013, 22:32
переводился в зависимости от выбраного языка »
Как обычно самым простым способом, при помощи секции CustomMessages
[Languages]
Name: Russian; MessagesFile: compiler:Languages\Russian.isl
Name: English; MessagesFile: compiler:Languages\English.isl

[CustomMessages]
Russian.MsgUnins=Текст сообщения на русском
English.MsgUnins=Текст сообщения на буржуйском

CkauNui
17-06-2013, 23:29
R.i.m.s.k.y., Johny777, Большущее вам спасибо)
Johny777, в том скрипте выдает ошибку TItemArea, в чем может быть трабла ?

Johny777
17-06-2013, 23:44
CkauNui, в том скрипте выдает ошибку TItemArea, в чем может быть трабла ? »
Пардон. Забыл что у кого-то может быть стандартная инно :(
Установи расширенную версию инно из шапки




UPD:
Моя версия: http://sendfile.su/827598

CkauNui
17-06-2013, 23:52
Пардон. Забыл что у кого-то может быть стандартная инно
Установи расширенную версию инно из шапки »
качал последнюю от сюда http://restools.hanzify.org/article.asp?id=47
можете скинуть свою версию inno?

Все работает отлично, спасибо ещё раз.

habib2302
20-06-2013, 17:14
можно сделать список компонентов который можно скрыть и раскрыть?

saurn
20-06-2013, 17:46
можно сделать список компонентов который можно скрыть и раскрыть? »
[Setup]
AlwaysShowComponentsList=no

[Components]
Name: eng; Description: Английская версия; Types : full;
Name: rus; Description: Русская версия; Types : full;

[Types]
Name: full; Description: Полная установка;
Name: custom; Description: Выборочная установка; Flags: iscustom;

insombia
20-06-2013, 18:38
habib2302 когда-то мне гном давал пример,что компоненты типа выежают из инстала,если найду кину
нашел
var
NewButton1: TNewButton;
Panel1: TPanel;

procedure NewButton1Click(Sender: TObject);
var
i:integer;
begin
i:=Panel1.Left;
If i= -Panel1.Width then
begin
WizardForm.CancelButton.Enabled:=False;
WizardForm.NextButton.Enabled:=False;
WizardForm.BackButton.Enabled:=False;
WizardForm.DirBrowseButton.Enabled:=False;
while True do
begin
Panel1.Left:= ScaleX(i);
WizardForm.SelectDirPage.Repaint;
if i=0 then Break;
i:=i+1;
end;
end else
begin
while True do
begin
Panel1.Left:= ScaleX(i);
WizardForm.SelectDirPage.Repaint;
if i=-Panel1.Width then Break;
i:=i-1;
end;
WizardForm.CancelButton.Enabled:=True;
WizardForm.NextButton.Enabled:=True;
WizardForm.BackButton.Enabled:=True;
WizardForm.DirBrowseButton.Enabled:=True;
end;
end;

procedure InitializeWizard();
begin
{ Panel1 }
Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
Parent := WizardForm.SelectDirPage;
Top := ScaleY(0);
Width := WizardForm.SelectDirPage.Width;
Height := WizardForm.SelectDirPage.Height;
Left := -Panel1.Width;
end;

WizardForm.ComponentsDiskSpaceLabel.Parent := Panel1;
WizardForm.ComponentsList.Parent := Panel1;
WizardForm.TypesCombo.Parent := Panel1;
WizardForm.SelectComponentsLabel.Parent := Panel1;

NewButton1 := TNewButton.Create(WizardForm);
with NewButton1 do
begin
Parent := WizardForm;
Left := ScaleX(32);
Top := ScaleY(327);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Компоненты';
OnClick := @NewButton1Click;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
NewButton1.Hide;
if CurPageID=wpSelectDir then NewButton1.Show;
end;

Crazy Noise
20-06-2013, 19:46
habib2302, Есть ещё такой вариант
[Components]
Name: comp; Description: comp; Flags: collapsed
Name: comp\a; Description: comp a
Name: comp\b; Description: comp b

[Code]
procedure InitializeWizard();
begin
WizardForm.ComponentsList.TreeViewStyle := True;
end;

habib2302
20-06-2013, 21:12
insombia, получается пустая страница компонентов

insombia
20-06-2013, 21:50
habib2302 а у тебя компоненты вообще в скрипте прописаны?

habib2302
20-06-2013, 21:58
insombia, да

insombia
20-06-2013, 22:08
habib2302 кинь скрипт с файлами(можешь в лс если хочешь)

saurn
20-06-2013, 23:33
получается пустая страница компонентов »
Скрипт покажите

insombia
21-06-2013, 07:56
habib2302 кароче там нужно будет просто скрыть страницу компонентов и все

mifkys
21-06-2013, 09:46
Добрый день. Может кто подсказать? Как прервать установку после ошибки одного из файлов, запускаемого через секцию Run? У меня в этой секции с ошибкой вылетает программа unzip.exe и, соответственно, мне нужно остановить дальнейшие действия, выполняемые с распакованными файлами.

insombia
21-06-2013, 16:52
mifkys Check: CheckError пробовал такое добавлять?




© OSzone.net 2001-2012