Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
(в идеале разбить бы как то секцию [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;
кто-то может помочь мне с моей проблемой?
как с помощь 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;
можно скрипт на черный цвет инстала,белиэ буквы в нем?пли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, не приходилось работать с выше указаной программой.
День Добрый!
Так сказать, очередной вопрос хотелка, не взыщите строго...
Через реестр добавляю во такое в контекстное меню проводника, для простоты и удобства, но:
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 переменных среды, для устанавливаемого приложения?
Berline, если я правильно понял, то есть переменная {app}, которую в данном случае лучше записать вместо %PROGRAMFILES%\Far 2, и выбранный путь добавиться в реестр....
Habetdin
23-11-2009, 13:09
Berline, используйте константу {app} вместо %PROGRAMFILES%\Far 2
A1EXXX, есть переменная {app}, которую в данном случае лучше записать вместо %PROGRAMFILES% »
%ProgramFiles% - {pf}
А вот {app} это путь установки ;)
Да, спасибо!
Главное, куда копировать файло - переменную app я прописал, в то что и про реестр это проканает - не подумал!
%ProgramFiles% - {pf}
А вот {app} это путь установки »
Эт я знаю, но разве я написал что-то не так? :)
Упс, то я сначала недоглядел, потом исправил...
ADremLIN
23-11-2009, 16:15
Добавлены примеры использования
Функции изменяющие системный %PATH% (добавляет/удаляет <ваш_путь>) (http://forum.oszone.net/showpost.php?p=1267417)
Помогите разобраться: есть простенький скрипт с запросом второго диска для распаковки 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 - вообще не распаковывалось... что я не так делаю? :(
З.Ы. Окно во время распаковки не кликабельное, т.е. свернуть, переместить нельзя, - это можно как-то исправить???
Inno Setup ISCmplr (http://restools.hanzify.org/inno/Inno_ISCmplr_Setup091123(7zip).zip) 5.3.6 (build 091123) от ResTools (http://restools.hanzify.org/)
Пример кода »
у меня в Form Designer нету такой закладки, есть
Редактор кода но он показывает только:
var
Memo1: TMemo;
ListBox1: TListBox;
CheckBox1: TCheckBox;
а вот координаты и другие свойства объектов - нету, где их взять?
Версия 1.1.2c
нашел, оказывается в настройках нужно было поставить... Все спасибо!
Помогите разобраться: »
Лишний бэкслеш, т.е. надо так - 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;
Убрал, теперь всё как по маслу :tongue:
Буду пробовать добавить кликабельность ;)
Serega, как всегда на высоте, респект :good:
Нифига не получается :(
не получается »
а конкретней, что именно не получается?
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, но создавать файл каждый раз вручную надоедает :(
Снова я! Наверн боян... наверн примитив...
Сколько бы я не добавлял в секцию [Tasks] элементы, по дефолту всегда галочка стоит... Как ее снять? т.е. чтоб пир инсталле галочка не стояла на той задаче, на котороу ненад...
А итакж добавляю в [Run] программу, чтоб на последней странице была галочка - тож по дефолту она стоит...
Berline, добавь после каждого Flags: unchecked :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.