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

Serega
22-11-2009, 23:37
(в идеале разбить бы как то секцию [Tasks] на 2 странички: одна(с вариантами установки) до странички выбора компонентов, вторая - после.) »

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

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

[Components]
Name: a; Description: Моя программа™; Types: full custom
Name: a\a; Description: Руководство пользователя; Types: full
Name: a\a\a; Description: Русский; Flags: exclusive
Name: a\a\b; Description: English; Flags: exclusive
Name: a\b; Description: Справка; Types: full

[Tasks]
Name: main; Description: Я точно зарегистрированный пользователь :); GroupDescription: Вы точно зарегистрированный пользователь?; Flags: unchecked

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Components: a
Source: compiler:Examples\Readme-ru.txt; DestDir: {app}; Components: a\a\a
Source: compiler:Examples\Readme-en.txt; DestDir: {app}; Components: a\a\b
Source: compiler:Examples\MyProg.chm; DestDir: {app}; Components: a\b

[Code]
var
Page: TInputOptionWizardPage;
IsRegisteredUser: Boolean;

procedure InitializeWizard();
begin
// Создание страницы
Page:= CreateInputOptionPage(wpSelectDir, 'Лицензионное соглашение',
'Вы зарегистрированный пользователь?',
'Если вы зарегистрированы, поставьте флажок ниже и нажмите Далее.',False, False);
// Добавление значений
Page.Add('Я зарегистрированный пользователь');
// Задание первоначальных значений (не обязательно)
Page.Values[0]:= False;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID > Page.ID then
// Передача значений переменным
IsRegisteredUser:= Page.Values[0];
end;

RapMan
23-11-2009, 00:32
кто-то может помочь мне с моей проблемой?

Serega
23-11-2009, 00:51
как с помощь Form Designer можно заюзать свою страницу в Inno Setup ? »
Открываете Form Designer создаёте страницу и копируете код из вкладки Пример кода. Затем вставляете в свой скрипт.

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[CustomMessages]
SampleForm_Caption=SampleForm Caption
SampleForm_Description=SampleForm Description
SampleForm_Label1_Caption0=This is a demo label
SampleForm_Button1_Caption0=Button1
SampleForm_Button2_Caption0=Button2
SampleForm_ListBox1_Line0=Line1
SampleForm_ListBox1_Line1=Line2
SampleForm_ListBox1_Line2=Line3
SampleForm_ListBox1_Line3=Line4
SampleForm_ListBox1_Line4=Line5
SampleForm_CheckBox1_Caption0=CheckBox1
SampleForm_CheckBox2_Caption0=CheckBox2
SampleForm_CheckBox3_Caption0=CheckBox3
SampleForm_RadioButton1_Caption0=RadioButton1
SampleForm_RadioButton2_Caption0=RadioButton2

[Code]
var
Label1: TLabel;
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
ListBox1: TListBox;
NewProgressBar1: TNewProgressBar;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
Panel2: TPanel;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;

{ SampleForm_Activate }

procedure SampleForm_Activate(Page: TWizardPage);
begin
// enter code here...
end;

{ SampleForm_ShouldSkipPage }

function SampleForm_ShouldSkipPage(Page: TWizardPage): Boolean;
begin
Result := False;
end;

{ SampleForm_BackButtonClick }

function SampleForm_BackButtonClick(Page: TWizardPage): Boolean;
begin
Result := True;
end;

{ SampleForm_NextkButtonClick }

function SampleForm_NextButtonClick(Page: TWizardPage): Boolean;
begin
Result := True;
end;

{ SampleForm_CancelButtonClick }

procedure SampleForm_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
begin
// enter code here...
end;

{ SampleForm_CreatePage }

function SampleForm_CreatePage(PreviousPageId: Integer): Integer;
var
Page: TWizardPage;
begin
Page := CreateCustomPage(
PreviousPageId,
ExpandConstant('{cm:SampleForm_Caption}'),
ExpandConstant('{cm:SampleForm_Description}')
);

