Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
MediEvil
09-01-2010, 22:58
Подскажите, как в скрипте указать те приложения, которые должны быть закрыты в начале деинсталляции.
Что нужно...
1-чтоб он проверил есть ли такой файл
2-запущен ли он
3-если да то закрыл сам и продолжил удаление
4-если нет то продолжил удаление
все облазил но не нашел..
Извините если не суда написал
пожалуйста помогите! »
Прежде чем выкладвать скрипты, сами проверьте их на работоспасобность... Если результат вашей деятельности не просто объединить человеку, то чего же вы хотите от InnoSetup Script Joiner, это же обычная программа, которая просто складывает первую строку со второй, а не анализирует их...
Вот результат объединения, я бы даже добавил исправления, ваших кодов:
[Code]
const
ButtonWidth = 80; //Указываем размер кнопок
ButtonHeight = 23;
bidBack = 0;
bidNext = 1;
bidCancel = 2;
bidDirBrowse = 3;
bidGroupBrowse = 4;
Color = clWhite;
var
pnl: TPanel;
LogoImage:TBitmapImage;
LogoLabel: TLabel;
LogoPanel: TPanel;
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);
with Panel do
begin
Left:=AButton.Left;
Top:=AButton.Top;
Width:=AButton.Width;
Height:=AButton.Height;
Tag:=AButtonIndex;
Parent:=AButton.Parent;
end;
ButtonPanel[AButtonIndex]:=Panel;
Image:=TBitmapImage.Create(WizardForm); //Рисунок который ложится на кнопку
with do
begin
Width:=160; //Обязательно прописать оригинальный размер рисунка
Height:=23;
Enabled:=False;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\button.bmp'));
Parent:=Panel;
end;
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); //Текст кнопок
with Labl do
begin
Left:=23; //Указываем положение текста
Top:=5;
// Autosize:=True; // это и так по умолчанию
Alignment:=taCenter;
Tag:=AButtonIndex;
Transparent:=True;
Font.Color:=clWhite; //Цвет текста
Caption:=AButton.Caption;
OnClick:=@ButtonLabelClick;
OnDblClick:=@ButtonLabelClick;
OnMouseDown:=@ButtonLabelMouseDown;
OnMouseUp:=@ButtonLabelMouseUp;
Parent:=Panel;
end;
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;
///////////////////////WelcomePage//////////////////////////////////////
procedure WelcomePage;
begin
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.WelcomeLabel1.AutoSize;
SetBounds(WizardForm.WelcomeLabel1.Left,WizardForm.WelcomeLabel1.Top,
WizardForm.WelcomeLabel1.Width,WizardForm.WelcomeLabel1.Height);
WordWrap:= WizardForm.WelcomeLabel1.WordWrap;
Caption:= WizardForm.WelcomeLabel1.Caption;
with Font do
begin
Color:= WizardForm.WelcomeLabel1.Font.Color;
Style:= WizardForm.WelcomeLabel1.Font.Style;
Name:= WizardForm.WelcomeLabel1.Font.Name;
Size:= WizardForm.WelcomeLabel1.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.WelcomeLabel2.AutoSize;
SetBounds(WizardForm.WelcomeLabel2.Left,WizardForm.WelcomeLabel2.Top,
WizardForm.WelcomeLabel2.Width,WizardForm.WelcomeLabel2.Height);
WordWrap:= WizardForm.WelcomeLabel2.WordWrap;
Caption:= WizardForm.WelcomeLabel2.Caption;
with Font do
begin
Color:= WizardForm.WelcomeLabel2.Font.Color;
Style:= WizardForm.WelcomeLabel2.Font.Style;
Name:= WizardForm.WelcomeLabel2.Font.Name;
Size:= WizardForm.WelcomeLabel2.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////
///////////////////////SelectDirPage//////////////////////////////////////
procedure SelectDirPage;
begin
with WizardForm do
begin
with DirEdit do
begin
Left:= 40;
Top:= 137;
Parent:= pnl;
end;
with DirBrowseButton do
begin
Left:= WizardForm.DirEdit.Left + WizardForm.DirEdit.Width + 10;
Top:= WizardForm.DirEdit.Top - 1;
Parent:= pnl;
end;
with SelectDirBitmapImage do
begin
Left:= WizardForm.DirEdit.Left;
Top:= WizardForm.DirEdit.Top - 62;
Stretch:= True;
Parent:= pnl;
end;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.SelectDirBrowseLabel.AutoSize;
SetBounds(WizardForm.DirEdit.Left,WizardForm.DirEdit.Top - 30,
WizardForm.SelectDirBrowseLabel.Width, WizardForm.SelectDirBrowseLabel.Height);
WordWrap:= WizardForm.SelectDirBrowseLabel.WordWrap;
Caption:= WizardForm.SelectDirBrowseLabel.Caption;
with Font do
begin
Color:= WizardForm.SelectDirBrowseLabel.Font.Color;
Style:= WizardForm.SelectDirBrowseLabel.Font.Style;
Name:= WizardForm.SelectDirBrowseLabel.Font.Name;
Size:= WizardForm.SelectDirBrowseLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.SelectDirLabel.AutoSize;
SetBounds(WizardForm.SelectDirBitmapImage.Left + 50,WizardForm.SelectDirBitmapImage.Top + 10,
WizardForm.SelectDirLabel.Width,WizardForm.SelectDirLabel.Height);
WordWrap:= WizardForm.SelectDirLabel.WordWrap;
Caption:= WizardForm.SelectDirLabel.Caption;
with Font do
begin
Color:= WizardForm.SelectDirLabel.Font.Color;
Style:= WizardForm.SelectDirLabel.Font.Style;
Name:= WizardForm.SelectDirLabel.Font.Name;
Size:= WizardForm.SelectDirLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.DiskSpaceLabel.AutoSize;
SetBounds(WizardForm.DirEdit.Left,WizardForm.Bevel.Top - 25,
WizardForm.DiskSpaceLabel.Width,WizardForm.DiskSpaceLabel.Height);
WordWrap:= WizardForm.DiskSpaceLabel.WordWrap;
Caption:= WizardForm.DiskSpaceLabel.Caption;
with Font do
begin
Color:= WizardForm.DiskSpaceLabel.Font.Color;
Style:= WizardForm.DiskSpaceLabel.Font.Style;
Name:= WizardForm.DiskSpaceLabel.Font.Name;
Size:= WizardForm.DiskSpaceLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////
///////////////////////ReadyPage//////////////////////////////////////
procedure ReadyPage;
var
ready_str: string;
begin
ready_str:= WizardForm.ReadyMemo.Text;
with TLabel.Create(pnl) do
begin
SetBounds(45,115,WizardForm.ReadyMemo.Width, WizardForm.ReadyMemo.Height);
Caption:= ready_str;
with Font do
begin
Color:= WizardForm.ReadyLabel.Font.Color;
Style:= WizardForm.ReadyLabel.Font.Style;
Name:= WizardForm.ReadyLabel.Font.Name;
Size:= WizardForm.ReadyLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TBevel.Create(WizardForm) do
begin
SetBounds(40,110, WizardForm.ReadyMemo.Width, WizardForm.ReadyMemo.Height);
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.ReadyLabel.AutoSize;
SetBounds(40,70, WizardForm.ReadyLabel.Width, WizardForm.ReadyLabel.Height);
WordWrap:= WizardForm.ReadyLabel.WordWrap;
Caption:= WizardForm.ReadyLabel.Caption;
with Font do
begin
Color:= WizardForm.ReadyLabel.Font.Color;
Style:= WizardForm.ReadyLabel.Font.Style;
Name:= WizardForm.ReadyLabel.Font.Name;
Size:= WizardForm.ReadyLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////
///////////////////////InstallingPage//////////////////////////////////////
procedure InstallingPage;
begin
with WizardForm.ProgressGauge do
begin
Left:= 40;
Top:= 115;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.FilenameLabel.AutoSize;
SetBounds(WizardForm.ProgressGauge.Left,WizardForm.ProgressGauge.Top-20,
WizardForm.FilenameLabel.Width,WizardForm.FilenameLabel.Height);
WordWrap:= WizardForm.FilenameLabel.WordWrap;
Caption:= WizardForm.FilenameLabel.Caption;
with Font do
begin
Color:= WizardForm.FilenameLabel.Font.Color;
Style:= WizardForm.FilenameLabel.Font.Style;
Name:= WizardForm.FilenameLabel.Font.Name;
Size:= WizardForm.FilenameLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.StatusLabel.AutoSize;
SetBounds(WizardForm.StatusLabel.Left,WizardForm.StatusLabel.Top,
WizardForm.StatusLabel.Width,WizardForm.StatusLabel.Height);
WordWrap:= WizardForm.StatusLabel.WordWrap;
Caption:= WizardForm.StatusLabel.Caption;
with Font do
begin
Color:= WizardForm.StatusLabel.Font.Color;
Style:= WizardForm.StatusLabel.Font.Style;
Name:= WizardForm.StatusLabel.Font.Name;
Size:= WizardForm.StatusLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////
///////////////////////FinishedPage//////////////////////////////////////
var
CheckBox: array of TNewCheckBox;
procedure CheckBoxClick(Sender: TObject);
begin
if TNewCheckBox(Sender).Checked then
WizardForm.RunList.Checked[TNewCheckBox(Sender).Tag]:= True
else WizardForm.RunList.Checked[TNewCheckBox(Sender).Tag]:= False;
end;
procedure LabelClick(Sender: TObject);
begin
if CheckBox[TLabel(Sender).Tag].Checked then
begin
WizardForm.RunList.Checked[TLabel(Sender).Tag]:= False;
CheckBox[TLabel(Sender).Tag].Checked:= False;
end
else
begin
WizardForm.RunList.Checked[TLabel(Sender).Tag]:= True;
CheckBox[TLabel(Sender).Tag].Checked:= True;
end;
end;
procedure HideRunList(Control: TWinControl);
var
i, t: Integer;
str: string;
begin
if WizardForm.RunList.Items.Count > 0 then
begin
WizardForm.RunList.Hide;
SetArrayLength(CheckBox, SizeOf(WizardForm.RunList.Items.Count));
for i:= 0 to WizardForm.RunList.Items.Count-1 do
begin
CheckBox[i]:= TNewCheckBox.Create(Control);
with CheckBox[i] do
begin
SetBounds(ScaleX(WizardForm.RunList.Left+2),ScaleY(WizardForm.RunList.Top+2+t),14,14);
Tag:= i;
Checked:= WizardForm.RunList.Checked[i];
Caption:= WizardForm.RunList.Items.Strings[i];
OnClick:= @CheckBoxClick;
Color:= clWhite;
Parent:= Control;
end;
str:= WizardForm.RunList.Items.Strings[i];
with TLabel.Create(WizardForm) do
begin
SetBounds(ScaleX(WizardForm.RunList.Left+20),ScaleY(WizardForm.RunList.Top+2+t),
WizardForm.RunList.Width,14);
Caption:= str;
Tag:= i;
OnClick:= @LabelClick;
Transparent:= True;
Parent:= Control;
end;
t:= t + 20;
end;
end;
end;
procedure FinishedPage;
begin
HideRunList(pnl);
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.FinishedHeadingLabel.AutoSize;
SetBounds(WizardForm.FinishedHeadingLabel.Left,WizardForm.FinishedHeadingLabel.Top,
WizardForm.FinishedHeadingLabel.Width,WizardForm.FinishedHeadingLabel.Height);
WordWrap:= WizardForm.FinishedHeadingLabel.WordWrap;
Caption:= WizardForm.FinishedHeadingLabel.Caption;
with Font do
begin
Color:= WizardForm.FinishedHeadingLabel.Font.Color;
Style:= WizardForm.FinishedHeadingLabel.Font.Style;
Name:= WizardForm.FinishedHeadingLabel.Font.Name;
Size:= WizardForm.FinishedHeadingLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.FinishedLabel.AutoSize;
SetBounds(WizardForm.FinishedLabel.Left,WizardForm.FinishedLabel.Top,
WizardForm.FinishedLabel.Width,WizardForm.FinishedLabel.Height);
WordWrap:= WizardForm.FinishedLabel.WordWrap;
Caption:= WizardForm.FinishedLabel.Caption;
with Font do
begin
Color:= WizardForm.FinishedLabel.Font.Color;
Style:= WizardForm.FinishedLabel.Font.Style;
Name:= WizardForm.FinishedLabel.Font.Name;
Size:= WizardForm.FinishedLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
/////////////////////////////////////////////////////////////////
procedure CurPageChanged(CurPageID: Integer);
begin
UpdateButton(WizardForm.BackButton,bidBack);
UpdateButton(WizardForm.NextButton,bidNext);
UpdateButton(WizardForm.CancelButton,bidCancel);
pnl:= TPanel.Create(WizardForm);
with pnl do
begin
Align:= alClient;
Parent:= WizardForm;
end;
with WizardForm do
begin
with WizardBitmapImage do
begin
Align:= alClient;
Stretch:= True;
Parent:= pnl;
end;
NextButton.Parent:= pnl;
CancelButton.Parent:= pnl;
BackButton.Parent:= pnl;
Bevel.Parent:= pnl;
pnl.Repaint;
end;
if (CurPageID > wpWelcome) and (CurPageID < wpFinished) then
begin
WizardForm.Bevel1.Parent:= pnl;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.PageNameLabel.AutoSize;
SetBounds(WizardForm.PageNameLabel.Left,WizardForm.PageNameLabel.Top,
WizardForm.PageNameLabel.Width,WizardForm.PageNameLabel.Height);
Caption:= WizardForm.PageNameLabel.Caption;
with Font do
begin
Color:= WizardForm.PageNameLabel.Font.Color;
Style:= WizardForm.PageNameLabel.Font.Style;
Name:= WizardForm.PageNameLabel.Font.Name;
Size:= WizardForm.PageNameLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
with TLabel.Create(pnl) do
begin
AutoSize:= WizardForm.PageDescriptionLabel.AutoSize;
SetBounds(WizardForm.PageDescriptionLabel.Left,WizardForm.PageDescriptionLabel.Top,
WizardForm.PageDescriptionLabel.Width,WizardForm.PageDescriptionLabel.Height);
Caption:= WizardForm.PageDescriptionLabel.Caption;
with Font do
begin
Color:= WizardForm.PageDescriptionLabel.Font.Color;
Style:= WizardForm.PageDescriptionLabel.Font.Style;
Name:= WizardForm.PageDescriptionLabel.Font.Name;
Size:= WizardForm.PageDescriptionLabel.Font.Size;
end;
Transparent:= True;
Parent:= pnl;
end;
pnl.Repaint;
end;
if CurPageID = wpWelcome then WelcomePage;
if CurPageID = wpSelectDir then SelectDirPage;
if CurPageID = wpReady then ReadyPage;
if CurPageID = wpInstalling then InstallingPage;
if CurPageID = wpFinished then FinishedPage;
end;
procedure LogoOnClick(Sender: TObject);
var
ReturnCode: Integer;
begin
ShellExec('open', 'http://Bigtorrents.ru', '', '', SW_SHOWNORMAL, ewNoWait, ReturnCode)
end;
procedure InitializeWizard();
begin
ExtractTemporaryFile('papka.bmp');
with WizardForm do
begin
SelectDirBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\papka.bmp'));
SelectDirBitmapImage.AutoSize:=true;
SelectGroupBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\papka.bmp'));
SelectGroupBitmapImage.AutoSize:=true;
BackButton.Width:=ButtonWidth;
BackButton.Height:=ButtonHeight;
NextButton.Width:=ButtonWidth;
NextButton.Height:=ButtonHeight;
CancelButton.Width:=ButtonWidth;
CancelButton.Height:=ButtonHeight;
DirBrowseButton.Left:=337;
DirBrowseButton.Width:=ButtonWidth;
DirBrowseButton.Height:=ButtonHeight;
GroupBrowseButton.Left:=337;
GroupBrowseButton.Width:=ButtonWidth;
GroupBrowseButton.Height:=ButtonHeight;
LicenseAcceptedRadio.OnClick:=@LicenceAcceptedRadioOnClick;
LicenseNotAcceptedRadio.OnClick:=@LicenceNotAcceptedRadioOnClick;
PageNameLabel.Font.Color:=Color;
Font.Color:=Color;
Color:=Color;
WelcomePage.Color:=Color;
InnerPage.Color:=Color;
FinishedPage.Color:=Color;
LicensePage.Color:=Color;
PasswordPage.Color:=Color;
InfoBeforePage.Color:=Color;
UserInfoPage.Color:=Color;
SelectDirPage.Color:=Color;
SelectComponentsPage.Color:=Color;
SelectProgramGroupPage.Color:=Color;
SelectTasksPage.Color:=Color;
ReadyPage.Color:=Color;
PreparingPage.Color:=Color;
InstallingPage.Color:=Color;
InfoAfterPage.Color:=Color;
DirEdit.Color:=Color;
DiskSpaceLabel.Color:=Color;
GroupEdit.Color:=Color;
PasswordLabel.Color:=Color;
PasswordEdit.Color:=Color;
PasswordEditLabel.Color:=Color;
ReadyMemo.Color:=Color;
TypesCombo.Color:=Color;
WelcomeLabel1.Color:=Color;
InfoBeforeClickLabel.Color:=Color;
MainPanel.Color:=Color;
PageNameLabel.Color:=Color;
PageDescriptionLabel.Color:=Color;
ReadyLabel.Color:=Color;
FinishedLabel.Color:=Color;
YesRadio.Color:=Color;
NoRadio.Color:=Color;
WelcomeLabel2.Color:=Color;
LicenseLabel1.Color:=Color;
InfoAfterClickLabel.Color:=Color;
ComponentsList.Color:=Color;
ComponentsDiskSpaceLabel.Color:=Color;
BeveledLabel.Color:=Color;
StatusLabel.Color:=Color;
FilenameLabel.Color:=Color;
SelectDirLabel.Color:=Color;
SelectStartMenuFolderLabel.Color:=Color;
SelectComponentsLabel.Color:=Color;
SelectTasksLabel.Color:=Color;
LicenseAcceptedRadio.Color:=Color;
LicenseNotAcceptedRadio.Color:=Color;
UserInfoNameLabel.Color:=Color;
UserInfoNameEdit.Color:=Color;
UserInfoOrgLabel.Color:=Color;
UserInfoOrgEdit.Color:=Color;
PreparingLabel.Color:=Color;
FinishedHeadingLabel.Color:=Color;
UserInfoSerialLabel.Color:=Color;
UserInfoSerialEdit.Color:=Color;
TasksList.Color:=Color;
RunList.Color:=Color;
SelectDirBrowseLabel.Color:=Color;
SelectStartMenuFolderBrowseLabel.Color:=Color;
Bevel.Hide;
Bevel1.Hide;
LicenseAcceptedRadio.Font.Color:= Color;
LicenseNotAcceptedRadio.Font.Color:= Color;
end;
ExtractTemporaryFile('Button.bmp');
LogoPanel := TPanel.Create(WizardForm);
with LogoPanel do
begin
Parent := WizardForm;
Left := ScaleX(5);
Top := ScaleY(320);
Width := ScaleX(165);
Height := ScaleY(35);
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}\Button.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;
LoadButtonImage(WizardForm.BackButton,bidBack);
LoadButtonImage(WizardForm.NextButton,bidNext);
LoadButtonImage(WizardForm.CancelButton,bidCancel);
LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse);
LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse);
end;
И вот ещё по-моему хорошая идея »
Особо интересные, на мой взгляд вещи, есть в шапке темы, плюс скачайте Inno Setup Scripting 5.1, Коллекция скриптов и Сборник вопросов из шапки темы.
Подскажите, как в скрипте указать те приложения, которые должны быть закрыты в начале деинсталляции. »
Как говорят - проще не куда:
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion
[UninstallRun]
; при деинсталляции, указанный файл и все дочерние процессы, будут завершены...
Filename: taskkill; Parameters: /f /t /im MyProg.exe; Flags: runhidden
[Run]
; запустите файл после установки и не закрывая его удалите установленную программу и ^...
Filename: {app}\MyProg.exe; Description: Запустить программу?; Flags: postinstall nowait skipifsilent
Может я не по теме, но очень нужен реестр игры «Войны древности: Спарта». Помогите пожалуйста.
ZanyGamer
11-01-2010, 19:39
Вот [Setup]
AppId={B4866999-9FF1-4780-A2E9-A952A5E7BBCA}
AppName=[Prototype]
AppVerName=[Prototype]
AppPublisher=Activision
AppVersion=1.0
AppSupportURL=http://activision.custhelp.com/
DefaultDirName={pf}\Prototype
OutputDir=D:\Репаки\Prototype
DefaultGroupName=Activision\Radical Entertainment\Prototype
UninstallFilesDir={app}\Uninstall
Compression=lzma/ultra64
InternalCompressLevel=ultra64
SolidCompression=true
DiskSpanning=yes
SlicesPerDisk=3
DiskSliceSize=1100000000
UninstallDisplayIcon={app}\prototypef.exe, 0
UninstallDisplayName=WarCraft The Frozen Throne 1.24c
DisableReadyPage=true
[Languages]
Name: RUS; MessagesFile: compiler:Languages\Russian.isl
[Files]
Source: "{tmp}\1.bmp"; DestDir: "{tmp}"; Flags: deleteafterinstall dontcopy
Source: "{tmp}\site.bmp"; DestDir: "{tmp}"; Flags: deleteafterinstall dontcopy
Source: "{tmp}\black.cjstyles"; DestDir: "{tmp}"; Flags: deleteafterinstall dontcopy
Source: "{app}\ISSkin.dll"; DestDir: "{app}";
Source: "isgsg.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression solidbreak
[CustomMessages]
RUS.BUT=Установить
RUS.SPACE=Доступно места на диске:
RUS.SPACE1=Требуется места на диске:
RUS.DRT=Обновить DirectX
RUS.UP=Идет обновление DirectX...
RUS.Icons=Создать ярлык на рабочем столе
RUS.Group=Создать ярлыки в меню "Пуск"
RUS.Redist=Установить ЫЫЫ
RUS.Finished1=Игра WarCraft The Frozen Throne 1.24c установлена на Ваш компьютер.
RUS.Finished2=Нажмите «Завершить», чтобы выйти из программы установки.
RUS.RunProgram=Запустить WarCraft The Frozen Throne 1.24c
[Code]
////////////////////
//Эти данные нужны для создания надписей, при вставке изображения в инстяллятор
var
DirectX, Redist, Icons, Group, RunProgram: TCheckBox; //Чекбоксы
IconsLabel, GroupLabel, RedistLabel, DirectXLabel: TLabel; //Надписи к чекбоксам
SelectDirLabel, SelectDirLabelBrowse, RunProgramLabel: TLabel; //Надписи на странице выбора места установки
PageNameLabel, PageNameLabel1, PageNameLabel2, PageNameLabel3, PageNameLabel4, PageNameLabel5, PageNameLabel6, PageNameLabel7, PageNameLabel8: TLabel; //Заголовок страницы
PageDescriptionLabel, PageDescriptionLabel1, PageDescriptionLabel2, PageDescriptionLabel3, PageDescriptionLabel4, PageDescriptionLabel5, PageDescriptionLabel6, PageDescriptionLabel7, PageDescriptionLabel8: TLabel; //Информация о странице
StatusLabel, FilenameLabel, NeedSpaceLabel,FreeSpaceLabel: TLabel; //Данные на странице установки
WelcomeLabel1, WelcomeLabel2, FinishedLabel, FinishedHeadingLabel: TLabel; //Надписи на на странице приветствия и на финишной странице
SelectStartMenuFolderLabel, SelectStartMenuFolderBrowseLabel, ReadyLabel, NoIconsLabel: TLabel; //Надписи и чекбоксы на странице выбора места установки ярлыков в Главном Меню
LicenseLabel1, LicenseAcceptedLabel, LicenseNotAcceptedLabel: Tlabel; //Надписи на страниые Лицензионнго соглашения
InfoBeforeClickLabel, InfoAfterClickLabel, ComponentsDiskSpaceLabel, SelectComponentsLabel: TLabel; //Надписи на странице компонентов и страницах показа данных до и после установки
NeedSize:Integer; //Нужное место на диске
FreeMB, TotalMB: Cardinal; //нужное место на диске
BmpFile: TBitmapImage; //Вставка изобрпжения в окно инсталлятора
PageID,ResultCode: Integer; //Запуск программы после установки
URLLabel:TLabel;
//Дальше функция проверки чекбоксов
function InstallDirectX: Boolean;
begin
Result:= DirectX.Checked;
end;
function InstallRedist: Boolean;
begin
Result:=Redist.Checked;
end;
function CreateIcons: Boolean;
begin
Result:=Icons.Checked;
end;
function GroupIcons: Boolean;
begin
Result:=Group.Checked;
end;
function Run: Boolean;
begin
Result:=RunProgram.Checked;
end;
//Функция проверки чекбоксов
// задал процедуру, чтоб отмечался чебокс еси кликнуть по надписи
procedure RedistOnClick(Sender: TObject);
begin
if Redist.Checked = False then
Redist.Checked:= True else
Redist.Checked:= False;
end;
procedure DirectXLabelOnClick(Sender: TObject);
begin
if DirectX.Checked = False then
DirectX.Checked:= True else
DirectX.Checked:= False;
end;
procedure IconsOnClick(Sender: TObject);
begin
if Icons.Checked = False then
Icons.Checked:= True else
Icons.Checked:= False;
end;
procedure GroupOnClick(Sender: TObject);
begin
if Group.Checked = False then
Group.Checked:= True else
Group.Checked:= False;
end;
procedure RunProgramOnClick(Sender: TObject);
begin
if RunProgram.Checked = False then
RunProgram.Checked:= True else
RunProgram.Checked:= False;
end;
Procedure NoIconsLabelOnClick (Sender: TObject);
begin
WizardForm.NoIconsCheck.Checked:=Not(WizardForm.NoIconsCheck.Checked)
end;
procedure LicenceAcceptedRadioOnClick(Sender: TObject);
begin
WizardForm.NextButton.Enabled:=True
end;
procedure LicenceNotAcceptedRadioOnClick(Sender: TObject);
begin
WizardForm.NextButton.Enabled:=False
end;
Procedure YesRadioOnClick (Sender: TObject);
begin
WizardForm.LicenseAcceptedRadio.Checked:=True
end;
Procedure NoRadioOnClick (Sender: TObject);
begin
WizardForm.LicenseNotAcceptedRadio.Checked:=True
end;
// задал процедуру, чтоб отмечался чебокс еси кликнуть по надписи lblCheckBox
//Свободное место, отображает сколько нужно и сколько есть места на диске, находтся на странице выбора пути
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 FilenameExt();
begin
FilenameLabel.Caption:= ExpandConstant(ExtractFileDir(CurrentFilename)) + '\' + ExtractFilename(CurrentFilename);
end;
procedure InitializeWizard();
begin
WizardForm.WelcomeLabel2.Height := WizardForm.WelcomeLabel2.Height - ScaleY(18);
MouseLabel:=TLabel.Create(WizardForm)
MouseLabel.Width:=WizardForm.Width
MouseLabel.Height:=WizardForm.Height
MouseLabel.Autosize:=False
MouseLabel.Transparent:=True
MouseLabel.OnMouseMove:=@SiteLabelMouseMove2
MouseLabel.Parent:=WizardForm
SiteLabel:=TLabel.Create(WizardForm);
SiteLabel.Left:= WizardForm.NextButton.Left + WizardForm.NextButton.Width;
SiteLabel.Top:= WizardForm.OuterNotebook.Height - SiteLabel.Height;
SiteLabel.Cursor:=crHand
SiteLabel.Font.Color:=clBlue
SiteLabel.Caption:='Forum Ru-Board'
SiteLabel.OnClick:=@SiteLabelOnClick
SiteLabel.OnMouseDown:=@SiteLabelMouseDown
SiteLabel.OnMouseUp:=@SiteLabelMouseUp
SiteLabel.OnMouseMove:=@SiteLabelMouseMove
SiteLabel.Parent:=WizardForm.WelcomePage;
ExtractTemporaryFile('1.bmp'); //Извлекаем файл, который пойдет в окно инсталлятора
NeedSize:= 7980; //Необходимое место для установки
BmpFile:= TBitmapImage.Create(WizardForm);
//Вставляем изображение в окно инсталлятора, для каждой страницы нужно добвлять изображение заново
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.WelcomePage;
BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.LicensePage;
BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.InfoBeforePage;
BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.SelectDirPage;
BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.SelectComponentsPage;
BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.InstallingPage;
BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.InfoAfterPage;
BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.FinishedPage;
BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.SelectProgramGroupPage;
BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 497, 360);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.ReadyPage;
//Вставляем изображение в окно инсталлятора, для каждой страницы нужно добвлять изображение заново
//Скрывем стандартные надписи, значки и чекбоксы
with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
WelcomeLabel1.Hide;
WelcomeLabel2.Hide;
DiskSpaceLabel.Hide;
SelectDirBitmapImage.Hide;
SelectDirBrowseLabel.Hide;
SelectDirLabel.Hide;
FinishedHeadingLabel.Hide;
FinishedLabel.Hide;
MainPanel.Hide
FilenameLabel.Hide;
StatusLabel.Hide;
SelectStartMenuFolderLabel.Hide;
SelectStartMenuFolderBrowseLabel.Hide;
ReadyLabel.Hide;
LicenseLabel1.Hide;
InfoBeforeClickLabel.Hide;
InfoAfterClickLabel.Hide;
ComponentsDiskSpaceLabel.Hide;
SelectComponentsLabel.Hide;
end;
//Скрывем стандартные надписи, значки и чекбоксы
with WizardForm do
begin
DirBrowseButton.Left:= DirBrowseButton.Left + ScaleX(40); //Местоположение кнопки "Обзор" от левого края, на странице выбора пути установки
DirBrowseButton.Top:= DirBrowseButton.Top + ScaleY(72); //Местоположение кнопки "Обзор" сверху, на странице выбора пути установки
DirEdit.Left:= DirEdit.Left + ScaleX(40); //Местоположение панели, где отображается путь от левого края, на странице выбора пути установки
DirEdit.Top:= DirEdit.Top + ScaleY(72); //Местоположение панели, где отображается путь сверху, на странице выбора пути установки
GroupBrowseButton.Left:= GroupBrowseButton.Left + ScaleX(40); //Местоположение кнопки "Обзор" от левого края, на странице создания ярлыков в Главном Меню
GroupBrowseButton.Top:= GroupBrowseButton.Top + ScaleY(72); //Местоположение кнопки "Обзор" сверху, на странице создания ярлыков в Главном Меню
GroupEdit.Left:= GroupEdit.Left + ScaleX(40); //Местоположение панели, где отображается путь от левого края, на странице создания ярлыков в Главном Меню
GroupEdit.Top:= GroupEdit.Top + ScaleX(72); //Местоположение панели, где отображается путь сверху, на странице создания ярлыков в Главном Меню
GroupEdit.Color:= ClBlack //Цвет панели, где отображается путь, на странице создания ярлыков в Главном Меню
NextButton.BringToFront; //Выносим на передний план кнопки
BackButton.BringToFront; //Выносим на передний план кнопки
CancelButton.BringToFront; //Выносим на передний план кнопки
Font.Style:=[]; //Стиль шрифта, используемого в инсталляторе
Font.Name:= 'MS Sans Serif'; //Имя шрифта, используемого в инсталляторе
DirEdit.Color:=clBlack; //Цвет панели, где отображается путь, на странице выбора пути установки
Font.Color:=clWhite; //Цвет шрифта, используемого в инсталляторе
ProgressGauge.Top:=ScaleY(120); //Местоположение Прогресс-бара сверху
ProgressGauge.Left:=ScaleX(20); //Местоположение Прогресс-бара от левого края
ProgressGauge.Width:=ScaleX(457); //Ширина Прогресс-бара
ReadyMemo.Left:=ScaleX(40); //Местоположение сверху панели где отображаются данные выбранных компонентов, на странице готовности установки
ReadyMemo.Top:= WizardForm.ReadyMemo.Top + ScaleY(72) //Цвет шрифта в панели где отображаются данные выбранных компонентов, на странице готовности установки
ReadyMemo.Font.Color:= clBlack; //Стиль панели где отображаются данные выбранных компонентов, на странице готовности установки. Без скроллов - ssNone, с вертикальным скроллом - ssVertial, с горизонтальным скроллом - ssHorizontal, и со всеми скроллами - просто уберите эту строчку или ssBoth
ReadyMemo.ScrollBars:= ssVertical; //ssNone
end;
//Это нужно для того чтоб картинка нормально отображалась
with WizardForm do
begin
InnerNotebook.Left := ScaleX(0);
InnerNotebook.Top := ScaleY(0);
InnerNotebook.Width := ScaleX(497); //Ширина инсталлятора
InnerNotebook.Height := ScaleY(360); //Высота инсталлятора
OuterNotebook.Left := ScaleX(0);
OuterNotebook.Top := ScaleY(0);
OuterNotebook.Width := ScaleX(497); //Ширина инсталлятора
OuterNotebook.Height := ScaleY(360); //Высота инсталлятора
end;
//Это нужно для того чтоб картинка нормально отображалась
//WelcomePage, создаем надписи на странице
WelcomeLabel1:= TLabel.Create(WizardForm);
with WelcomeLabel1 do
begin
Left:= ScaleX(40);
Top:= ScaleY(33);
Width:= ScaleX(301);
Height:= ScaleY(50);
AutoSize:= false;
Transparent:= true;
WordWrap:= true;
Font.Size:= 14;
Font.Color:=ClWhite
Font.Style := [fsBold]
Parent:= WizardForm.WelcomePage;
Caption:= WizardForm.WelcomeLabel1.Caption;
end;
WelcomeLabel2:=TLabel.Create(WizardForm);
with WelcomeLabel2 do
begin
Left:= ScaleX(40);
Top:= ScaleY(100);
Width:= ScaleX(301);
Height:= ScaleY(300);
AutoSize:= false;
WordWrap:= true;
Transparent:= true;
Parent:= WizardForm.WelcomePage;
Caption:= WizardForm.WelcomeLabel2.Caption;
end;
//WelcomePage
//licensePage, создаем надписи, кнопки на странице
LicenseLabel1:=TLabel.Create(WizardForm)
with LicenseLabel1 do
begin
Left:=40
Top:=70
Width:=465
Height:=28
AutoSize:=False
WordWrap:=True
Transparent:=True
Caption:=WizardForm.LicenseLabel1.Caption
Parent:=WizardForm.LicensePage
end;
WizardForm.LicenseMemo.Left:=40
WizardForm.LicenseMemo.Top:=108
WizardForm.LicenseMemo.Parent:=WizardForm.LicensePage
WizardForm.LicenseAcceptedRadio.Left:=40
WizardForm.LicenseAcceptedRadio.Top:=265
WizardForm.LicenseAcceptedRadio.Width:=14
WizardForm.LicenseAcceptedRadio.Height:=14
WizardForm.LicenseAcceptedRadio.Color:=clBlack
WizardForm.LicenseAcceptedRadio.Parent:=WizardForm.LicensePage
LicenseAcceptedLabel:=TLabel.Create(WizardForm)
with LicenseAcceptedLabel do
begin
Left:=56
Top:=265
Transparent:=True
Caption:=WizardForm.LicenseAcceptedRadio.Caption
Parent:=WizardForm.LicensePage
OnClick:= @YesRadioOnClick
end;
WizardForm.LicenseNotAcceptedRadio.Left:=40
WizardForm.LicenseNotAcceptedRadio.Top:=285
WizardForm.LicenseNotAcceptedRadio.Width:=14
WizardForm.LicenseNotAcceptedRadio.Height:=14
WizardForm.LicenseNotAcceptedRadio.Color:=clBlack
WizardForm.LicenseNotAcceptedRadio.Parent:=WizardForm.LicensePage
LicenseNotAcceptedLabel:=TLabel.Create(WizardForm)
with LicenseNotAcceptedLabel do
begin
Left:=56
Top:=285
Transparent:=True
Caption:=WizardForm.LicenseNotAcceptedRadio.Caption
Parent:=WizardForm.LicensePage;
OnClick:= @NoRadioOnClick;
end;
PageNameLabel:= TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left:= WizardForm.PageNameLabel.Left;
Top:= WizardForm.PageNameLabel.Top;
Width:= ScaleX(300);
Height:= ScaleY(14);
AutoSize:= False;
Font.Style:= [fsBold];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.LicensePage;
end;
PageDescriptionLabel:= TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left:= WizardForm.PageDescriptionLabel.Left;
Top:= WizardForm.PageDescriptionLabel.top;
Width:= ScaleX(400);
Height:= WizardForm.PageDescriptionLabel.Height;
AutoSize:= False;
Wordwrap:= True;
Transparent := True;
Parent:= WizardForm.LicensePage;
end;
//LicensePage
//InfoBeforePage
InfoBeforeClickLabel:= TLabel.Create(WizardForm);
with InfoBeforeClickLabel do
begin
Left:= ScaleX(40);
Top:= ScaleY(70)
Width:= WizardForm.InfoBeforeClickLabel.Width;
Height:= WizardForm.InfoBeforeClickLabel.Height;
Transparent:= true;
AutoSize:= False;
WordWrap:= true;
Parent:= WizardForm.InfoBeforePage;
Caption:= WizardForm.InfoBeforeClickLabel.Caption;
end;
WizardForm.InfoBeforeMemo.left:= ScaleX(40);
WizardForm.InfoBeforeMemo.Top:= ScaleY(108);
PageNameLabel2:= TLabel.Create(WizardForm);
with PageNameLabel2 do
begin
Left:= WizardForm.PageNameLabel.Left;
Top:= WizardForm.PageNameLabel.Top;
Width:= ScaleX(300);
Height:= ScaleY(14);
AutoSize:= False;
Font.Style:= [fsBold];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.InfoBeforePage;
end;
PageDescriptionLabel2:= TLabel.Create(WizardForm);
with PageDescriptionLabel2 do
begin
Left:= WizardForm.PageDescriptionLabel.Left;
Top:= WizardForm.PageDescriptionLabel.top;
Width:= ScaleX(400);
Height:= WizardForm.PageDescriptionLabel.Height;
AutoSize:= False;
Wordwrap:= True;
Transparent := True;
Parent:= WizardForm.InfoBeforePage;
end;
//InfoBeforePage
//SelectDirPage
SelectDirLabel:= TLabel.Create(WizardForm);
with SelectDirLabel do
begin
Caption:= WizardForm.SelectDirLabel.Caption;
Left:= ScaleX(40);
Top:= WizardForm.SelectDirLabel.Top + ScaleY(62);
Width:= WizardForm.SelectDirLabel.Width;
Height:= WizardForm.SelectDirLabel.Height;
Transparent := True;
Parent:= WizardForm.SelectDirPage;
end;
SelectDirLabelBrowse:= TLabel.Create(WizardForm);
with SelectDirLabelBrowse do
begin
Caption:= WizardForm.SelectDirBrowseLabel.Caption;
Left:= ScaleX(40);
Top:= WizardForm.SelectDirBrowseLabel.Top + ScaleY(62);
Width:= WizardForm.SelectDirBrowseLabel.Width;
Height:= WizardForm.SelectDirBrowseLabel.Height;
WordWrap:= True;
Transparent:= True;
Parent:= WizardForm.SelectDirPage;
end;
PageNameLabel3:= TLabel.Create(WizardForm);
with PageNameLabel3 do
begin
Left:= WizardForm.PageNameLabel.Left;
Top:= WizardForm.PageNameLabel.Top;
Width:= ScaleX(300);
Height:= ScaleY(14);
AutoSize:= False;
Font.Style:= [fsBold];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.SelectDirPage;
end;
PageDescriptionLabel3:= TLabel.Create(WizardForm);
with PageDescriptionLabel3 do
begin
Left:= WizardForm.PageDescriptionLabel.Left;
Top:= WizardForm.PageDescriptionLabel.top;
Width:= ScaleX(400);
Height:= WizardForm.PageDescriptionLabel.Height;
AutoSize:= False;
Wordwrap:= True;
Transparent := True;
Parent:= WizardForm.SelectDirPage;
end;
DirectX:= TCheckBox.Create(WizardForm);
with DirectX do
begin
Parent:= WizardForm.SelectDirPage;
Left:= WizardForm.DirEdit.Left + 200;
Top:= WizardForm.DirEdit.Top + 35;
Width:= ScaleX(14);
Height:= ScaleY(14);
TabOrder:= 0;
Checked:= False;
end;
DirectXLabel:= TLabel.Create(WizardForm);
with DirectXLabel do
begin
Caption:= ExpandConstant('{cm:DRT}');
Left:= WizardForm.DirEdit.Left + 220;
Top:= WizardForm.DirEdit.Top + 35;
Width:= ScaleX(150);
Height:= ScaleY(13);
Transparent := True;
Parent:= WizardForm.SelectDirPage;
OnClick:= @DirectXLabelOnClick;
end;
Redist:= TCheckBox.Create(WizardForm);
with Redist do
begin
Parent:= WizardForm.SelectDirPage;
Left:= WizardForm.DirEdit.Left + 200;
Top:= WizardForm.DirEdit.Top + 70;
Width:= ScaleX(14);
Height:= ScaleY(14);
TabOrder:= 1;
Checked:= False;
end;
RedistLabel:= TLabel.Create(WizardForm);
with RedistLabel do
begin
Caption:=ExpandConstant('{cm:Redist}');
Left:= WizardForm.DirEdit.Left + 220;
Top:= WizardForm.DirEdit.Top + 70;
Width:= ScaleX(150);
Height:= ScaleY(13);
Transparent := True;
Parent:= WizardForm.SelectDirPage;
OnClick:= @RedistOnClick;
end;
Icons:= TCheckBox.Create(WizardForm);
with Icons do
begin
Parent:= WizardForm.SelectDirPage;
Left:= WizardForm.DirEdit.Left;
Top:= WizardForm.DirEdit.Top + 35;
Width:= ScaleX(14);
Height:= ScaleY(14);
TabOrder:= 2;
Checked:= False;
end;
IconsLabel:= TLabel.Create(WizardForm);
with IconsLabel do
begin
Caption:=ExpandConstant('{cm:Icons}');
Left:= WizardForm.DirEdit.Left + 20;
Top:= WizardForm.DirEdit.Top + 35;
Width:= ScaleX(150);
Height:= ScaleY(13);
Transparent := True;
Parent:= WizardForm.SelectDirPage;
OnClick:= @IconsOnClick;
end;
Group:= TCheckBox.Create(WizardForm);
with Group do
begin
Parent:= WizardForm.SelectDirPage;
Left:= WizardForm.DirEdit.Left;
Top:= WizardForm.DirEdit.Top + 70;
Width:= ScaleX(14);
Height:= ScaleY(14);
TabOrder:= 3;
Checked:= False;
end;
GroupLabel:= TLabel.Create(WizardForm);
with GroupLabel do
begin
Caption:=ExpandConstant('{cm:Group}');
Left:= WizardForm.DirEdit.Left + 20;
Top:= WizardForm.DirEdit.Top + 70;
Width:= ScaleX(150);
Height:= ScaleY(13);
Transparent := True;
Parent:= WizardForm.SelectDirPage;
OnClick:= @GroupOnClick;
end;
NeedSpaceLabel:= TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent:= WizardForm.SelectDirPage;
Left:= WizardForm.DirEdit.Left;
Top:= ScaleY(262);
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(250);
Width:= ScaleX(209);
Height:= ScaleY(13);
Transparent:= True;
end;
WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption;
WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0;
//SelectDirPage
//SelectComponentPage
SelectComponentsLabel:= TLabel.Create(WizardForm)
with SelectComponentsLabel do
begin
Left:= ScaleX(40);
Top:= SelectDirLabel.Top;
Width:= WizardForm.SelectComponentsLabel.Width;
Height:= WizardForm.SelectComponentsLabel.Height;
Autosize:= false;
WordWrap:= true;
Transparent:= true;
Caption:= WizardForm.SelectComponentsLabel.Caption;
Parent:= WizardForm.SelectComponentsPage;
end;
WizardForm.TypesCombo.Left:= ScaleX(40);
WizardForm.TypesCombo.Top:= ScaleY(120)
WizardForm.TypesCombo.Font.Color:= clBlack;
WizardForm.ComponentsList.Left:= ScaleX(40)
WizardForm.ComponentsList.Top:= ScaleY(155);
WizardForm.ComponentsList.Font.Color:= clBlack;
ComponentsDiskSpaceLabel:= TLabel.Create(WizardForm);
with ComponentsDiskSpaceLabel do
begin
Left:= ScaleX(40);
Top:= ScaleY(295);
Width:= WizardForm.ComponentsDiskSpaceLabel.Width;
Height:= WizardForm.ComponentsDiskSpaceLabel.Height;
Autosize:= false;
WordWrap:= true;
Transparent:= true;
Caption:= WizardForm.ComponentsDiskSpaceLabel.Caption;
Parent:= WizardForm.SelectComponentsPage;
end;
PageNameLabel4:= TLabel.Create(WizardForm);
with PageNameLabel4 do
begin
Left:= WizardForm.PageNameLabel.Left;
Top:= WizardForm.PageNameLabel.Top;
Width:= ScaleX(300);
Height:= ScaleY(14);
AutoSize:= False;
Font.Style:= [fsBold];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.SelectComponentsPage;
end;
PageDescriptionLabel4:= TLabel.Create(WizardForm);
with PageDescriptionLabel4 do
begin
Left:= WizardForm.PageDescriptionLabel.Left;
Top:= WizardForm.PageDescriptionLabel.top;
Width:= ScaleX(400);
Height:= WizardForm.PageDescriptionLabel.Height;
AutoSize:= False;
Wordwrap:= True;
Transparent := True;
Parent:= WizardForm.SelectComponentsPage;
end;
//SelectComponentPage
//ProgrammGroupPage
SelectStartMenuFolderLabel:=TLabel.Create(WizardForm)
with SelectStartMenuFolderLabel do
begin
Left:= ScaleX(40);
Top:= WizardForm.SelectDirLabel.Top + ScaleY(62);
Width:= WizardForm.SelectDirBrowseLabel.Width;
Height:= WizardForm.SelectDirBrowseLabel.Height;
AutoSize:=False
WordWrap:=True
Transparent:=True
Caption:=WizardForm.SelectStartMenuFolderLabel.Caption
Parent:=WizardForm.SelectProgramGroupPage
end;
SelectStartMenuFolderBrowseLabel:=TLabel.Create(WizardForm)
with SelectStartMenuFolderBrowseLabel do
begin
Left:= ScaleX(40);
Top:= WizardForm.SelectDirBrowseLabel.Top + ScaleY(62);
Width:= WizardForm.SelectDirBrowseLabel.Width
Height:= WizardForm.SelectDirBrowseLabel.Height
AutoSize:=False
WordWrap:=True
Transparent:=True
Caption:=WizardForm.SelectStartMenuFolderBrowseLabel.Caption
Parent:=WizardForm.SelectProgramGroupPage
end;
WizardForm.NoIconsCheck.Left:=ScaleX(40);
WizardForm.NoIconsCheck.Top:= WizardForm.DirEdit.Top + ScaleY(140)
WizardForm.NoIconsCheck.Width:=13
WizardForm.NoIconsCheck.Height:=13
WizardForm.NoIconsCheck.Visible:=True
WizardForm.NoIconsCheck.Parent:= WizardForm.SelectProgramGroupPage
NoIconsLabel:=TLabel.Create(WizardForm)
with NoIconsLabel do
begin
Left:=ScaleX(56);
Top:= WizardForm.DirEdit.Top + ScaleY(140)
Transparent:=True
OnClick:= @NoIconsLabelOnClick
Caption:=WizardForm.NoIconsCheck.Caption
Parent:=WizardForm.SelectProgramGroupPage
end;
PageNameLabel5:= TLabel.Create(WizardForm);
with PageNameLabel5 do
begin
Left:= WizardForm.PageNameLabel.Left;
Top:= WizardForm.PageNameLabel.Top;
Width:= ScaleX(300);
Height:= ScaleY(14);
AutoSize:= False;
Font.Style:= [fsBold];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.SelectProgramGroupPage;
end;
PageDescriptionLabel5:= TLabel.Create(WizardForm);
with PageDescriptionLabel5 do
begin
Left:= WizardForm.PageDescriptionLabel.Left;
Top:= WizardForm.PageDescriptionLabel.top;
Width:= ScaleX(400);
Height:= WizardForm.PageDescriptionLabel.Height;
AutoSize:= False;
Wordwrap:= True;
Transparent := True;
Parent:= WizardForm.SelectProgramGroupPage;
end;
//ProgrammGroupPage
//InstallingPage
StatusLabel:= TLabel.Create(WizardForm);
with StatusLabel do
begin
Left:= ScaleX(20);
Top:= ScaleY(80);
Width:= WizardForm.StatusLabel.Width;
Height:= WizardForm.StatusLabel.Height;
AutoSize:= False;
Transparent := True;
Parent:= WizardForm.InstallingPage;
Caption:= 'Распаковка файлов...'
end;
FilenameLabel:= TLabel.Create(WizardForm);
with FilenameLabel do
begin
Left:= ScaleX(20);
Top:= ScaleY(100);
Width:= WizardForm.StatusLabel.Width;
Height:= WizardForm.StatusLabel.Height;
AutoSize:= False;
Transparent := True;
Parent:= WizardForm.InstallingPage;
end;
PageNameLabel7:= TLabel.Create(WizardForm);
with PageNameLabel7 do
begin
Left:= WizardForm.PageNameLabel.Left;
Top:= WizardForm.PageNameLabel.Top;
Width:= ScaleX(300);
Height:= ScaleY(14);
AutoSize:= False;
Font.Style:= [fsBold];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.InstallingPage;
end;
PageDescriptionLabel7:= TLabel.Create(WizardForm);
with PageDescriptionLabel7 do
begin
Left:= WizardForm.PageDescriptionLabel.Left;
Top:= WizardForm.PageDescriptionLabel.top;
Width:= ScaleX(400);
Height:= WizardForm.PageDescriptionLabel.Height;
AutoSize:= False;
Wordwrap:= True;
Transparent := True;
Parent:= WizardForm.InstallingPage;
end;
//InstallingPage
//InfoAfterPage
InfoAfterClickLabel:= TLabel.Create(WizardForm);
with InfoAfterClickLabel do
begin
Left:= ScaleX(40);
Top:= ScaleY(70)
Width:= WizardForm.InfoAfterClickLabel.Width;
Height:= WizardForm.InfoAfterClickLabel.Height;
Transparent:= true;
AutoSize:= False;
WordWrap:= true;
Parent:= WizardForm.InfoAfterPage;
Caption:= WizardForm.InfoAfterClickLabel.Caption;
end;
WizardForm.InfoAfterMemo.left:= ScaleX(40);
WizardForm.InfoAfterMemo.Top:= ScaleY(108);
PageNameLabel8:= TLabel.Create(WizardForm);
with PageNameLabel8 do
begin
Left:= WizardForm.PageNameLabel.Left;
Top:= WizardForm.PageNameLabel.Top;
Width:= ScaleX(300);
Height:= ScaleY(14);
AutoSize:= False;
Font.Style:= [fsBold];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.InfoAfterPage;
end;
PageDescriptionLabel8:= TLabel.Create(WizardForm);
with PageDescriptionLabel8 do
begin
Left:= WizardForm.PageDescriptionLabel.Left;
Top:= WizardForm.PageDescriptionLabel.top;
Width:= ScaleX(400);
Height:= WizardForm.PageDescriptionLabel.Height;
AutoSize:= False;
Wordwrap:= True;
Transparent := True;
Parent:= WizardForm.InfoAfterPage;
end;
//InfoAfterPage
//FinishedPage
FinishedHeadingLabel:=TLabel.Create(WizardForm);
with FinishedHeadingLabel do
begin
Top:= ScaleY(33);
Left:= ScaleX(40);
Width:= ScaleX(301);
Height:= ScaleY(53);
AutoSize:= false;
WordWrap:= true;
Font.Size:= 14;
Font.Color:=ClWhite
Font.Style := [fsBold]
Transparent:= true;
Parent:= WizardForm.FinishedPage;
Caption:= WizardForm.FinishedHeadingLabel.Caption;
end;
FinishedLabel:= TLabel.Create(WizardForm);
with FinishedLabel do
begin
Left:= ScaleX(40);
Top:= ScaleY(100);
Width:= ScaleX(301);
Height:= ScaleY(54);
AutoSize:= false;
WordWrap:= true;
Transparent:= true;
Parent:= WizardForm.FinishedPage;
Caption:= ExpandConstant('{cm:Finished1}') + #10#13#10 + ExpandConstant('{cm:Finished2}')
end;
RunProgram:= TCheckBox.Create(WizardForm);
with RunProgram do
begin
Parent:= WizardForm.FinishedPage;
Left:= ScaleX(176);
Top:= ScaleY(200);
Width:= ScaleX(14);
Height:= ScaleY(14);
TabOrder:= 4;
Checked:= True;
end;
RunProgramLabel:= TLabel.Create(WizardForm);
with RunProgramLabel do
begin
Caption:=ExpandConstant('{cm:RunProgram}');
Left:= ScaleX(196);
Top:= ScaleY(200);
Width:= ScaleX(150);
Height:= ScaleY(13);
Transparent := True;
Parent:= WizardForm.FinishedPage;
OnClick:= @RunProgramOnClick;
end;
//FinishedPage
end;
///////
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall';
function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';
function InitializeSetup:boolean;
begin
ExtractTemporaryFile('black.cjstyles');
LoadSkin(ExpandConstant('{tmp}')+'\black.cjstyles', '');
Result:=True;
end;
Sotonisto
11-01-2010, 23:26
Serega, не могли бы Вы мне все-таки помочь?
Мне необходимо доделать 2 страницы - это выбор папки в меню пуск и создание ярлыков.
Я брал скрипт отсюда (http://www.forum.oszone.ru/post-1242285-250.html).
Там написано что несколько страниц не хватает и если что - доделать по шаблону, но для меня это суицид (я даж названия страниц не знаю).
http://i077.radikal.ru/1001/c1/041d77a53e9et.jpg (http://radikal.ru/F/i077.radikal.ru/1001/c1/041d77a53e9e.jpg.html)
R.i.m.s.k.y.
12-01-2010, 13:17
Вопрос знатокам:
Можно ли в окне выбора компонентов сделать так, чтобы определенные компоненты отображались в зависимости от ОС, под которой запущен инсталлер? И в зависимости от того, есть ли определенный файл/файлы менялась название компоненты и действие при ее выборе
В общем надо сделать так: под вин7 переименовать пару файликов (ее встроенных декодеров, а то они ffdshow перекрывают), соответственно если инсталлер запускается под вистой и ниже - этот компонент не отображается и ничего не делает, если ОС = Вин7 и файлы есть - отображается компонента с названием "Переименовать..." и действие соответсвующее, если ОС = Вин7 и файлы уже переименованы (есть mfds.dll.bak и другие) - название "вернуть обратно" и действие - переименовать обратно, если ОС = Вин7 и нету никаких файлов (кто-то другой постарался) - серый компонент или название "переименовать нельзя" и ничего не делать.
Как переменовывать я знаю - cmd.exe /c rename {sys}\MP3DMOD.DLL MP3DMOD.DLL.bak, а вот как в окне компонентов - реализовать требуемое - не знаю.
Файлы не защищены, руками переименовываются нормально.
Совсем хорошо бы было, если бы в окне выбора компонентов еще написать что делается и для чего, т.е. вставить свой текст (желательно в зависимости от ОС и наличия файлов).
Еще вопрос не по этой теме, но все-же: такой же эффект можно сделать в реестре. Ключи реестра я тоже знаю, но в вин7 к ним имеет доступ только TrustedInstaller. Руками можно к ним получить доступ и внести изменения (владельцем поставить текущего пользователя), но как это автоматизировать?
Спасибо за помощь!
Может я не по теме, но очень нужен реестр игры «Войны древности: Спарта». Помогите пожалуйста. »
Сам дистрибутив игры есть?
Если да - поможет утилитка RegShot
R.i.m.s.k.y.
14-01-2010, 14:03
Неужели мне никто не поможет?
Ну хотя бы намекните как, пожалуйста.
Можно через Tasks, да хоть как-нибудь.
Косметический вопрос - как убрать на странице компонентов выпадающий список "Полная установка - выборочная установка..."
Мне необходимо доделать 2 страницы - это выбор папки в меню пуск и создание ярлыков. »
Будет время по свободней, доделаю.
Ну хотя бы намекните как, пожалуйста. »
К сожелению с Windows7 знаком только по скриншотам, поэтому ничего сказать не могу.
как убрать на странице компонентов выпадающий список »
WizardForm.TypesCombo.Hide;
Sotonisto
15-01-2010, 22:16
Народ, вод я видел один репак игры Painkiller (сделан точно inno setup'ом), там когда запускаешь инсталл сначала появляется картинка с логотипом игры (небольшая, примерно 500х300) а потом уже окно инсталлятора. Так вот, как это можно реализовать?
Habetdin
15-01-2010, 22:31
Sotonisto, http://members.home.nl/albartus/inno/ISSI_Functions/issi_splash.htm
Это splash вот код под png
[Files]
Source: splash.png; DestDir: {tmp}; Flags: dontcopy nocompression
Source: isgsg.dll; DestDir: {tmp}; Flags: dontcopy nocompression
[Code]
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';
procedure InitializeWizard();
begin
ExtractTemporaryFile('splash.png');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\splash.png',1000,3000,1000,0,255,False, $FFFFFF,10);
end;
Это splash вот код под .bmp
[Files]
Source: 1.bmp; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: isgsg.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
[Code]
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';
procedure InitializeWizard;
begin
WizardForm.Position:=poScreenCenter;
ExtractTemporaryFile('1.bmp');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\1.bmp',1000,3000,1000,0,255,False,$FFFF FF);
end;
vint56, не хватает только для jpg :) [Files]
Source: splash.jpg; DestDir: {tmp}; Flags: ignoreversion dontcopy
Source: sgsg.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy
[Code]
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';
procedure InitializeWizard;
begin
ExtractTemporaryFile('splash.jpg');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\splash.jpg',1000,3000,1000,0,255,False, $FFFFFF,10);
end;
ну, код для бмп с последней версией библиотеки работать не будет
vint56, не хватает только для jpg »
тогда уж забыли код для анимированных gif :)
Sotonisto
16-01-2010, 17:46
Люди, я хочу сделать типо патчик (замена англ. файлов озвучки на русский).
Вот мне бы хотелось что бы не нужно было создавать папку (и указывать к ней путь) - ну что бы инсталл определил по этим записям в реестре где установлена игра и сам кинул туда файлы.
Это реально сделать?
Root: HKLM; Subkey: "Software\Soto"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\Soto\Left 4 Dead"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\Soto\Left 4 Dead"; ValueType: string; ValueName: "Version"; ValueData: "1.0.0.1"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\Soto\Left 4 Dead"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"; Flags: uninsdeletekey
И если это можно сделать (в чем я не сомневаюсь) как мне отключить создание папки в меню пуск?
Sotonisto, вот пример:
[Setup]
AppName=NBA 2K10
AppVerName=NBA 2K10
DefaultDirName={reg:HKLM\Software\2K Sports\NBA 2K10,InstallDir}
OutputDir=.
[code]
function InitializeSetup(): Boolean;
var
ResultCode:Integer;
begin
if RegValueExists(HKEY_LOCAL_MACHINE, 'Software\2K Sports\NBA 2K10','InstallDir')
then
Result := True
else
MsgBox('Игра NBA 2K10 не найдена.',mbInformation, mb_Ok)
end;
Procedure InitializeWizard();
begin
WizardForm.DirEdit.Enabled:=False;
WizardForm.DirBrowseButton.Enabled:=False;
end;
Про Пуск: добавь в [Setup] строку AllowNoIcons=yes, чтобы добавить это (http://i066.radikal.ru/1001/d9/9d6cded4fd56.png)
Shegorat
16-01-2010, 19:53
2ALL
Вот скрипт распаковки FreeArc + ISPrecomp 0.7. Теперь показывает нормально надписи, ISPrecomp автоматически получает названия файлов. Один минус - прогресс отображается неверно, но это уже к Vo1T'у, чтоб поправил дллку.
Про Пуск: добавь в [Setup] строку AllowNoIcons=yes, чтобы добавить это »
Ну если пользователь заведомо не хочет создавать иконки, гораздо проще просто не прописывать их в секции [Icons], тогда и страницы не будет вообще...
YURSHAT, можно и так, но насколько я понял, пользователь хочет отключить, а не избавиться от них вообще... :)
Sotonisto
17-01-2010, 13:50
отключить »
Ну да, я хотел что бы отключали.
Тут любому понятно что если они не нужны, то можно их просто не прописывать :)
A1EXXX, а вот это обязательно?
DefaultDirName={reg:HKLM\Software\2K Sports\NBA 2K10,InstallDir}
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.