Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
neorom,
[Code]
var
QuickLaunchIcon: TCheckBox;
function MakeQuickLaunchIcon: Boolean;
begin
Result := QuickLaunchIcon.Checked;
end;
procedure InitializeWizard();
begin
WizardForm.ComponentsDiskSpaceLabel.Hide;
QuickLaunchIcon := TCheckBox.Create(WizardForm);
with QuickLaunchIcon do
begin
Parent := WizardForm.ComponentsDiskSpaceLabel.Parent;
Caption := 'Создать значок в Панели быстрого запуска';
SetBounds(WizardForm.ComponentsDiskSpaceLabel.Left, WizardForm.ComponentsDiskSpaceLabel.Top, WizardForm.ComponentsDiskSpaceLabel.Width, WizardForm.ComponentsDiskSpaceLabel.Height)
end;
end;
saurn Извините, но чекбокс не отображался на странице SelectComponentsPage.
neorom, добавьте в скрипт хотя бы один компонент, в секции [Components], чтобы создалась страница компонентов, тогда чекбокс увидите.
добавьте в скрипт хотя бы один компонент, в секции [Components], чтобы создалась страница компонентов, тогда чекбокс увидите »
На странице я стараюсь сделать вывод чекбокса без секции [Components], эсть только секции [Files] та [Icon] с которих береться файли.
neorom, если в скрипте не указан ни один компонент в секции [Components], страница компонентов создана не будет, так как надобность в ней отпадает, логично? Вы хотите разместить контрол на странице выбора компонентов, но при этом ваш установщик компонетов не содержит. Выход: размещайте контрол на другой странице.
размещайте контрол на другой странице »
На какой странице именно ?
neorom, на любой странице, которая есть в вашем установщике.
Parent := Страница мастера;
Как создать пустую страницу, которая бы ишла после SelectDirPage, бо у меня ни как не получаэться.
neorom,
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Code]
var
MyPage: TWizardPage;
procedure InitializeWizard();
begin
MyPage := CreateCustomPage(wpSelectDir, 'ISCustomPage1_Caption', 'ISCustomPage1_Description');
end;
insombia
06-05-2013, 15:09
ребята,протестируйте инсталл,нету ли багов? http://rghost.ru/45801868
insombia
1. Со стартовой страницей надобы что-то сделать, текст сливается с картинкой и выглядит, как грязь.
2. При отмене инсталл аварийно завершает работу. Где-то косяк в скрипте.
insombia
06-05-2013, 17:31
saurn нашел баг,это из-за скина,не хватало DeinitializeSetup в коде
Может кто то поправить мой скрип, как при розположения родиобутона менялось фото (у верху бутон - одно фото, в низу - другоэ) фото с права от центра. Оба фота имеют одинакивиэ розмири http://s3.share.te.ua/501794/radiobuton.JPG (http://s3.share.te.ua/b501794/radiobuton.JPG)
[Setup]
AppName=IDM 6.15 Build 10 Final
AppVerName=Internet Download Manager
DefaultDirName={pf}\Internet Download Manager
DisableReadyPage=true
MergeDuplicateFiles=false
SolidCompression=false
Compression=lzma/ultra64
UseSetupLdr=true
AppID=Internet Download Manager
DefaultGroupName=Internet Download Manager
WizardImageFile=modern-wizard.bmp
WizardSmallImageFile=modern-header.bmp
[Languages]
Name: Ukrainian; MessagesFile: compiler:Languages\Ukrainian.isl
[Files]
Source: 01.bmp; Flags: dontcopy solidbreak
Source: instaler\*.*; DestDir: {app}; Check: installer
Source: portable\*.*; DestDir: {app}; Check: portable
[_Code]
var
ISCustomPage1: TWizardPage;
BitmapImage1: TBitmapImage;
NewGroupBox1: TNewGroupBox;
NewRadioButton1: TNewRadioButton;
NewRadioButton2: TNewRadioButton;
NewGroupBox2: TNewGroupBox;
NewCheckBox1: TNewCheckBox;
NewCheckBox2: TNewCheckBox;
NewCheckBox3: TNewCheckBox;
NewCheckBox4: TNewCheckBox;
function installer: Boolean;
begin
Result := NewRadioButton1.Checked;
end;
function portable: Boolean;
begin
Result := NewRadioButton2.Checked;
end;
function Icons1: Boolean;
begin
Result:= NewCheckBox1.Checked;
end;
function Icons2: Boolean;
begin
Result:= NewCheckBox2.Checked;
end;
function Icons3: Boolean;
begin
Result:= NewCheckBox3.Checked;
end;
function Icons4: Boolean;
begin
Result:= NewCheckBox4.Checked;
end;
procedure NewRadioButton1Click(Sender: TObject);
begin
NewCheckBox1.Checked:= NewRadioButton1.Checked;
NewCheckBox2.Checked:= NewRadioButton1.Checked; //Подставляем значение
NewCheckBox3.Checked:= NewRadioButton1.Checked;
NewCheckBox4.Checked:= NewRadioButton1.Checked;
NewCheckBox1.Enabled:= NewRadioButton1.Checked;
NewCheckBox2.Enabled:= NewRadioButton1.Checked;
NewCheckBox3.Enabled:= NewRadioButton1.Checked;
NewCheckBox4.Enabled:= NewRadioButton1.Checked;
end;
procedure NewRadioButton2Click(Sender: TObject);
begin
NewCheckBox1.Enabled:= NewRadioButton1.Checked;
NewCheckBox2.Enabled:= NewRadioButton1.Checked;
NewCheckBox3.Enabled:= NewRadioButton1.Checked;
NewCheckBox4.Enabled:= NewRadioButton1.Checked;
NewCheckBox1.Checked:= NewRadioButton1.Checked;
NewCheckBox2.Checked:= NewRadioButton1.Checked;
NewCheckBox3.Checked:= NewRadioButton1.Checked;
NewCheckBox4.Checked:= NewRadioButton1.Checked;
end;
procedure NewCheckBox1Click(Sender: TObject); forward;
procedure NewCheckBox2Click(Sender: TObject); forward;
procedure NewCheckBox3Click(Sender: TObject); forward;
procedure NewCheckBox4Click(Sender: TObject); forward;
procedure PageNameLabelClick(Sender: TObject); forward;
procedure RedesignWizardForm;
begin
ISCustomPage1 := CreateCustomPage(wpSelectComponents, 'Вибір типа компонентів встановлення', ' ...');
with ISCustomPage1.Surface do
begin
Name := 'ISCustomPage1';
end;
BitmapImage1 := TBitmapImage.Create(WizardForm);
with BitmapImage1 do
begin
Name := 'BitmapImage1';
Parent := ISCustomPage1.Surface;
Left := ScaleX(232);
Top := ScaleY(32);
Width := ScaleX(180);
Height := ScaleY(180);
ExtractTemporaryFile('01.bmp');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\01.bmp'));
end;
NewGroupBox1 := TNewGroupBox.Create(WizardForm);
with NewGroupBox1 do
begin
Name := 'NewGroupBox1';
Parent := ISCustomPage1.Surface;
Left := ScaleX(8);
Top := ScaleY(8);
Width := ScaleX(209);
Height := ScaleY(65);
Caption := 'Мова інтерфейсу за умовчанням';
end;
NewRadioButton1 := TNewRadioButton.Create(WizardForm);
with NewRadioButton1 do
begin
Name := 'NewRadioButton1';
Parent := NewGroupBox1;
Left := ScaleX(8);
Top := ScaleY(16);
Width := ScaleX(196);
Height := ScaleY(17);
Checked := True;
Caption := 'Встановлення звичайної версії';
OnClick := @NewRadioButton1Click;
end;
NewRadioButton2 := TNewRadioButton.Create(WizardForm);
with NewRadioButton2 do
begin
Name := 'NewRadioButton2';
Parent := NewGroupBox1;
Left := ScaleX(8);
Top := ScaleY(40);
Width := ScaleX(196);
Height := ScaleY(17);
Caption := 'Розпакування портативної версії';
OnClick := @NewRadioButton2Click;
end;
NewRadioButton1.TabOrder := 0;
NewRadioButton2.TabOrder := 1;
NewGroupBox2 := TNewGroupBox.Create(WizardForm);
with NewGroupBox2 do
begin
Name := 'NewGroupBox2';
Parent := ISCustomPage1.Surface;
Left := ScaleX(8);
Top := ScaleY(112);
Width := ScaleX(209);
Height := ScaleY(113);
Caption := 'Додатково';
end;
NewCheckBox1 := TNewCheckBox.Create(WizardForm);
with NewCheckBox1 do
begin
Name := 'NewCheckBox1';
Parent := NewGroupBox2;
Left := ScaleX(8);
Top := ScaleY(16);
Width := ScaleX(196);
Height := ScaleY(17);
Checked := True
Caption := 'Закріпити в панелі задач';
OnClick := @NewCheckBox1Click;
end;
NewCheckBox2 := TNewCheckBox.Create(WizardForm);
with NewCheckBox2 do
begin
Name := 'NewCheckBox2';
Parent := NewGroupBox2;
Left := ScaleX(8);
Top := ScaleY(40);
Width := ScaleX(196);
Height := ScaleY(17);
Checked := True
Caption := 'Закріпити в меню ПУСК';
OnClick := @NewCheckBox2Click;
end;
NewCheckBox3 := TNewCheckBox.Create(WizardForm);
with NewCheckBox3 do
begin
Name := 'NewCheckBox3';
Parent := NewGroupBox2;
Left := ScaleX(8);
Top := ScaleY(64);
Width := ScaleX(196);
Height := ScaleY(17);
Checked := True
Caption := 'Ярлик(и) на робочому столі';
OnClick := @NewCheckBox3Click;
end;
NewCheckBox4 := TNewCheckBox.Create(WizardForm);
with NewCheckBox4 do
begin
Name := 'NewCheckBox4';
Parent := NewGroupBox2;
Left := ScaleX(8);
Top := ScaleY(88);
Width := ScaleX(196);
Height := ScaleY(17);
Checked := True
Caption := 'Ярлики в меню ПУСК';
OnClick := @NewCheckBox4Click;
end;
NewCheckBox1.TabOrder := 0;
NewCheckBox2.TabOrder := 1;
NewCheckBox3.TabOrder := 2;
NewCheckBox4.TabOrder := 3;
NewGroupBox1.TabOrder := 0;
NewGroupBox2.TabOrder := 1;
with WizardForm.WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Width := ScaleX(150);
end;
with WizardForm.PageDescriptionLabel do
begin
Left := ScaleX(200);
Top := ScaleY(27);
Width := ScaleX(293);
end;
with WizardForm.PageNameLabel do
begin
OnClick := @PageNameLabelClick;
Left := ScaleX(200);
Width := ScaleX(269);
end;
end;
procedure PageNameLabelClick(Sender: TObject);
begin
end;
procedure NewCheckBox1Click(Sender: TObject);
begin
end;
procedure NewCheckBox2Click(Sender: TObject);
begin
end;
procedure NewCheckBox3Click(Sender: TObject);
begin
end;
procedure NewCheckBox4Click(Sender: TObject);
begin
end;
procedure InitializeWizard();
begin
RedesignWizardForm;
end;
Добрый день. Воспользовался скриптом, взятым с этого сайта на свой шрифт в инсталляторе. Код вставил себе в скрипт, ошибок при компиляции нет, но в инсталле шрифт не изменился.
#define Font "Rurintania.ttf"
#define FontName "Rurintania"
[Setup]
RawDataResource=font:{#Font}
[code]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
function FindResource(hModule: THandle; lpName: String; lpType: Integer): THandle; external 'FindResource{#A}@kernel32.dll stdcall';
function LoadResource(hModule, hResInfo: THandle): THandle; external 'LoadResource@kernel32.dll stdcall';
function LockResource(hResData: THandle): Longint; external 'LockResource@kernel32.dll stdcall';
function SizeofResource(hModule, hResInfo: THandle): DWORD; external 'SizeofResource@kernel32.dll stdcall';
function AddFontMemResourceEx(pbFont: Longint; cbFont: DWORD; pdv: Longint; var pcFonts: DWORD): THandle; external 'AddFontMemResourceEx@gdi32.dll stdcall';
function RemoveFontMemResourceEx(fh: THandle): BOOL; external 'RemoveFontMemResourceEx@gdi32.dll stdcall';
const
RT_RCDATA = 10;
var
fh, hResInfo, hResAddr: THandle;
pcFonts, iResSize: DWORD;
procedure InitializeWizard();
begin
if not FontExists('{#FontName}') then
begin
hResInfo := FindResource(HInstance, '_IS_FONT', RT_RCDATA);
iResSize := SizeofResource(HInstance, hResInfo);
hResAddr := LockResource(LoadResource(HInstance, hResInfo));
pcFonts := 1;
fh := AddFontMemResourceEx(hResAddr, iResSize, 0, pcFonts);
end;
//отсюда начинаем указывать наш шрифт
WizardForm.Font.Name := '{#FontName}';
end;
procedure DeinitializeSetup();
begin
RemoveFontMemResourceEx(fh);
end;
Брал этот код.
El Sanchez
07-05-2013, 17:38
Код вставил себе в скрипт, ошибок при компиляции нет, но в инсталле шрифт не изменился. »
GolD18, теперь покажите код, который на самом деле в вашем скрипте.
El Sanchez, http://rghost.ru/45831009 Без файлов. Просто скрипт. Напишите, если нужны будут файлы. Спасибо за помощь.
И объясните конкретней, что вам нужно, а то я не совсем понял. »
Нужно чтоби когда позначка RadioButton стоит уверху, било одне фото, когда позначка RadioButton стоит внезу - другоэ фото.
Примерно так чтоби било http://s3.share.te.ua/501805/foto.JPG (http://s3.share.te.ua/b501805/foto.JPG) а эсть так http://s3.share.te.ua/501806/foto2.JPG (http://s3.share.te.ua/b501806/foto2.JPG)
http://us.ua/1111239/
El Sanchez
07-05-2013, 20:24
#define Font "Agent Orange 2.ttf"
#define FontName "Agent Orange 2"
GolD18, имя файла шрифта может быть любым, тут ошибки нет, но само имя шрифта не должно меняться. Откройте шрифт (по умолчанию у шрифтов ассоциация со стандартным виндовым fontview) и в поле Имя шрифта увидите то, что нужно писать при объявлении константы FontName. У шрифта Agent Orange версии 2 имя без двойки.
neorom
[Code]
var
ISCustomPage1: TWizardPage;
BitmapImage1: TBitmapImage;
NewGroupBox1: TNewGroupBox;
NewRadioButton1: TNewRadioButton;
NewRadioButton2: TNewRadioButton;
NewGroupBox2: TNewGroupBox;
NewCheckBox1: TNewCheckBox;
NewCheckBox2: TNewCheckBox;
NewCheckBox3: TNewCheckBox;
NewCheckBox4: TNewCheckBox;
ErrorCode: Integer;
function InitializeSetup(): Boolean;
begin
if not FileExists(ExpandConstant('{tmp}\01.bmp')) then ExtractTemporaryFile('01.bmp');
if not FileExists(ExpandConstant('{tmp}\02.bmp')) then ExtractTemporaryFile('02.bmp');
Result := True;
end;
function installer: Boolean;
begin
Result := NewRadioButton1.Checked;
end;
function portable: Boolean;
begin
Result := NewRadioButton2.Checked;
end;
function Icons1: Boolean;
begin
Result:= NewCheckBox1.Checked;
end;
function Icons2: Boolean;
begin
Result:= NewCheckBox2.Checked;
end;
function Icons3: Boolean;
begin
Result:= NewCheckBox3.Checked;
end;
function Icons4: Boolean;
begin
Result:= NewCheckBox4.Checked;
end;
procedure BevelLabelClick(Sender: TObject);
begin
ShellExec('open','http://toloka.hurtom.com','', '', SW_SHOW, ewNoWait, ErrorCode)
end;
procedure NewRadioButtonClick(Sender: TObject);
begin
case TNewRadioButton(Sender) of
NewRadioButton1:
begin
NewCheckBox1.Checked:= NewRadioButton1.Checked;
NewCheckBox2.Checked:= NewRadioButton1.Checked;
NewCheckBox3.Checked:= NewRadioButton1.Checked;
NewCheckBox4.Checked:= NewRadioButton1.Checked;
NewCheckBox1.Enabled:= NewRadioButton1.Checked;
NewCheckBox2.Enabled:= NewRadioButton1.Checked;
NewCheckBox3.Enabled:= NewRadioButton1.Checked;
NewCheckBox4.Enabled:= NewRadioButton1.Checked;
BitmapImage1.Bitmap.LoadFromFile(ExpandConstant('{tmp}\01.bmp'));
end;
NewRadioButton2:
begin
NewCheckBox1.Enabled:= NewRadioButton1.Checked;
NewCheckBox2.Enabled:= NewRadioButton1.Checked;
NewCheckBox3.Enabled:= NewRadioButton1.Checked;
NewCheckBox4.Enabled:= NewRadioButton1.Checked;
NewCheckBox1.Checked:= NewRadioButton1.Checked;
NewCheckBox2.Checked:= NewRadioButton1.Checked;
NewCheckBox3.Checked:= NewRadioButton1.Checked;
NewCheckBox4.Checked:= NewRadioButton1.Checked;
BitmapImage1.Bitmap.LoadFromFile(ExpandConstant('{tmp}\02.bmp'));
end;
end;
end;
procedure NewCheckBox1Click(Sender: TObject); forward;
procedure NewCheckBox2Click(Sender: TObject); forward;
procedure NewCheckBox3Click(Sender: TObject); forward;
procedure NewCheckBox4Click(Sender: TObject); forward;
procedure PageNameLabelClick(Sender: TObject); forward;
procedure RedesignWizardForm;
begin
ISCustomPage1 := CreateCustomPage(wpSelectComponents, 'Вибір типа компонентів встановлення', ' ...');
with ISCustomPage1.Surface do
begin
Name := 'ISCustomPage1';
end;
BitmapImage1 := TBitmapImage.Create(WizardForm);
with BitmapImage1 do
begin
Name := 'BitmapImage1';
Parent := ISCustomPage1.Surface;
Left := ScaleX(232);
Top := ScaleY(32);
Width := ScaleX(180);
Height := ScaleY(180);
end;
NewGroupBox1 := TNewGroupBox.Create(WizardForm);
with NewGroupBox1 do
begin
Name := 'NewGroupBox1';
Parent := ISCustomPage1.Surface;
Left := ScaleX(8);
Top := ScaleY(8);
Width := ScaleX(209);
Height := ScaleY(65);
Caption := 'Мова інтерфейсу за умовчанням';
end;
NewRadioButton1 := TNewRadioButton.Create(WizardForm);
with NewRadioButton1 do
begin
Name := 'NewRadioButton1';
Parent := NewGroupBox1;
Left := ScaleX(8);
Top := ScaleY(16);
Width := ScaleX(196);
Height := ScaleY(17);
Checked := True;
Caption := 'Встановлення звичайної версії';
OnClick := @NewRadioButtonClick;
end;
NewRadioButton2 := TNewRadioButton.Create(WizardForm);
with NewRadioButton2 do
begin
Name := 'NewRadioButton2';
Parent := NewGroupBox1;
Left := ScaleX(8);
Top := ScaleY(40);
Width := ScaleX(196);
Height := ScaleY(17);
Caption := 'Розпакування портативної версії';
OnClick := @NewRadioButtonClick;
end;
NewGroupBox2 := TNewGroupBox.Create(WizardForm);
with NewGroupBox2 do
begin
Name := 'NewGroupBox2';
Parent := ISCustomPage1.Surface;
Left := ScaleX(8);
Top := ScaleY(112);
Width := ScaleX(209);
Height := ScaleY(113);
Caption := 'Додатково';
end;
NewCheckBox1 := TNewCheckBox.Create(WizardForm);
with NewCheckBox1 do
begin
Name := 'NewCheckBox1';
Parent := NewGroupBox2;
Left := ScaleX(8);
Top := ScaleY(16);
Width := ScaleX(196);
Height := ScaleY(17);
Checked := True
Caption := 'Закріпити в панелі задач';
OnClick := @NewCheckBox1Click;
end;
NewCheckBox2 := TNewCheckBox.Create(WizardForm);
with NewCheckBox2 do
begin
Name := 'NewCheckBox2';
Parent := NewGroupBox2;
Left := ScaleX(8);
Top := ScaleY(40);
Width := ScaleX(196);
Height := ScaleY(17);
Checked := True
Caption := 'Закріпити в меню ПУСК';
OnClick := @NewCheckBox2Click;
end;
NewCheckBox3 := TNewCheckBox.Create(WizardForm);
with NewCheckBox3 do
begin
Name := 'NewCheckBox3';
Parent := NewGroupBox2;
Left := ScaleX(8);
Top := ScaleY(64);
Width := ScaleX(196);
Height := ScaleY(17);
Checked := True
Caption := 'Ярлик(и) на робочому столі';
OnClick := @NewCheckBox3Click;
end;
NewCheckBox4 := TNewCheckBox.Create(WizardForm);
with NewCheckBox4 do
begin
Name := 'NewCheckBox4';
Parent := NewGroupBox2;
Left := ScaleX(8);
Top := ScaleY(88);
Width := ScaleX(196);
Height := ScaleY(17);
Checked := True
Caption := 'Ярлики в меню ПУСК';
OnClick := @NewCheckBox4Click;
end;
with WizardForm.WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Width := ScaleX(150);
end;
with WizardForm.PageDescriptionLabel do
begin
Left := ScaleX(200);
Top := ScaleY(27);
Width := ScaleX(293);
end;
with WizardForm.PageNameLabel do
begin
OnClick := @PageNameLabelClick;
Left := ScaleX(200);
Width := ScaleX(269);
end;
end;
procedure PageNameLabelClick(Sender: TObject);
begin
end;
procedure NewCheckBox1Click(Sender: TObject);
begin
end;
procedure NewCheckBox2Click(Sender: TObject);
begin
end;
procedure NewCheckBox3Click(Sender: TObject);
begin
end;
procedure NewCheckBox4Click(Sender: TObject);
begin
end;
procedure InitializeWizard();
begin
RedesignWizardForm;
with WizardForm do
begin
with BeveledLabel do
begin
OnClick:=@BevelLabelClick;
Font.Color:=clBlue;
Enabled:=True;
Cursor:=crHand;
Font.Style:= [fsBold]
end;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
ISCustomPage1.ID: if NewRadioButton1.Checked then BitmapImage1.Bitmap.LoadFromFile(ExpandConstant('{tmp}\01.bmp'));
end;
end;
saurn спасибо.
P.S. Мне писали чтоби я сматрел у сборнике вопросов и ответов FAQ Ru-Board.chm, и я нашол много скриптов коториэ не роботают так как написано в описаниэ. (Я использую две версии розширениє версии компилятора остальной версии (ANSI i UNICODE ))И один скриптов. (Скрипт єтот не меняєт цвет и не єсть текст подчеркнутим при навидения мишки на него). Описаниэ - Как на BeveledLabel "повесить" ссылку, чтобы текст по умолчанию не был подчеркнут, а при наведении на текст, он подчеркивался и конечно, хотелось бы, менять цвет шрифта!
[Setup]
AppName=AppName
AppVerName=AppVerName
DefaultDirName={pf}\My Program
[Messages]
BeveledLabel= Copyright 2007 © Microsoft
[_Code]
procedure BevelLabelClick(Sender: TObject);
var ErrorCode: Integer;
begin
ShellExec('open','http://www.innosetup.com','', '', SW_SHOW, ewNoWait, ErrorCode)
end;
procedure InitializeWizard();
begin
with WizardForm do begin
with BeveledLabel do begin
OnClick:=@BevelLabelClick;
Font.Color:=clBlue;
Enabled:=True;
Cursor:=crHand;
end;
end;
end;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.