{ Label1 }
Label1 := TLabel.Create(Page);
with Label1 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:SampleForm_Label1_Caption0}');
Left := ScaleX(16);
Top := ScaleY(8);
Width := ScaleX(92);
Height := ScaleY(13);
end;

{ Panel1 }
Panel1 := TPanel.Create(Page);
with Panel1 do
begin
Parent := Page.Surface;
Left := ScaleX(8);
Top := ScaleY(32);
Width := ScaleX(393);
Height := ScaleY(193);
BevelInner := bvLowered;
BevelWidth := ScaleX(2);
BorderStyle := bsSingle;
TabOrder := 0;
end;

{ Button1 }
Button1 := TButton.Create(Page);
with Button1 do
begin
Parent := Panel1;
Caption := ExpandConstant('{cm:SampleForm_Button1_Caption0}');
Left := ScaleX(14);
Top := ScaleY(14);
Width := ScaleX(75);
Height := ScaleY(23);
TabOrder := 0;
end;

{ Button2 }
Button2 := TButton.Create(Page);
with Button2 do
begin
Parent := Panel1;
Caption := ExpandConstant('{cm:SampleForm_Button2_Caption0}');
Left := ScaleX(94);
Top := ScaleY(14);
Width := ScaleX(75);
Height := ScaleY(23);
TabOrder := 1;
end;

{ ListBox1 }
ListBox1 := TListBox.Create(Page);
with ListBox1 do
begin
Parent := Panel1;
Left := ScaleX(14);
Top := ScaleY(46);
Width := ScaleX(153);
Height := ScaleY(129);
Items.Add(ExpandConstant('{cm:SampleForm_ListBox1_Line0}'));
Items.Add(ExpandConstant('{cm:SampleForm_ListBox1_Line1}'));
Items.Add(ExpandConstant('{cm:SampleForm_ListBox1_Line2}'));
Items.Add(ExpandConstant('{cm:SampleForm_ListBox1_Line3}'));
Items.Add(ExpandConstant('{cm:SampleForm_ListBox1_Line4}'));
TabOrder := 2;
end;

{ NewProgressBar1 }
NewProgressBar1 := TNewProgressBar.Create(Page);
with NewProgressBar1 do
begin
Parent := Panel1;
Left := ScaleX(174);
Top := ScaleY(158);
Width := ScaleX(206);
Height := ScaleY(17);
Min := 0;
Max := 100;
Position := 50;
end;

{ CheckBox1 }
CheckBox1 := TCheckBox.Create(Page);
with CheckBox1 do
begin
Parent := Panel1;
Caption := ExpandConstant('{cm:SampleForm_CheckBox1_Caption0}');
Left := ScaleX(182);
Top := ScaleY(14);
Width := ScaleX(97);
Height := ScaleY(17);
Font.Height := ScaleY(-11);
Font.Name := 'Tahoma';
TabOrder := 3;
end;

{ CheckBox2 }
CheckBox2 := TCheckBox.Create(Page);
with CheckBox2 do
begin
Parent := Panel1;
Caption := ExpandConstant('{cm:SampleForm_CheckBox2_Caption0}');
Left := ScaleX(182);
Top := ScaleY(38);
Width := ScaleX(97);
Height := ScaleY(17);
TabOrder := 4;
end;

{ CheckBox3 }
CheckBox3 := TCheckBox.Create(Page);
with CheckBox3 do
begin
Parent := Panel1;
Caption := ExpandConstant('{cm:SampleForm_CheckBox3_Caption0}');
Left := ScaleX(182);
Top := ScaleY(62);
Width := ScaleX(97);
Height := ScaleY(17);
TabOrder := 5;
end;

{ Panel2 }
Panel2 := TPanel.Create(Page);
with Panel2 do
begin
Parent := Panel1;
Left := ScaleX(174);
Top := ScaleY(88);
Width := ScaleX(205);
Height := ScaleY(59);
TabOrder := 6;
end;

