PDA

Показать полную графическую версию : [архив] Скрипты 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

mash
27-01-2010, 02:10
При использовании скина при установке самое первое окно выбора языка обычное, а когда выбрал язык, начиная с приветствия все диалоги "заскинованы". Скажите, можно это как то поправить?

A1EXXX
27-01-2010, 02:23
mash, никак.

Sotonisto
27-01-2010, 03:11
При использовании скина при установке самое первое окно выбора языка обычное, а когда выбрал язык, начиная с приветствия все диалоги "заскинованы". Скажите, можно это как то поправить? »
Что то я себе это плохо представляю. Скрины в студию! :)

svensoft
27-01-2010, 03:39
Sotonisto, посмотрел твою сборку, очень впечатляет, супер !!!... Вот еще бы педали мигали как в скине при наведении мыши , вообще цены бы ему небыло... :up

Sotonisto
27-01-2010, 03:41
Ну как бы, вот исходник скрипта, но правда там черт ногу сломит »

1. Ты отключил страницу выбора папки для установки твоего приложения. Если ты это действительно хотел - пропиши путь по которому оно должно установиться.
2. Я когда создавал свой инсталл изменял прогресс бар, но тебе это (как я понял) не нужно. Так что удали 2 эти строки.
#define PB_ImageFile "progress.bmp"
[Files]
Source: {#PB_ImageFile}; DestDir: {tmp}; Flags: recursesubdirs ignoreversion
3. Вот тут ошибка:
[Files]
Source: "C:\Documents and Settings\Alexander\Рабочий стол\XXX\заливаем REMOTE.OFFCE.MANAGER.4.1\через 15 минут\Делаем дистрибутив\autorun.exe"; DestDir: "{app}"; Flags: ignoreversion
//Source: {#PB_ImageFile}; DestDir: {tmp}; Flags: recursesubdirs ignoreversion
Source: "C:\Documents and Settings\Alexander\Рабочий стол\XXX\image.bmp"; Flags: dontcopy
Source: "C:\Documents and Settings\Alexander\Рабочий стол\XXX\button.bmp"; DestDir: {tmp}; Flags: dontcopy
Все изображения, которые используются для оформления инсталла должны быть записаны в самом начале секции [Files], а файлы твоей программы должны быть в самом конце. Кароче вот так:
[Files]
Source: "C:\Documents and Settings\Alexander\Рабочий стол\XXX\image.bmp"; Flags: dontcopy nocompression
Source: "C:\Documents and Settings\Alexander\Рабочий стол\XXX\button.bmp"; DestDir: {tmp}; Flags: dontcopy nocompression
Source: "C:\Documents and Settings\Alexander\Рабочий стол\XXX\заливаем REMOTE.OFFCE.MANAGER.4.1\через 15 минут\Делаем дистрибутив\autorun.exe"; DestDir: "{app}"; Flags: ignoreversion

P.S: если найду еще что-то - напишу :)
P.P.S: лучше создай на жестком для всех файлов отдельную папку (например "setup"). Так будет гораздо проще, а то у тебя километровые пути к файлам :)

Вот еще бы педали мигали как в скине при наведении мыши , вообще цены бы ему небыло »
Ну можно просто удалить секцию с текстурой кнопок - кнопки будут от скина :) в том архиве что я вылаживал ранее - есть 2 скина (tiger и мой) у них черные кнопки и при наведении они изменяются :)

svensoft
27-01-2010, 03:50
Sotonisto, а, та не, тот исходник что выше висит, то так, тренировочный полигон, это я у YURSHAT-а, спрашивал на предыдущей странице как вот эти два фрагмента кода соединить в один :

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\image.bmp'));
BmpFile.Top:= ScaleY(0);
BmpFile.Left:= ScaleX(0);
BmpFile.Width:= ScaleX(790);
BmpFile.Height:= ScaleY(533);
BmpFile.Stretch:= true;
BmpFile.Parent:= WizardForm.ReadyPage;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\image.bmp'));
BmpFile.Top:= ScaleY(0);
BmpFile.Left:= ScaleX(0);
BmpFile.Width:= ScaleX(790);
BmpFile.Height:= ScaleY(533);
BmpFile.Stretch:= true;
BmpFile.Parent:= WizardForm.InstallingPage;


