Войти

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


Страниц : 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 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

murlakatamenka
23-06-2011, 23:09
xXDx, чтобы не было обводки попробуйте добавить WizardForm.NextButton.Refresh(); и WizardForm.BackButton.Refresh();
мне в своё время это помогло (делал для кнопок на стекле от iswin7.dll)
куда это добавить ?.. пожалуй ребята подскажут, я думаю, можно так
[_Code]
procedure CurStepChanged (CurStepID: Integer);
begin
WizardForm.NextButton.Refresh();
WizardForm.BackButton.Refresh();
end

xXDx
23-06-2011, 23:28
murlakatamenka,
вот что пишет Invalid prototype for 'CurStepChanged'

valyok666
24-06-2011, 01:30
[Code]
procedure CurStepChanged1(CurStepID: Integer);
begin
WizardForm.NextButton.Refresh();
WizardForm.BackButton.Refresh();
end;
попробуй так

TRMK
24-06-2011, 14:08
Доброго времени суток всем!

Уважаемые форумчане, не смог разобраться сам в нескольких вопросах, прошу помочь или ткнуть носом, если уже есть ответ.

1. Можно ли сделать инсталлятор с ограниченным количеством установок? И после этого выдавалось сообщение в самом начале установки: "Вы исчерпали лимит установок, скачайте новую версию".

2. Так же интересует скрипт на работоспособность инсталлятора на ограниченное кол-во времени, например 2 недели. И тоже выдавалось сообщение: "Срок действия установщика истек, скачайте новую версию"

3. Подскажите, как сделать следующее - есть 4 варианта одной программы. Необходимо, в начале установки задать вопрос и варианты ответа ( Нужна ли Вам поддержка определенной программы? - "ДА", "НЕТ") и далее переход на следующую страницу с учетом ответа. Т. е. если человек ответил "ДА" он переходит на один вариант страницы и продолжает установку выбирая дополнительные функции, если ответил "НЕТ", то переходит на другую страницу с другими вариантами дополнительных функций.

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

Надеюсь на поддержку с Вашей стороны. )

xXDx
24-06-2011, 15:18
valyok666,
не работает может у меня со скриптом что то не то, [Setup]
AppId={{75562D30-F354-430A-96DA-A3FF701EB069}
AppName=Shank
AppVerName=Shank 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
WizardImageFile=1.bmp

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

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked;



[Files]
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[CustomMessages]
rus.Icons=Создать ярлык на рабочем столе
rus.Group=Создать ярлыки в меню "Пуск"
rus.FreeSpace=Доступно места на диске:
rus.NeedSpace=Требуется места на диске:

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon


[Code]
const
ButtonWidth = 80; //Указываем размер кнопок
ButtonHeight = 40;


var
pnl: TPanel;
Icons, Group: TCheckBox;
lblIcons, lblGroup, Label10, Label11: TLabel;
FreeMB, TotalMB: Cardinal;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID =wpLicense)or(PageID =wpInfoBefore)or(PageID =wpUserInfo)or(PageID =wpSelectComponents)or(PageID =wpSelectProgramGroup)or(PageID =wpSelectTasks) then
Result:= True;
end;

function CreateIcons: Boolean;
begin
Result:=Icons.Checked;
end;

function GroupIcons: Boolean;
begin
Result:=Group.Checked;
end;

procedure IconsOnClick(Sender: TObject);
begin
if Icons.Checked = False then
Icons.Checked:= True else
Icons.Checked:= False;
end;


procedure StartMenuIconOnClick(Sender: TObject);
begin
if Group.Checked = False then
Group.Checked:= True else
Group.Checked:= False;
end;

procedure GroupOnClickIcon(Sender: TObject);
begin
if Group.Checked = False then
begin
wizardform.GroupEdit.enabled:= false;
wizardform.GroupBrowseButton.enabled:= false;
end
else
begin
wizardform.GroupEdit.enabled:= true;
wizardform.GroupBrowseButton.enabled:= true;
end;
end;

procedure InitializeWizard();
begin
WizardForm.WelcomeLabel1.Left:=40
WizardForm.WelcomeLabel1.Top:=180
WizardForm.WelcomeLabel1.Width:=610
WizardForm.WelcomeLabel2.Left:=40
WizardForm.WelcomeLabel2.Top:=220
WizardForm.WelcomeLabel2.Width:=610

WizardForm.FinishedHeadingLabel.Left:=40
WizardForm.FinishedHeadingLabel.Top:=180
WizardForm.FinishedHeadingLabel.Width:=610
WizardForm.FinishedLabel.Left:=40
WizardForm.FinishedLabel.Top:=220
WizardForm.FinishedLabel.Width:=610