{ RadioButton1 }
RadioButton1 := TRadioButton.Create(Page);
with RadioButton1 do
begin
Parent := Panel2;
Caption := ExpandConstant('{cm:SampleForm_RadioButton1_Caption0}');
Left := ScaleX(16);
Top := ScaleY(8);
Width := ScaleX(113);
Height := ScaleY(17);
TabOrder := 0;
end;

{ RadioButton2 }
RadioButton2 := TRadioButton.Create(Page);
with RadioButton2 do
begin
Parent := Panel2;
Caption := ExpandConstant('{cm:SampleForm_RadioButton2_Caption0}');
Left := ScaleX(16);
Top := ScaleY(32);
Width := ScaleX(113);
Height := ScaleY(17);
TabOrder := 1;
end;

with Page do
begin
OnActivate := @SampleForm_Activate;
OnShouldSkipPage := @SampleForm_ShouldSkipPage;
OnBackButtonClick := @SampleForm_BackButtonClick;
OnNextButtonClick := @SampleForm_NextButtonClick;
OnCancelButtonClick := @SampleForm_CancelButtonClick;
end;

Result := Page.ID;
end;

{ SampleForm_InitializeWizard }

procedure InitializeWizard();
begin
SampleForm_CreatePage(wpWelcome);
end;

malyta
23-11-2009, 01:10
можно скрипт на черный цвет инстала,белиэ буквы в нем?плиc скажите!нашел все скрипти што мне нужны кроме етого! »
Пример скрипта (черный цвет инсталлятора, черные кнопки, темная папка на странице выбора установки приложения,растянутое фоновое изображение,растянутое изображение WizardSmallImage.bmp, изображение в левом нижнем углу,на странице завершения установки WizardImage.bmp )
ссылка (http://narod.ru/disk/15294023000/image.7z.html) на архив с изображениями которые используются в скрипте

http://img-fotki.yandex.ru/get/3900/extrimeplayers.0/0_1ecbc_4d69c1ae_L.jpg
http://img-fotki.yandex.ru/get/4106/extrimeplayers.0/0_1ecbd_6929c117_L.jpg
http://img-fotki.yandex.ru/get/4004/extrimeplayers.0/0_1ecbe_ff1cc51b_L.jpg


; http://forum.oszone.net/thread-148703-47.html
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{35133CCE-057F-4218-9C63-007B8E03A776}
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
WizardImageFile=D:\image\WizardImage.bmp
WizardSmallImageFile=D:\image\WizardSmallImage.bmp

[Languages]
Name: "default"; MessagesFile: "compiler:Default.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

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

[Files]
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\image\button.bmp"; DestDir: "{tmp}"; Flags: dontcopy
Source: "D:\image\black_folder.bmp"; DestDir: "{tmp}"; Flags: dontcopy
Source: "D:\image\logo.bmp"; DestDir: "{tmp}"; Flags: dontcopy
Source: "D:\image\background.bmp"; DestDir: "{tmp}"; Flags: dontcopy
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

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

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,My Program}"; Flags: nowait postinstall skipifsilent

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

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

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

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 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:=160 //Обязательно прописать оригинальный размер рисунка
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
OnMouseDown:=@ButtonLabelMouseDown
OnMouseUp:=@ButtonLabelMouseUp
end

Labl:=TLabel.Create(WizardForm) //Текст кнопок
Labl.Left:=13 //Указываем положение текста
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.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
end;

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

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

procedure CurPageChanged1(CurPageID: Integer);
begin
UpdateButton(WizardForm.BackButton,bidBack)
UpdateButton(WizardForm.NextButton,bidNext)
UpdateButton(WizardForm.CancelButton,bidCancel)
end;