но все равно приму к сведению что ты сказал ))..

Sotonisto
27-01-2010, 04:12
Я там все правильно написал :) чем тебе фрагмента кода не нравится? :)
А как иначе селать изображения на каждой странице?

YURSHAT
27-01-2010, 04:17
Наложение текстур на кнопки инсталлятора. Кнопки имеют три состояния: нормальное, при наведении, при клике.

Текстура прилагается [Setup]
AppName=Test
AppVerName=Test
DefaultDirName={pf}\Test
OutputDir=userdocs:Test.

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

[Files]
;Изображение размером 240х23
Source: button.bmp; DestDir: {tmp}; Flags: dontcopy

[Code_]

const
ButtonWidth = 80;
ButtonHeight = 23;

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

var
WizardLabel: TLabel;
ButtonPanel: array [0..4] of TPanel;
ButtonImage: array [0..4] of TBitmapImage;
ButtonLabel: array [0..4] of TLabel;
n: Integer;

procedure ButtonLabelClick(Sender: TObject);
var
Button: TButton;
begin
ButtonImage[TLabel(Sender).Tag].Left:=0
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
if ButtonLabel[TLabel(Sender).Tag].Enabled then
ButtonImage[TLabel(Sender).Tag].Left:=-ButtonWidth
end;

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

procedure ButtonLabelMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if ButtonLabel[TLabel(Sender).Tag].Left <> -80 then
begin
for n:=0 to 4 do ButtonImage[n].Left:= 0
end;
if ButtonLabel[TLabel(Sender).Tag].Enabled then
begin
if ButtonLabel[TLabel(Sender).Tag].Left <> -80 then
ButtonImage[TLabel(Sender).Tag].Left:= -160
end;
end;

procedure WizardLabelMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if ButtonLabel[TLabel(Sender).Tag].Left <> -80 then
for n:=0 to 4 do ButtonImage[n].Left:= 0
end;

procedure LoadButtonImage(AButton: TButton; AButtonIndex: integer);
var
Image: TBitmapImage;
Panel: TPanel;
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.Parent:=AButton.Parent
ButtonPanel[AButtonIndex]:=Panel

Image:=TBitmapImage.Create(WizardForm)
Image.Width:=240
Image.Height:=23
Image.Enabled:=False
Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}\button.bmp'))
Image.Parent:=Panel
ButtonImage[AButtonIndex]:=Image

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

Labl:=TLabel.Create(WizardForm)
Labl.Left:=23
Labl.Top:=5
Labl.Autosize:=True
Labl.Alignment:=taCenter
Labl.Tag:=AButtonIndex
Labl.Transparent:=True
Labl.Font.Color:=clWhite
Labl.Caption:=AButton.Caption
Labl.OnClick:=@ButtonLabelClick
Labl.OnDblClick:=@ButtonLabelClick
Labl.OnMouseMove:=@ButtonLabelMove
Labl.OnMouseDown:=@ButtonLabelMouseDown
Labl.OnMouseUp:=@ButtonLabelMouseUp
Labl.Parent:=Panel
ButtonLabel[AButtonIndex]:=Labl
end;

procedure UpdateButton(AButton: TButton;AButtonIndex: integer);
begin
ButtonLabel[AButtonIndex].Caption:=AButton.Caption
ButtonPanel[AButtonIndex].Visible:=AButton.Visible
ButtonLabel[AButtonIndex].Enabled:=Abutton.Enabled
ButtonLabel[AButtonIndex].Left:= ButtonPanel[AButtonIndex].Width div 2 - ButtonLabel[AButtonIndex].Width div 2;
ButtonLabel[AButtonIndex].Top:= ButtonPanel[AButtonIndex].Height div 2 - ButtonLabel[AButtonIndex].Height div 2;
end;

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

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