WizardForm.PageDescriptionLabel.Hide
WizardForm.PageNameLabel.Hide

WizardForm.BackButton.Width:=ButtonWidth
WizardForm.BackButton.Height:=ButtonHeight
WizardForm.BackButton.Top:=400
WizardForm.BackButton.Left:=ScaleX(20);

WizardForm.NextButton.Width:=ButtonWidth
WizardForm.NextButton.Height:=ButtonHeight
WizardForm.NextButton.Top:=400
WizardForm.NextButton.Left:=ScaleX(520);

WizardForm.CancelButton.Width:=ButtonWidth
WizardForm.CancelButton.Height:=ButtonHeight
WizardForm.CancelButton.Top:=400
WizardForm.CancelButton.Left:=ScaleX(430);

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

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

WizardForm.ClientWidth:=690
WizardForm.ClientHeight:=450
WizardForm.Bevel.Hide
WizardForm.Bevel1.Hide

end;



procedure WelcomePage;
begin
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.WelcomeLabel1.AutoSize;
SetBounds (WizardForm.WelcomeLabel1.Left,WizardForm.WelcomeLabel1.Top,
WizardForm.WelcomeLabel1.Width,WizardForm.WelcomeLabel1.Height);
WordWrap:= WizardForm.WelcomeLabel1.WordWrap;
Caption:= WizardForm.WelcomeLabel1.Caption;
with Font do
begin
Color:= clWhite;
Style:= WizardForm.WelcomeLabel1.Font.Style;
Name:= WizardForm.WelcomeLabel1.Font.Name;
Size:= WizardForm.WelcomeLabel1.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.WelcomeLabel2.AutoSize;
SetBounds(WizardForm.WelcomeLabel2.Left,WizardForm.WelcomeLabel2.Top,
WizardForm.WelcomeLabel2.Width,WizardForm.WelcomeLabel2.Height);
WordWrap:= WizardForm.WelcomeLabel2.WordWrap;
Caption:= WizardForm.WelcomeLabel2.Caption;
with Font do
begin
Color:= clWhite;
Style:= WizardForm.WelcomeLabel2.Font.Style;
Name:= WizardForm.WelcomeLabel2.Font.Name;
Size:= WizardForm.WelcomeLabel2.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////SelectDirPage//////////////////////////////////////
procedure SelectDirPage;
begin
with WizardForm do
begin
with DirEdit do
begin
Width:= 500
Left:= 40;
Top:= 250;
Parent:= pnl;
end;
with DirBrowseButton do
begin
Left:= WizardForm.DirEdit.Left + WizardForm.DirEdit.Width + 10;
Top:= WizardForm.DirEdit.Top - 1;
Parent:= pnl;
end;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.SelectDirBrowseLabel.AutoSize;
SetBounds(WizardForm.DirEdit.Left,WizardForm.DirEdit.Top - 30,
WizardForm.SelectDirBrowseLabel.Width, WizardForm.SelectDirBrowseLabel.Height);
WordWrap:= WizardForm.SelectDirBrowseLabel.WordWrap;
Caption:= WizardForm.SelectDirBrowseLabel.Caption;
with Font do
begin
Color:= clWhite;
Style:= WizardForm.SelectDirBrowseLabel.Font.Style;
Name:= WizardForm.SelectDirBrowseLabel.Font.Name;
Size:= WizardForm.SelectDirBrowseLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.DiskSpaceLabel.AutoSize;
SetBounds(WizardForm.DirEdit.Left,WizardForm.Bevel.Top - 25,
WizardForm.DiskSpaceLabel.Width,WizardForm.DiskSpaceLabel.Height);
WordWrap:= WizardForm.DiskSpaceLabel.WordWrap;
Caption:= WizardForm.DiskSpaceLabel.Caption;
with Font do
begin
Color:= clWhite;
Style:= WizardForm.DiskSpaceLabel.Font.Style;
Name:= WizardForm.DiskSpaceLabel.Font.Name;
Size:= WizardForm.DiskSpaceLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////ReadyPage//////////////////////////////////////
procedure ReadyPage;
var
ready_str: string;
begin
ready_str:= WizardForm.ReadyMemo.Text;
with TLabel.Create(pnl) do
begin
SetBounds(45,130,WizardForm.ReadyMemo.Width, WizardForm.ReadyMemo.Height);
Caption:= ready_str;
with Font do
begin
Color:= clWhite;
Style:= WizardForm.ReadyLabel.Font.Style;
Name:= WizardForm.ReadyLabel.Font.Name;
Size:= WizardForm.ReadyLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;


pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////InstallingPage//////////////////////////////////////
procedure InstallingPage;
begin
with WizardForm.ProgressGauge do
begin
Width:=610
Left:= 40;
Top:= 250;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.FilenameLabel.AutoSize;
SetBounds(WizardForm.ProgressGauge.Left,WizardForm.ProgressGauge.Top-20,
WizardForm.FilenameLabel.Width,WizardForm.FilenameLabel.Height);
WordWrap:= WizardForm.FilenameLabel.WordWrap;
Caption:= WizardForm.FilenameLabel.Caption;
with Font do
begin
Color:= clWhite;
Style:= WizardForm.FilenameLabel.Font.Style;
Name:= WizardForm.FilenameLabel.Font.Name;
Size:= WizardForm.FilenameLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.StatusLabel.AutoSize;
SetBounds(WizardForm.StatusLabel.Left,WizardForm.StatusLabel.Top,
WizardForm.StatusLabel.Width,WizardForm.StatusLabel.Height);
WordWrap:= WizardForm.StatusLabel.WordWrap;
Caption:= WizardForm.StatusLabel.Caption;
with Font do
begin
Color:= clWhite;
Style:= WizardForm.StatusLabel.Font.Style;
Name:= WizardForm.StatusLabel.Font.Name;
Size:= WizardForm.StatusLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

///////////////////////FinishedPage//////////////////////////////////////
var
CheckBox: array of TNewCheckBox;

procedure CheckBoxClick(Sender: TObject);
begin
if TNewCheckBox(Sender).Checked then
WizardForm.RunList.Checked[TNewCheckBox(Sender).Tag]:= True
else WizardForm.RunList.Checked[TNewCheckBox(Sender).Tag]:= False;
end;

procedure LabelClick(Sender: TObject);
begin
if CheckBox[TLabel(Sender).Tag].Checked then
begin
WizardForm.RunList.Checked[TLabel(Sender).Tag]:= False;
CheckBox[TLabel(Sender).Tag].Checked:= False;
end
else
begin
WizardForm.RunList.Checked[TLabel(Sender).Tag]:= True;
CheckBox[TLabel(Sender).Tag].Checked:= True;
end;
end;

procedure HideRunList(Control: TWinControl);
var
i, t: Integer;
str: string;
begin
if WizardForm.RunList.Items.Count > 0 then
begin
WizardForm.RunList.Hide;
SetArrayLength(CheckBox, SizeOf(WizardForm.RunList.Items.Count));
for i:= 0 to WizardForm.RunList.Items.Count-1 do
begin
CheckBox[i]:= TNewCheckBox.Create(Control);
with CheckBox[i] do
begin
SetBounds(ScaleX(WizardForm.RunList.Left+2),ScaleY(WizardForm.RunList.Top+2+t),14,14);
Tag:= i;
Checked:= WizardForm.RunList.Checked[i];
Caption:= WizardForm.RunList.Items.Strings[i];
OnClick:= @CheckBoxClick;
Color:= clWhite;
Parent:= Control;
end;
str:= WizardForm.RunList.Items.Strings[i];
with TLabel.Create(WizardForm) do
begin
SetBounds(ScaleX(WizardForm.RunList.Left+20),ScaleY(WizardForm.RunList.Top+2+t),
WizardForm.RunList.Width,14);
Caption:= str;
Tag:= i;
OnClick:= @LabelClick;
Transparent:= True;
Parent:= Control;
end;
t:= t + 20;
end;
end;
end;

procedure FinishedPage;
begin
HideRunList(pnl);
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.FinishedHeadingLabel.AutoSize;
SetBounds(WizardForm.FinishedHeadingLabel.Left,WizardForm.FinishedHeadingLabel.Top,
WizardForm.FinishedHeadingLabel.Width,WizardForm.FinishedHeadingLabel.Height);
WordWrap:= WizardForm.FinishedHeadingLabel.WordWrap;
Caption:= WizardForm.FinishedHeadingLabel.Caption;
with Font do
begin
Color:= clWhite;
Style:= WizardForm.FinishedHeadingLabel.Font.Style;
Name:= WizardForm.FinishedHeadingLabel.Font.Name;
Size:= WizardForm.FinishedHeadingLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.FinishedLabel.AutoSize;
SetBounds(WizardForm.FinishedLabel.Left,WizardForm.FinishedLabel.Top,
WizardForm.FinishedLabel.Width,WizardForm.FinishedLabel.Height);
WordWrap:= WizardForm.FinishedLabel.WordWrap;
Caption:= WizardForm.FinishedLabel.Caption;
with Font do
begin
Color:= clWhite;
Style:= WizardForm.FinishedLabel.Font.Style;
Name:= WizardForm.FinishedLabel.Font.Name;
Size:= WizardForm.FinishedLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////