procedure InitializeWizard1();
begin
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 InitializeWizard2();
begin
with WizardForm do begin
with MainPanel do
Height := Height - 1;
with WizardSmallBitmapImage do begin
Left := 0;
Top := 0;
Height := 55; //Размер рисунка
Width := 483; //
end;
with PageNameLabel do begin
Font.Name := 'Tahoma'
Width := Width - 483; //Поставьте здесь значения на 0, если хотите вернуть текст
Left := Left + 483; //
end;
with PageDescriptionLabel do begin
Font.Name := 'Tahoma'
Width := Width - 483; //Поставьте здесь значения на 0, если хотите вернуть текст
Left := Left + 483; //
end;
end;
end;

const
Color = clblack;

procedure InitializeWizard3();
begin
WizardForm.PageNameLabel.Font.Color:=clWhite;
WizardForm.Font.Color:=clWhite;
WizardForm.Color:=Color;
WizardForm.WelcomePage.Color:=Color;
WizardForm.InnerPage.Color:=Color;
WizardForm.FinishedPage.Color:=Color;
WizardForm.LicensePage.Color:=Color;
WizardForm.PasswordPage.Color:=Color;
WizardForm.InfoBeforePage.Color:=Color;
WizardForm.UserInfoPage.Color:=Color;
WizardForm.SelectDirPage.Color:=Color;
WizardForm.SelectComponentsPage.Color:=Color;
WizardForm.SelectProgramGroupPage.Color:=Color;
WizardForm.SelectTasksPage.Color:=Color;
WizardForm.ReadyPage.Color:=Color;
WizardForm.PreparingPage.Color:=Color;
WizardForm.InstallingPage.Color:=Color;
WizardForm.InfoAfterPage.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.DiskSpaceLabel.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.GroupEdit.Color:=Color;
WizardForm.PasswordLabel.Color:=Color;
WizardForm.PasswordEdit.Color:=Color;
WizardForm.PasswordEditLabel.Color:=Color;
WizardForm.ReadyMemo.Color:=Color;
WizardForm.TypesCombo.Color:=Color;
WizardForm.WelcomeLabel1.Color:=Color;
WizardForm.InfoBeforeClickLabel.Color:=Color;
WizardForm.MainPanel.Color:=Color;
WizardForm.PageNameLabel.Color:=Color;
WizardForm.PageDescriptionLabel.Color:=Color;
WizardForm.ReadyLabel.Color:=Color;
WizardForm.FinishedLabel.Color:=Color;
WizardForm.YesRadio.Color:=Color;
WizardForm.NoRadio.Color:=Color;
WizardForm.WelcomeLabel2.Color:=Color;
WizardForm.LicenseLabel1.Color:=Color;
WizardForm.InfoAfterClickLabel.Color:=Color;
WizardForm.ComponentsList.Color:=Color;
WizardForm.ComponentsDiskSpaceLabel.Color:=Color;
WizardForm.BeveledLabel.Color:=Color;
WizardForm.StatusLabel.Color:=Color;
WizardForm.FilenameLabel.Color:=Color;
WizardForm.SelectDirLabel.Color:=Color;
WizardForm.SelectStartMenuFolderLabel.Color:=Color;
WizardForm.SelectComponentsLabel.Color:=Color;
WizardForm.SelectTasksLabel.Color:=Color;
WizardForm.LicenseAcceptedRadio.Color:=Color;
WizardForm.LicenseNotAcceptedRadio.Color:=Color;
WizardForm.UserInfoNameLabel.Color:=Color;
WizardForm.UserInfoNameEdit.Color:=Color;
WizardForm.UserInfoOrgLabel.Color:=Color;
WizardForm.UserInfoOrgEdit.Color:=Color;
WizardForm.PreparingLabel.Color:=Color;
WizardForm.FinishedHeadingLabel.Color:=Color;
WizardForm.UserInfoSerialLabel.Color:=Color;
WizardForm.UserInfoSerialEdit.Color:=Color;
WizardForm.TasksList.Color:=Color;
WizardForm.RunList.Color:=Color;
WizardForm.SelectDirBrowseLabel.Color:=Color;
WizardForm.SelectStartMenuFolderBrowseLabel.Color:=Color;
end;