procedure InitializeWizard();
begin
WizardLabel:= TLabel.Create(WizardForm)
WizardLabel.Left:= ScaleX(0)
WizardLabel.Top:= ScaleY(0)
WizardLabel.Width:= ScaleX(497);
WizardLabel.Height:= ScaleY(360);
WizardLabel.Transparent:= True;
WizardLabel.AutoSize:=false;
WizardLabel.Caption:='';
WizardLabel.OnMouseMove:=@WizardLabelMove
WizardLabel.Parent:= WizardForm;

WizardForm.BackButton.Width:=ButtonWidth
WizardForm.BackButton.Height:=ButtonHeight

WizardForm.NextButton.Width:=ButtonWidth
WizardForm.NextButton.Height:=ButtonHeight

WizardForm.CancelButton.Width:=ButtonWidth
WizardForm.CancelButton.Height:=ButtonHeight

WizardForm.DirBrowseButton.Left:=337
WizardForm.DirBrowseButton.Width:=ButtonWidth
WizardForm.DirBrowseButton.Height:=ButtonHeight

WizardForm.GroupBrowseButton.Left:=337
WizardForm.GroupBrowseButton.Width:=ButtonWidth
WizardForm.GroupBrowseButton.Height:=ButtonHeight

WizardForm.LicenseAcceptedRadio.OnClick:=@LicenceAcceptedRadioOnClick

WizardForm.LicenseNotAcceptedRadio.OnClick:=@LicenceNotAcceptedRadioOnClick

ExtractTemporaryFile('button.bmp')
LoadButtonImage(WizardForm.BackButton,bidBack)
LoadButtonImage(WizardForm.NextButton,bidNext)
LoadButtonImage(WizardForm.CancelButton,bidCancel)
LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse)
end;

procedure CurPageChanged(CurPageID: Integer);
begin
UpdateButton(WizardForm.BackButton,bidBack)
UpdateButton(WizardForm.NextButton,bidNext)
UpdateButton(WizardForm.CancelButton,bidCancel)
UpdateButton(WizardForm.DirBrowseButton,bidDirBrowse)
UpdateButton(WizardForm.GroupBrowseButton,bidGroupBrowse)
end;

ЗЫ. Serega, можно заменить пример в шапке.

Sotonisto
27-01-2010, 05:29
Хотите мигающие педали - ловите! »
Мне оно не оч то и нуно - если че - можно удалить наложение текстуры и будут использоваться кнопки скина.
Но вот я попробовал и вот что у меня :-\
http://s54.radikal.ru/i144/1001/df/0450add065cet.jpg (http://radikal.ru/F/s54.radikal.ru/i144/1001/df/0450add065ce.jpg.html)

YURSHAT
27-01-2010, 06:05
Но вот я попробовал и вот что у меня :-\ »

Ты допустил ошибку, в var
WizardLabel: TLabel;
ButtonPanel: array [0..4] of TPanel;
ButtonImage: array [0..4] of TBitmapImage;
ButtonLabel: array [0..4] of TLabel;
n: Integer;

Мне оно не оч то и нуно »

Ну я никому и не навязываю. Тебе не нужно - пригодится другим...

Sotonisto
27-01-2010, 06:13
n: Integer; »
хы... как эт я скопировал полностью твой скрипт а у меня этой строки вообще нету о_0

vint56
27-01-2010, 07:02
YURSHAT, как можно сделать так чтобы установшик не как невозможно было свернуть чтобы он стоял по центру