procedure CurStepChanged1(CurStepID: Integer);
begin
WizardForm.NextButton.Refresh();
WizardForm.BackButton.Refresh();
end;

procedure CurPageChanged(CurPageID: Integer);
begin
pnl:= TPanel.Create(WizardForm);
with pnl do
begin
Align:= alClient;
Parent:= WizardForm;
end;
with WizardForm do
begin
with WizardBitmapImage do
begin
Align:= alClient;
Stretch:= True;
Parent:= pnl;
end;
NextButton.Parent:= pnl;
CancelButton.Parent:= pnl;
BackButton.Parent:= pnl;
Bevel.Parent:= pnl;
pnl.Repaint;
end;

if (CurPageID > wpWelcome) and (CurPageID < wpFinished) then
begin
WizardForm.Bevel1.Parent:= pnl;
with TLabel.Create(pnl) do
begin
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin

Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
if CurPageID = wpWelcome then WelcomePage;
if CurPageID = wpSelectDir then SelectDirPage;
if CurPageID = wpReady then ReadyPage;
if CurPageID = wpInstalling then InstallingPage;
if CurPageID = wpFinished then FinishedPage;
end;

murlakatamenka
24-06-2011, 16:52
xXDx, сори, я описАлся (
[_Code]
procedure CurPageChanged (CurPageID: Integer);
begin
WizardForm.NextButton.Refresh();
WizardForm.BackButton.Refresh();
end

valyok666
24-06-2011, 17:08
у меня созрел вопрос)у меня расширенная версия когда создаю скрипт у меня в инстле токо русский и английский а остальные он просто не видеьт хотя оние есть в скрипте в чём может быть проблема???

valyok666
24-06-2011, 19:04
как добавить разрешение установки на 64 bitные системы???
ArchitecturesInstallIn64BitMode=x64
видел такую тему но не робит

xXDx
24-06-2011, 23:09
murlakatamenka,
блин, тоже не помогает, может вы мой скрипт посмотрите и скажите, что в нем не так

Rain_ramon
24-06-2011, 23:29
Нужно написать сложный скрипт в inno, хорошая оплата.
Контакты:
skype: rain_rhcp
PS: Уже не актуально.

Gnom_aka_Lexander
25-06-2011, 21:04
xXDx, я посмотрел, все у тебя нормально, и если отключать часть, которая отвечает за вставку изображений, то кнопки заскинируются. Дело в том, что в качестве родителя указан у тебя визардформ, а он там полностью скрыт под панелями, для вставки изображений. тоесть тебе, для нормального скинирования кнопок нужно менять родителя скинов на каждой странице. В общем ты подвиг меня доработать свой скрипт, и включить в него скинирование кнопок :)
Третья версия скрипта для вставки изображений на все 13 страниц инсталлятора + замена стандартных дирбитмап и групбитмап + скинирование кнопок. Скачать (http://rghost.ru/12392361).
Четвертая версия - поддержка юникод и модуль скинирования кнопок от Шегората на 4 положения, с небольшой доработкой.
скачать (http://rghost.ru/12477681).

xXDx
25-06-2011, 21:17
Лександер,
Спасибо тебе большое, добрый человек :)

No4noylis
26-06-2011, 17:16
Помогите плиз!!!!! Делал инсталл с распаковкой архивов FreeArc. Когда доходит до создания записей реестра, выдает такую ошибку: 'D:\Dark Sector' is not a valid integer value.

R.i.m.s.k.y.
26-06-2011, 17:57
ну так прочитай что пишется - ты в реестр в целочисленной переменной integer value пытаешься пропихнуть строчку D:\Dark Sector

No4noylis
26-06-2011, 18:01
И что нужно сделать чтоб все работало???

R.i.m.s.k.y.
26-06-2011, 18:06
*лицопальма*
писать строковую переменную в реестр строчкой

No4noylis
26-06-2011, 18:07
КАК это сделать??? Что нужно в скрипт добавить???

R.i.m.s.k.y.
26-06-2011, 18:16
предположу самое страшное - почитать справку :read:
а вообще после воскресного пЫва мои телепатические способности резко снижаются :)

ёпт, найди в своем скрипте "D:\Dark Sector" и поменяй integer на string
90% это поможет

ARS_23
27-06-2011, 10:40
всем привет
кто-нибудь знает, как можно сделать 3d инсталлятор?
какую дополнительную библиотеку надо использовать?
или может у кого есть пример скрипта?
заранее спс

insombia
27-06-2011, 11:29
кто-нибудь знает, как можно сделать 3d инсталлятор? R.G.Recoding




© OSzone.net 2001-2012