procedure InitializeWizard4();
begin
ExtractTemporaryFile('black_folder.bmp');
WizardForm.SelectDirBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\black_folder.bmp'));
WizardForm.SelectDirBitmapImage.AutoSize:=true;
WizardForm.SelectGroupBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\black_folder.bmp'));
WizardForm.SelectGroupBitmapImage.AutoSize:=true;
end;

var
LogoImage:TBitmapImage;
LogoLabel: TLabel;
LogoPanel: TPanel;

procedure LogoOnClick(Sender: TObject);
var ReturnCode: Integer;
begin
ShellExec('open', 'http://сайт.ру', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;

procedure InitializeWizard5();
begin
ExtractTemporaryFile('logo.bmp');
LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(5);
Top := ScaleY(320);
Width := ScaleX(161);
Height := ScaleY(36);
BevelOuter := bvNone;
end;

LogoImage := TBitmapImage.Create(WizardForm);
with LogoImage do
begin
Parent := LogoPanel;
Left := ScaleX(0);
Top := ScaleY(0);
AutoSize:=true;
ReplaceColor:=clFuchsia;
ReplaceWithColor:=clBtnFace;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo.bmp'));
end;

LogoLabel := TLabel.Create(WizardForm);
with LogoLabel do
begin
Parent := LogoPanel;
Width := LogoPanel.Width;
Height := LogoPanel.Height;
Transparent:=True;
Cursor := crHand;
OnClick:=@LogoOnClick;
end;
end;

var
WelcomeLabel1, WelcomeLabel2: TLabel;
BmpFile: TBitmapImage;

procedure InitializeWizard6();
begin
ExtractTemporaryFile('background.bmp');

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\background.bmp'));
BmpFile.SetBounds(0, 0, 483, 313);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.WelcomePage;

with WizardForm do
begin
WelcomeLabel1.Hide;
WelcomeLabel2.hide;
end;

WelcomeLabel1:= TLabel.Create(WizardForm);
with WelcomeLabel1 do
begin
WelcomeLabel1.Alignment:=taCenter;
Left:= ScaleX(176);
Top:= ScaleY(66);
Width:= ScaleX(301);
Height:= ScaleY(71);
AutoSize:= false;
Transparent:= true;
WordWrap:= true;
Font.Name:='Arial'
Font.Size:= 12;
Font.Color:=ClWhite
Parent:= WizardForm.WelcomePage;
Caption:= WizardForm.WelcomeLabel1.Caption;
end;

WelcomeLabel2:=TLabel.Create(WizardForm);
with WelcomeLabel2 do
begin
WelcomeLabel2.Alignment:=taCenter;
Top:= ScaleY(136);
Left:= ScaleX(176);
Width:= ScaleX(301);
Height:= ScaleY(300);
AutoSize:= false;
WordWrap:= true;
Font.Color:=ClWhite
Font.Name:='Tahoma'
Transparent:= true;
Parent:= WizardForm.WelcomePage;
Caption:= WizardForm.WelcomeLabel2.Caption;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
CurPageChanged1(CurPageID);
end;

procedure InitializeWizard();
begin
InitializeWizard1();
InitializeWizard2();
InitializeWizard3();
InitializeWizard4();
InitializeWizard5();
InitializeWizard6();
end;

RapMan, не приходилось работать с выше указаной программой.

Berline
23-11-2009, 10:29
День Добрый!
Так сказать, очередной вопрос хотелка, не взыщите строго...
Через реестр добавляю во такое в контекстное меню проводника, для простоты и удобства, но:
Root: HKCR; SubKey: Directory\shell\FarHere; ValueType: string; ValueData: Open Far Here; Flags: uninsdeletekey
Root: HKCR; SubKey: Directory\shell\FarHere\command; ValueType: expandsz; ValueData: """%PROGRAMFILES%\Far 2\Far.exe"" ""%1"""; Flags: uninsdeletekey
Root: HKCR; SubKey: Drive\shell\FarHere; ValueType: string; ValueData: Open Far Here; Flags: uninsdeletekey
Root: HKCR; SubKey: Drive\shell\FarHere\command; ValueType: expandsz; ValueData: """%PROGRAMFILES%\Far 2\Far.exe"" ""%1"""; Flags: uninsdeletekey
Чтоб это сработало, нужно запретить инсталлятору выбирать путь установки, а следовательно, не очень хорошо...
Можно ли как-то реализовать через код, чтобы он автоматически подставлял путь той папки, куда выбрали установить программу, в момент инсталла?

***

И всетки как обновлять корректно значение переменной Path переменных среды, для устанавливаемого приложения?

A1EXXX
23-11-2009, 12:54
Berline, если я правильно понял, то есть переменная {app}, которую в данном случае лучше записать вместо %PROGRAMFILES%\Far 2, и выбранный путь добавиться в реестр....

Habetdin
23-11-2009, 13:09
Berline, используйте константу {app} вместо %PROGRAMFILES%\Far 2
A1EXXX, есть переменная {app}, которую в данном случае лучше записать вместо %PROGRAMFILES% »
%ProgramFiles% - {pf}
А вот {app} это путь установки ;)