МИШАНЧИК
27-01-2010, 07:27
Подскажите пожалуйста!
Если я разместил на странице чекбокс, то как сделать, чтоб его нельзя было выключить? Типа - Flags: fixed;
LIVE:= TCheckBox.Create(WizardForm);
with LIVE do
begin
Parent:= WizardForm.SelectDirPage;
Left:= ScaleX(65);
Top:= ScaleY(360);
Width:= ScaleX(14);
Height:= ScaleY(14);
TabOrder:= 0;
Checked:= True;
end;

LIVELabel:= TLabel.Create(WizardForm);
with LIVELabel do
begin
Caption:= ExpandConstant('{cm:LIVE}');
Left:= ScaleX(90);
Top:= ScaleY(360);
Width:= ScaleX(150);
Height:= ScaleY(13);
Font.Name:= 'Georgia';
Font.Size:= 8;
Font.Style:= [fsBold, fsItalic];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.SelectDirPage;
OnClick:= @LIVELabelOnClick;
end;

svensoft
27-01-2010, 11:30
Я там все правильно написал чем тебе фрагмента кода не нравится?
А как иначе селать изображения на каждой странице? »

Да у тебя в коде все правильно написано, и даже великолепно и мне все нравится, и спасибо что выложил такой очень полезный материал :) .. У тебя на каждой странице - разные фоновые картинки, а у меня в коде один и тот-же файл картинки на двух страницах, вот я и думал - как код не плодить лишний в модуле :

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\image.bmp'));
BmpFile.Top:= ScaleY(0);
BmpFile.Left:= ScaleX(0);
BmpFile.Width:= ScaleX(790);
BmpFile.Height:= ScaleY(533);
BmpFile.Stretch:= true;
BmpFile.Parent:= WizardForm.ReadyPage;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\image.bmp'));
BmpFile.Top:= ScaleY(0);
BmpFile.Left:= ScaleX(0);
BmpFile.Width:= ScaleX(790);
BmpFile.Height:= ScaleY(533);
BmpFile.Stretch:= true;
BmpFile.Parent:= WizardForm.InstallingPage;


YURSHAT, тут как всегда РЕСПЕКТ !!! И огромное человеческое СПАСИБО !!! :)

mash
27-01-2010, 12:47
Цитата mash:
При использовании скина при установке самое первое окно выбора языка обычное, а когда выбрал язык, начиная с приветствия все диалоги "заскинованы". Скажите, можно это как то поправить?
Что то я себе это плохо представляю. Скрины в студию!
------- »
http://s001.radikal.ru/i194/1001/5d/c954ad628760t.jpg (http://radikal.ru/F/s001.radikal.ru/i194/1001/5d/c954ad628760.jpg.html)http://s55.radikal.ru/i150/1001/0b/2908de6b8ae8t.jpg (http://radikal.ru/F/s55.radikal.ru/i150/1001/0b/2908de6b8ae8.jpg.html)http://s001.radikal.ru/i196/1001/9c/ab62e428d632t.jpg (http://radikal.ru/F/s001.radikal.ru/i196/1001/9c/ab62e428d632.jpg.html)

A1EXXX
27-01-2010, 12:58
mash, я ж писал - никак. Делай инсталл одноязычным и всё...

mash
27-01-2010, 13:07
A1EXXX, Я видел что Вы писали, но в том то и дело, что нужно 2 языка или же отказаться от скинов. Я не очень в этих скриптах разбираюсь, но помоему тут дело "очереди", т.е. диалог выбора появляется раньше, чем "скинуется" установка.

A1EXXX
27-01-2010, 13:15
Не встречал функции, которая могла загрузить скин быстрее, чем InitializeSetup. Не знаю, можно ли сделать автовыбор языка установщика, в зависимости от языка системы (раз уж так нужны оба)... Если можно, то местные программисты должны подкинуть примерчик :)

mash
27-01-2010, 13:18
Автовыбор тоже держу в голове, надеюсь на чудо, на примерчик.

mash
27-01-2010, 14:09
Лучше бы примерчик, если таковой можно придумать, несколькоязычная установка "палит" инсталлятор со скином. :)




© OSzone.net 2001-2012