Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: noiseless
Дата сообщения: 10.04.2009 07:10
jetrotools
[more=Попробуй так]
; СМ. ДОКУМЕНТАЦИЮ ДЛЯ ИЗУЧЕНИЯ ДЕТАЛЕЙ ОТНОСИТЕЛЬНО СОЗДАНИЯ ФАЙЛОВ СКРИПТА INNO SETUP!

#define MyAppName "SPORE™"
#define MyAppVerName "Version 1.5"
#define MyAppPublisher "XXX, Inc."
#define MyAppExeName "SporeApp.exe"

[Setup]
AppName={#MyAppName}
AppVerName={#MyAppVerName}
AppPublisher={#MyAppPublisher}
DefaultDirName=D:\Games\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=true
LicenseFile=C:\Program Files\Electronic Arts\SPORE\Sporebin\readme.txt
OutputDir=C:\Output
OutputBaseFilename=setup
Compression=none
SolidCompression=true
InternalCompressLevel=none
DiskSpanning=true
DiskSliceSize=700000000

[Languages]
Name: russian; MessagesFile: compiler:Default.isl

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

[Files]
Source: C:\Program Files\Electronic Arts\SPORE_BP1\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
Source: C:\Program Files\Electronic Arts\SPORE\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
; ОТМЕТЬТЕ: Не используйте "Флажки: Проигнорировать версию" на любых общедоступных системных файлах

[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon
Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: quicklaunchicon

[Run]
Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#MyAppName}}; Flags: nowait postinstall skipifsilent
[/more]
ruslanxxx
Сдается мне, что никак.
Автор: Yoldosh
Дата сообщения: 10.04.2009 07:17
может кто нибудь помочь полях отмеченним красним била видна толька картинка [more][Setup]
AppName=Vin Diesel Wheelman
AppVerName=Vin Diesel Wheelman
DefaultDirName={pf}\Vin Diesel Wheelman
OutputDir=E:\Proekt
WizardImageFile=E:\Logo\WizardImageFile.bmp
WizardSmallImageFile=E:\Logo\WizardSmallImageFile.bmp
DisableReadyPage=true
UninstallFilesDir={app}\Uninstall

[Languages]
Name: "ENG"; MessagesFile: "compiler:Default.isl"
Name: "RUS"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: E:\Logo\logo.bmp; DestDir: {tmp}; Flags: dontcopy
Source: "E:\bmp.bmp"; Flags: dontcopy;

[Run]
Filename: {src}\DirectX\dxsetup.exe; Parameters: /silent; StatusMsg: ExpandConstant('{cm:UP}'); Check: DirectX

[CustomMessages]
ENG.PAGE_CAPTION=Setup has finished installing Vin Diesel Wheelman on your computer.
RUS.PAGE_CAPTION=Программа Vin Diesel Wheelman установлена на Ваш компютер.
ENG.STR=Click Finish to exit Setup.
RUS.STR=Нажмите «Завершить», чтобы выйти из программы установки.
ENG.BUT=Install
RUS.BUT=Установить
ENG.SPACE=Available place on disk:
RUS.SPACE=Доступно места на диске:
ENG.SPACE1=Place is Required on disk:
RUS.SPACE1=Требуется места на диске:
ENG.DRT=Will Update DirectX
RUS.DRT=Обновить DirectX
ENG.UP=Goes the renovation DirectX...
RUS.UP=Идет обновление DirectX...

Code
var
Upload: TCheckBox;
bottom_img:TBitmapImage;
PageNameLabel, PageDescriptionLabel: TLabel;
WLabel1, WLabel2,
FLabel1, FLabel2, FLabel3: TLabel;
NeedSize:Integer;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
BmpFile: TBitmapImage;

function DirectX: Boolean;
begin
Result:=Upload.Checked;
end;

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption := ExpandConstant('{cm:SPACE} ')+ FloatToStr(round(FreeMB/1024*100)/100) + ' GB' else
FreeSpaceLabel.Caption := ExpandConstant('{cm:SPACE} ')+ IntToStr(FreeMB)+ ' MB';
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := False else
WizardForm.NextButton.Enabled := True; end;

procedure GetNeedSpaceCaption;
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := ExpandConstant('{cm:SPACE1} ')+ FloatToStr(round(NeedSize/1024*100)/100) + ' GB' else
NeedSpaceLabel.Caption := ExpandConstant('{cm:SPACE1} ')+ IntToStr(NeedSize)+ ' MB';
end;

procedure InitializeWizard();
begin
begin
ExtractTemporaryFile('bmp.bmp');
BmpFile := TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\bmp.bmp'));
BmpFile.Width := ScaleX(497);
BmpFile.Height := ScaleY(252);
BmpFile.Parent := WizardForm.SelectDirPage;
NeedSize := 7000;
ExtractTemporaryFile('logo.bmp');
bottom_img:= TBitmapImage.Create(WizardForm);
bottom_img.Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo.bmp'));
bottom_img.SetBounds(0, 315, 497, 48); {первые 2 параметра - координаты левогого верхнего угла по горизонтали и вертикали, дальше ширина и высота, до которой растянуть}
bottom_img.Parent:= WizardForm;
bottom_img.Stretch:= True;
WizardForm.WizardSmallBitmapImage.Left:=0;
WizardForm.WizardSmallBitmapImage.Width:=497;
WizardForm.WizardSmallBitmapImage.Height:=58;
WizardForm.PageDescriptionLabel.Width:=300;
WizardForm.PageNameLabel.Width:=300;
WizardForm.WelcomeLabel1.Hide;
WizardForm.WelcomeLabel2.Hide;
WizardForm.DiskSpaceLabel.Hide;
WizardForm.FinishedHeadingLabel.Hide;
WizardForm.FinishedLabel.Hide;
WizardForm.WizardBitmapImage.Width := 497;
WizardForm.WizardBitmapImage.Height := 314;

WLabel1 := TLabel.Create(WizardForm);
WLabel1.Left := ScaleX(176);
WLabel1.Top := ScaleY(16);
WLabel1.Width := ScaleX(301);
WLabel1.Height := ScaleY(54);
WLabel1.AutoSize := False;
WLabel1.WordWrap := True;
WLabel1.Font.Size := 12;
WLabel1.Font.Style := [fsBold];
WLabel1.Font.Color:= clblack;
WLabel1.ShowAccelChar := False;
WLabel1.Caption := WizardForm.WelcomeLabel1.Caption;
WLabel1.Transparent := True;
WLabel1.Parent := WizardForm.WelcomePage;

WLabel2 :=TLabel.Create(WizardForm);
WLabel2.Top := ScaleY(76);
WLabel2.Left := ScaleX(176);
WLabel2.Width := ScaleX(301);
WLabel2.Height := ScaleY(234);
WLabel2.AutoSize := False;
WLabel2.WordWrap := True;
WLabel2.Font.Color:= clblack;
WLabel2.ShowAccelChar := False;
WLabel2.Caption := WizardForm.WelcomeLabel2.Caption;
WLabel2.Transparent := True;
WLabel2.Parent := WizardForm.WelcomePage;

WizardForm.WizardBitmapImage2.Width := 497;
WizardForm.WizardBitmapImage2.Height := 314;

FLabel1 := TLabel.Create(WizardForm);
FLabel1.Left := ScaleX(176);
FLabel1.Top := ScaleY(16);
FLabel1.Width := ScaleX(301);
FLabel1.Height := ScaleY(54);
FLabel1.AutoSize := False;
FLabel1.WordWrap := True;
FLabel1.Font.Size := 12;
FLabel1.Font.Style := [fsBold];
FLabel1.Font.Color:= clblack;
FLabel1.ShowAccelChar := False;
FLabel1.Caption := WizardForm.FinishedHeadingLabel.Caption;
FLabel1.Transparent := True;
FLabel1.Parent := WizardForm.FinishedPage;

FLabel2 :=TLabel.Create(WizardForm);
FLabel2.Top := ScaleY(76);
FLabel2.Left := ScaleX(176);
FLabel2.Width := ScaleX(301);
FLabel2.Height := ScaleY(53);
FLabel2.AutoSize := False;
FLabel2.WordWrap := True;
FLabel2.Font.Color:= clblack;
FLabel2.ShowAccelChar := False;
FLabel2.Caption := ExpandConstant('{cm:PAGE_CAPTION}');
FLabel2.Transparent := True;
FLabel2.Parent := WizardForm.FinishedPage;

FLabel3 :=TLabel.Create(WizardForm);
FLabel3.Top := ScaleY(110);
FLabel3.Left := ScaleX(176);
FLabel3.Width := ScaleX(301);
FLabel3.Height := ScaleY(53);
FLabel3.AutoSize := False;
FLabel3.WordWrap := True;
FLabel3.Font.Color:= clblack;
FLabel3.ShowAccelChar := False;
FLabel3.Caption := ExpandConstant('{cm:STR}');
FLabel3.Transparent := True;
FLabel3.Parent := WizardForm.FinishedPage;
end ;
begin
with WizardForm do
begin
SelectDirBitmapImage.Hide;
DirBrowseButton.Left := DirBrowseButton.Left + ScaleX(40);
DirBrowseButton.Top := DirBrowseButton.Top + ScaleY(12);
DirEdit.Left := DirEdit.Left + ScaleX(40);
DirEdit.Top := DirEdit.Top + ScaleY(12);
SelectDirBrowseLabel.Left := SelectDirBrowseLabel.Left + ScaleX(40);
SelectDirBrowseLabel.Top := SelectDirBrowseLabel.Top + ScaleY(12);
SelectDirLabel.Left := ScaleX(40);
SelectDirLabel.Top := SelectDirLabel.Top + ScaleY(12);
end;
end;

begin
Upload := TCheckBox.Create(WizardForm);
with Upload do
begin
Parent := WizardForm.SelectDirPage;
Caption := ExpandConstant('{cm:DRT}');
Left := ScaleX(20);
Top := WizardForm.DirEdit.Top+35;
Width := ScaleX(400);
Height := ScaleY(80);
TabOrder := 0;
Checked := False;
end;
end;
begin
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(202);
Width := ScaleX(209);
Height := ScaleY(13);
end;

FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(220);
Width := ScaleX(209);
Height := ScaleY(13);
end;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
end;
begin
PageNameLabel := TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left := ScaleX(10);
Top := ScaleY(10);
Width := ScaleX(300);
Height := ScaleY(14);
AutoSize := False;
WordWrap := True;
Font.Color := clblack;
Font.Style := [fsBold];
Transparent := True;
Parent := WizardForm.MainPanel;
end;

PageDescriptionLabel := TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left := ScaleX(15);
Top := ScaleY(25);
Width := ScaleX(475);
Height := ScaleY(30);
AutoSize := False;
WordWrap := True;
Font.Color := clblack;
Transparent := True;
Parent := WizardForm.MainPanel;
end;

with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Top := ScaleY(0);
Width := Mainpanel.Width;
Height := MainPanel.Height;
end;
end;
end;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
var
Capt, SubCapt, WizCapt, TextRe, TextRepair, TextRemove: TNewStaticText;
begin
PageNameLabel.Caption := WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption := WizardForm.PageDescriptionLabel.Caption;
WizardForm.InnerNotebook.Left := ScaleX(40);
WizardForm.InnerNotebook.Top := ScaleY(72);
WizardForm.InnerNotebook.Width := ScaleX(417);
WizardForm.InnerNotebook.Height := ScaleY(237);
if CurPageID=wpSelectDir then begin
WizardForm.NextButton.Caption:= ExpandConstant('{cm:BUT}');
GetNeedSpaceCaption;
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False
begin
WizardForm.InnerNotebook.Left := ScaleX(0);
WizardForm.InnerNotebook.Top := ScaleY(60);
WizardForm.InnerNotebook.Width := ScaleX(497);
WizardForm.InnerNotebook.Height := ScaleY(252);
end;
end;end;[/more]
Автор: ChVL
Дата сообщения: 10.04.2009 07:18
В папке с программой имеется папка Langs с файлами локализаций. Их там много, и количество может меняться. Надо оставить один файл (он всегда имеет одно наименование, скажем, RU.dll), а остальные – удалить скопом. Как это прописать в скрипте?
Автор: noiseless
Дата сообщения: 10.04.2009 07:49
ChVL
Если в момент установки, то может так:
[Code]
var
iPath: string;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID = wpReady then
begin
if fileexists(ExpandConstant('{app}')+'\Langs\RU.dll') then
begin
renamefile(ExpandConstant('{app}')+'\Langs\RU.dll',ExpandConstant('{app}')+'\Langs\RU.ttt);
deletefile(ExpandConstant('{app}')+'\Langs\*.dll');
renamefile(ExpandConstant('{app}')+'\Langs\RU.ttt',ExpandConstant('{app}')+'\Langs\RU.dll);
end;
end;
Result := True;
end;
Автор: Serega0675
Дата сообщения: 10.04.2009 11:42
Yoldosh, [more=так]
Код: [Setup]
AppName=Vin Diesel Wheelman
AppVerName=Vin Diesel Wheelman
DefaultDirName={pf}\Vin Diesel Wheelman
OutputDir=E:\Proekt
WizardImageFile=E:\Logo\WizardImageFile.bmp
WizardSmallImageFile=E:\Logo\WizardSmallImageFile.bmp
DisableReadyPage=true
UninstallFilesDir={app}\Uninstall

[Languages]
Name: "ENG"; MessagesFile: "compiler:Default.isl"
Name: "RUS"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: 3.bmp; DestDir: {tmp}; Flags: dontcopy
Source: 1.bmp; Flags: dontcopy;

[Run]
Filename: {src}\DirectX\dxsetup.exe; Parameters: /silent; StatusMsg: ExpandConstant('{cm:UP}'); Check: DirectX

[CustomMessages]
ENG.PAGE_CAPTION=Setup has finished installing Vin Diesel Wheelman on your computer.
RUS.PAGE_CAPTION=Программа Vin Diesel Wheelman установлена на Ваш компютер.
ENG.STR=Click Finish to exit Setup.
RUS.STR=Нажмите «Завершить», чтобы выйти из программы установки.
ENG.BUT=Install
RUS.BUT=Установить
ENG.SPACE=Available place on disk:
RUS.SPACE=Доступно места на диске:
ENG.SPACE1=Place is Required on disk:
RUS.SPACE1=Требуется места на диске:
ENG.DRT=Will Update DirectX
RUS.DRT=Обновить DirectX
ENG.UP=Goes the renovation DirectX...
RUS.UP=Идет обновление DirectX...


Код:
var
Upload: TCheckBox;
bottom_img:TBitmapImage;
lblCheckBox, lblSelectDir, lblSelectDirBrowse: TLabel;
PageNameLabel, PageDescriptionLabel: TLabel;
WLabel1, WLabel2,
FLabel1, FLabel2, FLabel3: TLabel;
NeedSize:Integer;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
BmpFile: TBitmapImage;

function DirectX: Boolean;
begin
Result:=Upload.Checked;
end;

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption := ExpandConstant('{cm:SPACE} ')+ FloatToStr(round(FreeMB/1024*100)/100) + ' GB' else
FreeSpaceLabel.Caption := ExpandConstant('{cm:SPACE} ')+ IntToStr(FreeMB)+ ' MB';
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := False else
WizardForm.NextButton.Enabled := True;
end;

procedure GetNeedSpaceCaption;
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := ExpandConstant('{cm:SPACE1} ')+ FloatToStr(round(NeedSize/1024*100)/100) + ' GB' else
NeedSpaceLabel.Caption := ExpandConstant('{cm:SPACE1} ')+ IntToStr(NeedSize)+ ' MB';
end;

// задал процедуру, чтоб отмечался чебокс еси кликнуть по надписи lblCheckBox
procedure lblCheckBoxOnClick(Sender: TObject);
begin
if Upload.Checked = False then
Upload.Checked:= True else
Upload.Checked:= False;
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('1.bmp');
ExtractTemporaryFile('3.bmp');

NeedSize:= 7000;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.Width:= ScaleX(497);
BmpFile.Height:= ScaleY(252);
BmpFile.Parent:= WizardForm.SelectDirPage;


bottom_img:= TBitmapImage.Create(WizardForm);
bottom_img.Bitmap.LoadFromFile(ExpandConstant('{tmp}\3.bmp'));
{первые 2 параметра - координаты левогого верхнего угла по горизонтали и вертикали, дальше ширина и высота,
до которой растянуть}
bottom_img.SetBounds(0, 315, 497, 48);
bottom_img.Parent:= WizardForm;
bottom_img.Stretch:= True;

with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
WelcomeLabel1.Hide;
WelcomeLabel2.Hide;
DiskSpaceLabel.Hide;
SelectDirBitmapImage.Hide;
SelectDirBrowseLabel.Hide;
SelectDirLabel.Hide;
FinishedHeadingLabel.Hide;
FinishedLabel.Hide;

DirBrowseButton.Left:= DirBrowseButton.Left + ScaleX(40);
DirBrowseButton.Top:= DirBrowseButton.Top + ScaleY(12);
DirEdit.Left:= DirEdit.Left + ScaleX(40);
DirEdit.Top:= DirEdit.Top + ScaleY(12);

WizardBitmapImage.Width:= 497;
WizardBitmapImage.Height:= 314;
WizardBitmapImage2.Width:= 497;
WizardBitmapImage2.Height:= 314;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left:= Mainpanel.Left;
Top:= Mainpanel.Top;
Width:= Mainpanel.Width;
Height:= MainPanel.Height;
end;
end;
end;

WLabel1:= TLabel.Create(WizardForm);
with WLabel1 do
begin
Left:= ScaleX(176);
Top:= ScaleY(16);
Width:= ScaleX(301);
Height:= ScaleY(54);
AutoSize:= False;
WordWrap:= True;
Font.Size:= 12;
Font.Style:= [fsBold];
Font.Color:= clblack;
ShowAccelChar:= False;
Caption:= WizardForm.WelcomeLabel1.Caption;
Transparent:= True;
Parent:= WizardForm.WelcomePage;
end;

WLabel2:=TLabel.Create(WizardForm);
with WLabel2 do
begin
Top:= ScaleY(76);
Left:= ScaleX(176);
Width:= ScaleX(301);
Height:= ScaleY(234);
AutoSize:= False;
WordWrap:= True;
Font.Color:= clblack;
ShowAccelChar:= False;
Caption:= WizardForm.WelcomeLabel2.Caption;
Transparent:= True;
Parent:= WizardForm.WelcomePage;
end;

FLabel1:= TLabel.Create(WizardForm);
with FLabel1 do
begin
Left:= ScaleX(176);
Top:= ScaleY(16);
Width:= ScaleX(301);
Height:= ScaleY(54);
AutoSize:= False;
WordWrap:= True;
Font.Size:= 12;
Font.Style:= [fsBold];
Font.Color:= clblack;
ShowAccelChar:= False;
Caption:= WizardForm.FinishedHeadingLabel.Caption;
Transparent:= True;
Parent:= WizardForm.FinishedPage;
end;

FLabel2:=TLabel.Create(WizardForm);
with FLabel2 do
begin
Top:= ScaleY(76);
Left:= ScaleX(176);
Width:= ScaleX(301);
Height:= ScaleY(53);
AutoSize:= False;
WordWrap:= True;
Font.Color:= clblack;
ShowAccelChar:= False;
Caption:= ExpandConstant('{cm:PAGE_CAPTION}');
Transparent:= True;
Parent:= WizardForm.FinishedPage;
end;

FLabel3 :=TLabel.Create(WizardForm);
with FLabel3 do
begin
Top := ScaleY(110);
Left := ScaleX(176);
Width := ScaleX(301);
Height := ScaleY(53);
AutoSize := False;
WordWrap := True;
Font.Color:= clblack;
ShowAccelChar := False;
Caption := ExpandConstant('{cm:STR}');
Transparent := True;
Parent := WizardForm.FinishedPage;
end;

// уменьшил размер CheckBox'а, по другому никак
Upload:= TCheckBox.Create(WizardForm);
with Upload do
begin
Parent:= WizardForm.SelectDirPage;
Left:= WizardForm.DirEdit.Left;
Top:= WizardForm.DirEdit.Top + 35;
Width:= ScaleX(14);
Height:= ScaleY(14);
TabOrder:= 0;
Checked:= False;
end;

// создаём надпись для CheckBox'а
lblCheckBox:= TLabel.Create(WizardForm);
with lblCheckBox do
begin
Caption:= ExpandConstant('{cm:DRT}');
Left:= WizardForm.DirEdit.Left + 20;
Top:= WizardForm.DirEdit.Top + 35;
Width:= ScaleX(150);
Height:= ScaleY(13);
Transparent := True;
Parent:= WizardForm.SelectDirPage;
OnClick:= @lblCheckBoxOnClick;
end;

// создаём lblSelectDir
lblSelectDir:= TLabel.Create(WizardForm);
with lblSelectDir do
begin
Caption:= WizardForm.SelectDirLabel.Caption;
Left:= ScaleX(40);
Top:= WizardForm.SelectDirLabel.Top + ScaleY(12);
Width:= WizardForm.SelectDirLabel.Width;
Height:= WizardForm.SelectDirLabel.Height;
Transparent := True;
Parent:= WizardForm.SelectDirPage;
end;

// создаём lblSelectDirBrowse
lblSelectDirBrowse:= TLabel.Create(WizardForm);
with lblSelectDirBrowse do
begin
Caption:= WizardForm.SelectDirBrowseLabel.Caption;
Left:= ScaleX(40);
Top:= WizardForm.SelectDirBrowseLabel.Top + ScaleY(12);
Width:= WizardForm.SelectDirBrowseLabel.Width;
Height:= WizardForm.SelectDirBrowseLabel.Height;
WordWrap:= True;
Transparent:= True;
Parent:= WizardForm.SelectDirPage;
end;

NeedSpaceLabel:= TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent:= WizardForm.SelectDirPage;
Left:= WizardForm.DirEdit.Left;
Top:= ScaleY(202);
Width:= ScaleX(209);
Height:= ScaleY(13);
Transparent:= True;
end;

FreeSpaceLabel:= TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent:= WizardForm.SelectDirPage;
Left:= WizardForm.DirEdit.Left;
Top:= ScaleY(220);
Width:= ScaleX(209);
Height:= ScaleY(13);
Transparent:= True;
end;

WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption;
WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0;

PageNameLabel:= TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left:= ScaleX(10);
Top:= ScaleY(10);
Width:= ScaleX(300);
Height:= ScaleY(14);
AutoSize:= False;
WordWrap:= True;
Font.Color:= clblack;
Font.Style:= [fsBold];
Transparent:= True;
Parent:= WizardForm.MainPanel;
end;

PageDescriptionLabel:= TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left:= ScaleX(15);
Top:= ScaleY(25);
Width:= ScaleX(475);
Height:= ScaleY(30);
AutoSize:= False;
WordWrap:= True;
Font.Color:= clblack;
Transparent:= True;
Parent:= WizardForm.MainPanel;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
PageNameLabel.Caption:= WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption:= WizardForm.PageDescriptionLabel.Caption;
if CurPageID = wpSelectDir then
begin
WizardForm.NextButton.Caption:= ExpandConstant('{cm:BUT}');
GetNeedSpaceCaption;
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False;
with WizardForm do
begin
InnerNotebook.Left := ScaleX(0);
InnerNotebook.Top := ScaleY(60);
InnerNotebook.Width := ScaleX(497);
InnerNotebook.Height := ScaleY(252)
end;
end;
end;
Автор: ChVL
Дата сообщения: 10.04.2009 12:55
noiseless
Нет, не в процессе установки. Папка там уже есть. Думаю поэтому эта функция не работает. Как это сделать с файлами в уже существующей папке?

P.S. Ошибочка в конце строк: \RU.ttt'); и \RU.dll');
Автор: chelobey
Дата сообщения: 10.04.2009 12:56
прошу помощи. есть стандартный [more=скрипт...]
Код: [Setup]
AppName=Application
AppVerName=Application [Version]
DefaultDirName={pf}\Application

[Files]
Source: button.bmp; DestDir: {tmp}; Flags: dontcopy nocompression
Source: flash.bmp; DestDir: {tmp}; Flags: dontcopy nocompression

[no][Code][/no]

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;

WizardImage, FlashImage: TBitmapImage;
FlashButton: Tpanel;
FlashLabel: 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

FlashImage.Left:=-29 // анимация объекта
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ButtonImage[TLabel(Sender).Tag].Left:=0
FlashImage.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:=7
Labl.Top:=2
Labl.Autosize:=True
Labl.Alignment:=taCenter
Labl.Tag:=AButtonIndex
Labl.Transparent:=True
Labl.Font.Color:=clWhite
Labl.Font.Name:='Tahoma'
Labl.Font.Size:=10
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 InitializeWizard;
begin

ExtractTemporaryFile('button.bmp')
ExtractTemporaryFile('flash.bmp')

FlashButton := TPanel.Create(WizardForm); // создание объекта
FlashButton.Left := 10;
FlashButton.Top := 325;
FlashButton.Width := 29;
FlashButton.Height := 27;
FlashButton.Parent := WizardForm;

FlashImage:=TBitmapImage.Create(WizardForm)
FlashImage.Left:=0;
FlashImage.Top:=0;
FlashImage.Width:=58;
FlashImage.Height:=27;
FlashImage.Enabled:=False;
FlashImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\flash.bmp'));
FlashImage.Parent:=FlashButton;

FlashLabel := TLabel.Create(WizardForm);
FlashLabel.Width := 29;
FlashLabel.Height := 27;
FlashLabel.Autosize := False;
FlashLabel.Transparent := True;
FlashLabel.OnMouseDown := @ButtonLabelMouseDown;
FlashLabel.OnMouseUp := @ButtonLabelMouseUp;
FlashLabel.Parent := FlashButton;

WizardForm.BackButton.Left:=293
WizardForm.BackButton.Width:=ButtonWidth
WizardForm.BackButton.Height:=ButtonHeight

WizardForm.NextButton.Left:=375
WizardForm.NextButton.Width:=ButtonWidth
WizardForm.NextButton.Height:=ButtonHeight

WizardForm.CancelButton.Left:=211
WizardForm.CancelButton.Width:=ButtonWidth
WizardForm.CancelButton.Height:=ButtonHeight

WizardForm.DirBrowseButton.Top:=67
WizardForm.DirBrowseButton.Left:=335
WizardForm.DirBrowseButton.Width:=ButtonWidth
WizardForm.DirBrowseButton.Height:=ButtonHeight

WizardForm.GroupBrowseButton.Top:=200
WizardForm.GroupBrowseButton.Left:=375
WizardForm.GroupBrowseButton.Width:=ButtonWidth
WizardForm.GroupBrowseButton.Height:=ButtonHeight

LoadButtonImage(WizardForm.BackButton,bidBack)
LoadButtonImage(WizardForm.NextButton,bidNext)
LoadButtonImage(WizardForm.CancelButton,bidCancel)
LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse)
end;

procedure CurPageChanged(CurPageID: Integer);
begin
UpdateButton(WizardForm.BackButton,bidBack)
UpdateButton(WizardForm.NextButton,bidNext)
UpdateButton(WizardForm.CancelButton,bidCancel)
UpdateButton(WizardForm.DirBrowseButton,bidDirBrowse)
UpdateButton(WizardForm.GroupBrowseButton,bidGroupBrowse)
end;
Автор: noiseless
Дата сообщения: 10.04.2009 13:19
ChVL
Я описАлся - данная процедура будет выполняться как раз перед установкой
Или всё равно не работает?
За ошибки сорри - поспешил

Upd: как вариант
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"; BeforeInstall: MyBeforeInstall
[Сode]
Procedure MyBeforeInstall;
begin
if fileexists(ExpandConstant('{app}')+'\Langs\RU.dll') then
begin
renamefile(ExpandConstant('{app}')+'\Langs\RU.dll',ExpandConstant('{app}')+'\Langs\RU.ttt');
deletefile(ExpandConstant('{app}')+'\Langs\*.dll');
renamefile(ExpandConstant('{app}')+'\Langs\RU.ttt',ExpandConstant('{app}')+'\Langs\RU.dll');
end;
end;
Автор: Sampron
Дата сообщения: 10.04.2009 13:42
Serega0675

Цитата:
вы спрашивали об авторане - пример

Размер формы лучше указывать в клиентской части:
ClientWidth:=580
ClientHeight:=355
Автор: Serega0675
Дата сообщения: 10.04.2009 14:13
Sampron
а на, что это влияет? Просто я не знаю чем отличается Width от ClientWidth - результат то получается один...
Автор: Sampron
Дата сообщения: 10.04.2009 14:38
Serega0675

Цитата:
а на, что это влияет? Я же указываю там позицию Position := poScreenCenter, т.е. она будет по центру экрана.

Я про координаты формы ничего не говорил. В разных темах оформления винды может быть разная ширина\высота бордера, в свойствах формы Width\Height указывается размер всей области формы включая бордер, в ClientWidth\ClientHeight указывается размер клиентской части формы без бордера. К примеру включи в винде классический стиль и посмотри на свою форму.
Автор: Serega0675
Дата сообщения: 10.04.2009 14:56
Sampron
извините, про координаты это я чего-то ляпнул не то...
За разъяснение спасибо, учту на будущее.
Автор: ChVL
Дата сообщения: 10.04.2009 18:38
noiseless
Частично заработал вот такой вариант (в секции [Files] ничего не добавлял):

Код:
[Cоde]
procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssPostInstall
then
begin
renamefile(ExpandConstant('{src}')+'\Langs\RU.dll', ExpandConstant('{src}')+'\Langs\RU.dl_');
deletefile(ExpandConstant('{src}')+'\Langs\*.dll');
renamefile(ExpandConstant('{src}')+'\Langs\RU.dl_', ExpandConstant('{src}')+'\Langs\RU.dll');
end;
end;
Автор: Serega0675
Дата сообщения: 10.04.2009 19:03
ChVL
Я сразу не обратил внимание, удаление файлов по маске:
DelTree(ExpandConstant('{src}\Langs\*.dll'), False, True, False);
а функция:
DeleteFile(const FileName: string): Boolean;
Удаляет с диска файл с именем FileName.
Автор: Trava79
Дата сообщения: 10.04.2009 19:38
Доброго времени суток, интересует такой вопрос: как сделать так, что бы инсталлятор определял х32 и x64 битные версии ОС и в зависимости от этого устанавливал соответствующие файлы.
Автор: Serega0675
Дата сообщения: 10.04.2009 20:05
Trava79
вы же не новичок... ссылка, поиск рулит.
Автор: ChVL
Дата сообщения: 10.04.2009 20:15
noiseless
Serega0675
Спасибо!! Проблема решена.

Trava79

Код: [Files]
Source: "{app}\MyFile32"; DestDir: "{app}"; Check: (not IsX64);
Source: "{app}\MyFile64"; DestDir: "{app}"; 64bit; Check: IsX64;

[Cоde]
function IsX64: boolean;
begin
if IsWin64 then
begin
Result:=True;
end
else
begin
Result:=False;
end;
end;
Автор: Trava79
Дата сообщения: 10.04.2009 21:14
Serega0675 & ChVL спасибо.

Итог:

Цитата:
[Files]
Source: "My.dll"; DestDir: "{app}"; Check: IsWin64;
Source: "My.dll"; DestDir: "{app}"; Check: not IsWin64;

Работает.

Цитата:
[Files]
Source: "{app}\MyFile32"; DestDir: "{app}"; Check: (not IsX64);
Source: "{app}\MyFile64"; DestDir: "{app}"; 64bit; Check: IsX64;

Не работает.
Автор: AleSasha
Дата сообщения: 10.04.2009 22:28
Здравствуйте!

Я только начинаю разбираться с Inno Setup, поэтому надеюсь на понимание.

Я поняла, что цвет первой и последней страницы можно изменить так:

WizardForm.WelcomePage.color:=clblue;
WizardForm.FinishedPage.color:=clblue;

Но никак не могу понять, как покрасить в такой же цвет промежуточные страницы?

Спасибо!
Автор: kombat 77
Дата сообщения: 10.04.2009 22:51
AleSasha

Цитата:
как покрасить в такой же цвет промежуточные страницы?

WizardForm.InnerPage.Color := clBlue;
Автор: AleSasha
Дата сообщения: 10.04.2009 23:24

Цитата:
WizardForm.InnerPage.Color := clBlue;

Спасибо, kombat 77!

Частично покрасилось.
Но на некоторых внутренних страницах имеются места, которые не покрасились.
Например место для лицензионного сообщения, строка ввода пароля, дополнительные значки...
Как и эти места закрасить?
Автор: kombat 77
Дата сообщения: 10.04.2009 23:50
AleSasha

Цитата:
Например место для лицензионного сообщения, строка ввода пароля, дополнительные значки...
Как и эти места закрасить?

WizardForm.LicenseMemo.Color := clBlue;
WizardForm.PasswordEdit.Color := clBlue;
WizardForm.TasksList.Color := clBlue;
Автор: AleSasha
Дата сообщения: 11.04.2009 00:58
Спасибо, kombat 77 !

Еще несколько вопросов:

1. Как можно изменить цвет шрифта в LicenseMemo ?

2. Как убрать страницу после TasksList, чтобы нажав на кнопку далее началась инсталяция?

3. Как изменить размер окошка с текстом приветствия справа от картинки на WelcomePage ?
Автор: Artem_Butenko
Дата сообщения: 11.04.2009 01:44
Ребята, пожалуйста помогите с наболевшим вопросом, как же защитить тихий инсталлятор от комбинации Alt+F4?
Автор: chelobey
Дата сообщения: 11.04.2009 09:35
Люди, помогите с этим. дело встало
Автор: Don_Juan
Дата сообщения: 11.04.2009 10:50
Кто-нибудь помогите, пожалуйста, сделать картинку прозрачной как в инсталляторе Mirror' Edge. Кликнешь по картинке, и открывается сайт. У них картинка на каком-то разовом фоне и в инсталляторе этого разового фона нет. И при любом оформлении виндоус эта картинка смориться хорошо. Помогите, пожалуйста, так же сделать...

[Code]
procedure urlbuttonclick(sender:tobject);
var rescode:Integer;
begin
shellexec('open', 'http://www.site.com', '', '',sw_shownormal, ewnowait, rescode)
end;

procedure InitializeWizard();
var
BtnPanel: TPanel;
BtnImage: TBitmapImage;

begin
BtnPanel:=TPanel.Create(WizardForm)
with BtnPanel do begin
Left:=10
Top:=328
Width:=200
Height:=22
Cursor:=crHand
onclick:=@urlbuttonclick;
Parent:=WizardForm
end
BtnImage:=TBitmapImage.Create(WizardForm)
with BtnImage do begin
AutoSize:=True
Enabled:=False
ExtractTemporaryFile('Logo.bmp')
Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\Logo.bmp')
Parent:=BtnPanel
end
end;

Автор: skeptik_vdm
Дата сообщения: 11.04.2009 15:13
Don_Juan
[more=Пробуй]
[Setup]
AppName=Logo
AppVerName=Logo
DefaultDirName={pf}\Logo
DefaultGroupName=Logo
OutputDir=out

[Files]
Source:"logo.bmp";DestDir:{tmp};Flags: dontcopy

[Code]
var
LogoImage:TBitmapImage;
LogoLabel: TLabel;
LogoPanel: TPanel;

procedure LogoLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://www.free-torrents.org/forum', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
end;

procedure InitializeWizard();
begin
LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(8);
Top := ScaleY(327);
Width := ScaleX(147);
Height := ScaleY(19);
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;
ExtractTemporaryFile('logo.bmp');
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:=@LogoLabelOnClick;
end;
end;
[/more]
Автор: kombat 77
Дата сообщения: 11.04.2009 15:33
AleSasha

Цитата:
Как можно изменить цвет шрифта в LicenseMemo ?

Используй текст в формате ."rtf"

Цитата:
Как убрать страницу после TasksList, чтобы нажав на кнопку далее началась инсталяция?

[Setup]
DisableReadyPage=True
Цитата:
Как изменить размер окошка с текстом приветствия справа от картинки на WelcomePage

Меняй координаты Top, Left, Height, Width для WizardForm.WelcomeLabel1 WizardForm.WelcomeLabel2


Автор: Don_Juan
Дата сообщения: 11.04.2009 17:21
skeptik_vdm

Спасиб большое
Автор: AleSasha
Дата сообщения: 11.04.2009 18:43
kombat 77

Цитата:
Меняй координаты Top, Left, Height, Width для WizardForm.WelcomeLabel1 WizardForm.WelcomeLabel2

Да, так я пробовала, но меняются размеры только самих лейблов, а мне нужно изменить размер прямоугольника на котором они расположены...

Как это можно сделать?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: в очередной раз босудим антивиры?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.