Berline
23-11-2009, 13:23
Да, спасибо!
Главное, куда копировать файло - переменную app я прописал, в то что и про реестр это проканает - не подумал!

A1EXXX
23-11-2009, 13:27
%ProgramFiles% - {pf}
А вот {app} это путь установки »
Эт я знаю, но разве я написал что-то не так? :)
Упс, то я сначала недоглядел, потом исправил...

ADremLIN
23-11-2009, 16:15
Добавлены примеры использования

Функции изменяющие системный %PATH% (добавляет/удаляет <ваш_путь>) (http://forum.oszone.net/showpost.php?p=1267417)

A1EXXX
23-11-2009, 18:35
Помогите разобраться: есть простенький скрипт с запросом второго диска для распаковки FreeArc:
#define MyAppName "Test"
#define MyAppVerName "Test"
#define MyAppExeName "Test.exe"

[Setup]
AppName={#MyAppName}
AppVerName={#MyAppName}
DefaultDirName={pf}\{#MyAppName}
DirExistsWarning=no
;DisableReadyPage=true
ShowLanguageDialog=auto
OutputBaseFilename=setup
OutputDir=.
UninstallDisplayIcon={app}\{#MyAppExeName}
DefaultGroupName={#MyAppName}
InternalCompressLevel=none
Compression=none

[UninstallDelete]
Type: filesandordirs; Name: {app}

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

[Files]
Source: C:\Program Files\FreeArc\bin\Arc.exe; DestDir: {tmp}; Flags: dontcopy

[CustomMessages]
ExtrError=Произошла ошибка во время извлечения данных. Установка будет прервана.

[Code]
var
SecondProgressBar: TNewProgressBar;

procedure InitializeWizard();
begin
WizardForm.FileNameLabel.Hide;
WizardForm.StatusLabel.Top:=ScaleY(81);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.StatusLabel.Width:=ScaleX(262);
WizardForm.ProgressGauge.Top:=ScaleY(100);
WizardForm.ProgressGauge.Left:=ScaleX(155);
WizardForm.ProgressGauge.Width:=ScaleX(262);

SecondProgressBar := TNewProgressBar.Create(WizardForm);
with SecondProgressBar do
begin
Parent := WizardForm.InstallingPage;
Left := ScaleX(0);
Top := ScaleY(100);
Width := ScaleX(150);
Height := ScaleY(21);
Min := 0;
Max := 13; //задается как (кол-во распаковываемых архивов * 3) + 1
end;
end;

procedure PlsInsertNextDisk(num: integer; CheckedFile: string);
var Capt:string;
begin
CheckedFile:=ExpandConstant(CheckedFile);
if not FileExists(CheckedFile) then begin
Capt:='Пожалуйста, вставьте диск %n, содержащий файл %f и нажмите ОК для продолжения установки.';
StringChange(Capt, '%n', inttostr(num));
StringChange(Capt, '%f', ExtractFileName(CheckedFile));
MsgBox(Capt, mbInformation, MB_OK);
PlsInsertNextDisk(num, CheckedFile);
end;
end;

procedure ExtractArc(arcArchName,arcDestDir:string);
var ResCode:integer;
begin
WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles);
Exec(ExpandConstant('{tmp}\arc.exe'), 'x '+AddQuotes(ExpandConstant(arcArchName))+' -y -dp'+AddQuotes(ExpandConstant(arcDestDir)), '', SW_HIDE, ewWaitUntilTerminated, ResCode);
if (ResCode <> 0) then begin
MsgBox(ExpandConstant('{cm:ExtrError}'), mbCriticalError, MB_OK);
SecondProgressBar.Hide;
DelTree(ExpandConstant('{app}'), True, True, True);
Abort;
end else
SecondProgressBar.Position:= SecondProgressBar.Position+3
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then begin
WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles);
ExtractTemporaryFile('arc.exe');
SecondProgressBar.Position:=SecondProgressBar.Position+1;

ExtractArc('{src}\data-1.arc','{app}\');
ExtractArc('{src}\data-2.arc','{app}\');

PlsInsertNextDisk(2, '{src}\data-3.arc'); //если data4.arc не найден в корне диска, просим второй диск
ExtractArc('{src}\data-3.arc','{app}\');
ExtractArc('{src}\data-4.arc','{app}\');
PlsInsertNextDisk(1, '{src}\data-1.arc'); //снова просим первый диск
end;
end;
Если пытаюсь установить в папку по умолчанию (именно этого скрипта) - не распаковывается, ошибка! Если, например, меняю путь на D:\Games\Test - распаковывается!
Теперь самое ужасное: использую этот скрипт для игры - ни в какую папку, ни на какой диск распаковка не идёт!!! Пробовал на одних и тех же архивах! Help! :(
Serega, как-то пробовал ваш скрипт FreeArc - вообще не распаковывалось... что я не так делаю? :(
З.Ы. Окно во время распаковки не кликабельное, т.е. свернуть, переместить нельзя, - это можно как-то исправить???

A1EXXX
23-11-2009, 18:52
Inno Setup ISCmplr (http://restools.hanzify.org/inno/Inno_ISCmplr_Setup091123(7zip).zip) 5.3.6 (build 091123) от ResTools (http://restools.hanzify.org/)

RapMan
23-11-2009, 19:03
Пример кода »
у меня в Form Designer нету такой закладки, есть
Редактор кода но он показывает только:

var
Memo1: TMemo;
ListBox1: TListBox;
CheckBox1: TCheckBox;


а вот координаты и другие свойства объектов - нету, где их взять?
Версия 1.1.2c

нашел, оказывается в настройках нужно было поставить... Все спасибо!

A1EXXX
23-11-2009, 20:24
:search: :sorry:

Serega
23-11-2009, 22:07
Помогите разобраться: »
Лишний бэкслеш, т.е. надо так - ExtractArc('{src}\data-1.arc','{app}'); и т.д.

как-то пробовал ваш скрипт FreeArc - вообще не распаковывалось... что я не так делаю? »
У меня всё нормально распаковывается...

Окно во время распаковки не кликабельное, т.е. свернуть, переместить нельзя, - это можно как-то исправить??? »
При использовании ewWaitUntilTerminated окно и будет не кликабельным...
Выход из ситуации - это запускать распаковку без ожидания, плюс добавить процедуру в которой проверять в цикле список процессов и если arc.exe есть, то делать ожидание, скажем 200-300 мс.
Процесс можно проверять через ISTask.dll или через функцию IsProgRunning, из этого скрипта (правда работает не на всех версиях Windows):

; В Диспетчере задач, вкладка Процессы, присутствует MyProc.exe.
; Как его остановить программно, аналогично тому, как это делает кнопка Завершить процесс в Диспетчере?
; Данный пример показывает, как проверить работает ли программа и если необходимо, то завершить её.
; Не уверен, что будет работать на всех версиях Windows...

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes
VersionInfoCopyright=Serega, serg_0675@mail.ru

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

[Code]
var
ResultCode: Integer;

function IsProgRunning(ProgName: string): Boolean;
// функция определяет, запущенно ли приложение
var
Size: Integer;
begin
Result:= False;
Exec('cmd', '/c tasklist /fi "IMAGENAME eq ' + ProgName + '" >"' +
ExpandConstant('{tmp}\RunList"'), '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
if FileSize(ExpandConstant('{tmp}\RunList'), Size) then
if Size > 0 then Result:= True;
end;

function CloseProg(ProgName: string; Child: Boolean): Boolean;
// функция завершает работающее приложение со всеми дочерними (Child) процессами
var
Tree: string;
begin
Result:= False;
if Child then Tree:= ' /t' else Tree:= '';
Exec('cmd', '/c taskkill /f' + Tree + ' /im ' + ProgName, '', SW_HIDE,
ewWaitUntilTerminated, ResultCode);
if not IsProgRunning(ProgName) then Result:= True;
end;

function InitializeSetup(): Boolean;
begin
Result:= False;
if Exec(ExpandConstant('{win}\notepad.exe'), '', '', SW_SHOWMINIMIZED, ewNoWait, ResultCode) then
if IsProgRunning('notepad.exe') then
if MsgBox('Обнаружена работающая программа notepad. Закрыть её?',
mbConfirmation, MB_YESNO) = IDYES then
if CloseProg('notepad.exe', True) then
begin
MsgBox('Программа успешно завершена.', mbInformation, MB_OK)
Result:= True;
end
else MsgBox('К сожалению, программу завершить не удалось.', mbInformation, MB_OK);
end;

A1EXXX
23-11-2009, 22:07
Убрал, теперь всё как по маслу :tongue:
Буду пробовать добавить кликабельность ;)
Serega, как всегда на высоте, респект :good:

Нифига не получается :(

Serega
23-11-2009, 22:48
не получается »
а конкретней, что именно не получается?

A1EXXX
23-11-2009, 22:55
Serega, не знаю, как применить это в моём случае... :( Очень нужна помощь гуру :blush:
[hr]
Можно ли в этом коде: [Dirs]
Name: "{app}"; Attribs: system; AfterInstall: CreateIni();

[Files]
Source: C:\icon.ico; DestDir: {app}

[Code]
procedure CreateIni();
begin
SaveStringsToFile(ExpandConstant('{app}\Desktop.ini'), ['[.ShellClassInfo]',
'IconFile=icon.ico',
'IconIndex=0'], False)
end; добавить файлу Desctop.ini атрибуты system и hidden. Альтернативку нашёл: Source: "C:\Desktop.ini"; DestDir: "{app}"; Attribs: system hidden, но создавать файл каждый раз вручную надоедает :(

Berline
24-11-2009, 12:07
Снова я! Наверн боян... наверн примитив...
Сколько бы я не добавлял в секцию [Tasks] элементы, по дефолту всегда галочка стоит... Как ее снять? т.е. чтоб пир инсталле галочка не стояла на той задаче, на котороу ненад...
А итакж добавляю в [Run] программу, чтоб на последней странице была галочка - тож по дефолту она стоит...

A1EXXX
24-11-2009, 12:26
Berline, добавь после каждого Flags: unchecked :)




© OSzone.net 2001-2012