Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
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
murlakatamenka,
вот что пишет Invalid prototype for 'CurStepChanged'
valyok666
24-06-2011, 01:30
[Code]
procedure CurStepChanged1(CurStepID: Integer);
begin
WizardForm.NextButton.Refresh();
WizardForm.BackButton.Refresh();
end;
попробуй так
Доброго времени суток всем!
Уважаемые форумчане, не смог разобраться сам в нескольких вопросах, прошу помочь или ткнуть носом, если уже есть ответ.
1. Можно ли сделать инсталлятор с ограниченным количеством установок? И после этого выдавалось сообщение в самом начале установки: "Вы исчерпали лимит установок, скачайте новую версию".
2. Так же интересует скрипт на работоспособность инсталлятора на ограниченное кол-во времени, например 2 недели. И тоже выдавалось сообщение: "Срок действия установщика истек, скачайте новую версию"
3. Подскажите, как сделать следующее - есть 4 варианта одной программы. Необходимо, в начале установки задать вопрос и варианты ответа ( Нужна ли Вам поддержка определенной программы? - "ДА", "НЕТ") и далее переход на следующую страницу с учетом ответа. Т. е. если человек ответил "ДА" он переходит на один вариант страницы и продолжает установку выбирая дополнительные функции, если ответил "НЕТ", то переходит на другую страницу с другими вариантами дополнительных функций.
4. Как вообще можно сделать, чтобы на одной странице установщика, был только один вариант выбора какой-либо из предлагаемых дополнительных функций. При нажатии на кнопку далее, следующая страница и следующий вариант.
Надеюсь на поддержку с Вашей стороны. )
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
видел такую тему но не робит
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).
Лександер,
Спасибо тебе большое, добрый человек :)
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% это поможет
всем привет
кто-нибудь знает, как можно сделать 3d инсталлятор?
какую дополнительную библиотеку надо использовать?
или может у кого есть пример скрипта?
заранее спс
insombia
27-06-2011, 11:29
кто-нибудь знает, как можно сделать 3d инсталлятор? R.G.Recoding
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.