Войти

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 [114] 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

No4noylis
11-07-2011, 15:14
vint56, Вот мой скрипт:

#include "botva2.iss"
#define MyAppName "My Program"
[Setup]
AppId={{1D0BAE20-BB22-4540-BBC7-E7531009F9BF}
AppName=My Program
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
DisableReadyPage=True

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

[CustomMessages]
russian.Welcome1=Вас приветствует Мастер установки игры
russian.Welcome2=Программа установит игру {#MyAppName} на Ваш компьютер.%n%nРекомендуется закрыть антивирусные пакеты, а также все прочие приложения перед тем, как продолжить.%n%nНажмите «Далее», чтобы продолжить, или «Отмена», чтобы выйти из программы установки.
russian.Space=Доступно места на диске:
russian.Space1=Требуется места на диске:
russian.Status=Пожалуйста, подождите, пока игра установится на Ваш компьютер.
russian.DescrLbl1=В какую папку Вы хотите установить {#MyAppName}?
russian.Language=Выберите язык игры
russian.StartMenuLbl=Нажмите «Установить», чтобы продолжить. Если Вы хотите выбрать другую папку, нажмите «Обзор».
russian.Finished1=Установка игры {#MyAppName} успешно завершена.
russian.Finished2=Игра {#MyAppName} была успешно установлена на Ваш компьютер. Для ее запуска выберите соответствующий ярлык в меню «Пуск» или ярлык на Рабочем столе.
russian.Finished3=Нажмите «Завершить», чтобы выйти из программы установки.
russian.DirectX=Обновить DirectX
russian.DirectXInstall=Идет обновление DirectX...
russian.Icons=Добавить ярлык на Рабочий стол
russian.Uninstall=Удалить {#MyAppName}

[Files]
Source: InstallFiles\*; Flags: dontcopy
Source: 1.bmp; DestDir: {tmp}

[Icons]
Name: {group}\My Program; Filename: {app}\MyProg.exe
Name: {group}\{cm:UninstallProgram,My Program}; Filename: {uninstallexe}

[_code]
var
IconsLabel, NoIconsLabel, GroupLabel,
SelectDirLabel, SelectDirBrowseLabel,
PageNameLabel1, PageNameLabel2, PageNameLabel3,
PageDescriptionLabel1, PageDescriptionLabel2, PageDescriptionLabel3,
StatusLabel, FilenameLabel, WelcomeLabel1, WelcomeLabel2,FinishedLabel, FinishedHeadingLabel,
SelectStartMenuFolderLabel, SelectStartMenuFolderBrowseLabel, ReadyLabel, NoIconsLabel: TLabel;
NoIconsCheck: TCheckBox;
BmpFile: TBitmapImage;

procedure CheckStartMenuOnClick(Sender: TObject);
begin
if WizardForm.NoIconsCheck.Checked then
begin
WizardForm.GroupEdit.Enabled := not (WizardForm.GroupEdit.Enabled);
WizardForm.GroupBrowseButton.Enabled := False;
end else
begin
WizardForm.GroupEdit.Enabled := True;
WizardForm.GroupEdit.Enabled := WizardForm.GroupEdit.Enabled;
WizardForm.GroupBrowseButton.Enabled := True;
end;
end;

procedure CheckNoIconsCheck(Sender: TObject);
begin
if (WizardForm.NoIconsCheck.Checked = False) then
WizardForm.NoIconsCheck.Checked := True
else
WizardForm.NoIconsCheck.Checked := False;
end;

procedure InitializeWizard1();
begin

ExtractTemporaryFile('1.bmp');


BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.Top:= ScaleY(0);
BmpFile.Left:= ScaleX(0);
BmpFile.Width:= ScaleX(800);
BmpFile.Height:= ScaleY(500);
BmpFile.Stretch:= true;
BmpFile.Parent:= WizardForm.WelcomePage;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.Top:= ScaleY(0);
BmpFile.Left:= ScaleX(0);
BmpFile.Width:= ScaleX(800);
BmpFile.Height:= ScaleY(500);
BmpFile.Stretch:= true;
BmpFile.Parent:= WizardForm.SelectDirPage;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.Top:= ScaleY(0);
BmpFile.Left:= ScaleX(0);
BmpFile.Width:= ScaleX(800);
BmpFile.Height:= ScaleY(500);
BmpFile.Stretch:= true;
BmpFile.Parent:= WizardForm.SelectProgramGroupPage;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.Top:= ScaleY(0);
BmpFile.Left:= ScaleX(0);
BmpFile.Width:= ScaleX(800);
BmpFile.Height:= ScaleY(500);
BmpFile.Stretch:= true;
BmpFile.Parent:= WizardForm.InstallingPage;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.Top:= ScaleY(0);
BmpFile.Left:= ScaleX(0);
BmpFile.Width:= ScaleX(800);
BmpFile.Height:= ScaleY(500);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.FinishedPage;

WizardForm.ClientWidth:=ScaleX(800);
WizardForm.ClientHeight:=ScaleY(600);
WizardForm.Font.Color:=$ffffff;
WizardForm.Center;

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;
end;

with WizardForm do
begin
InnerNotebook.Left := ScaleX(0);
InnerNotebook.Top := ScaleY(0);
InnerNotebook.Width := ScaleX(800);
InnerNotebook.Height := ScaleY(600);
OuterNotebook.Left := ScaleX(0);
OuterNotebook.Top := ScaleY(0);
OuterNotebook.Width := ScaleX(800);
OuterNotebook.Height := ScaleY(600);
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
NextButton.Left:=NextButton.Left + ScaleX(255);
NextButton.top:=NextButton.top + ScaleX(160);
BackButton.Left:=BackButton.Left + ScaleX(250);
BackButton.top:=BackButton.top + ScaleX(160);
CancelButton.Left:=CancelButton.Left + ScaleX(250);
CancelButton.top:=CancelButton.top + ScaleX(160);
DirBrowseButton.BringToFront;
DirBrowseButton.Left:=DirBrowseButton.Left + ScaleX(280);
GroupBrowseButton.Left:=GroupBrowseButton.Left + ScaleX(280);
GroupBrowseButton.BringToFront;

end;

////////////////////// WelcomePage //////////////////////

WelcomeLabel1:= TLabel.Create(WizardForm);
with WelcomeLabel1 do
begin
Left:= ScaleX(70);
Top:= ScaleY(180);
Width:= ScaleX(650);
Height:= ScaleY(65);
AutoSize:= false;
Alignment := taCenter;
Transparent:= true;
WordWrap:= true;
Font.Name:='Georgia';
Font.Size:= 16;
Font.Color:=ClWhite;
Font.Style := [fsBold];
Parent:= WizardForm.WelcomePage;
Caption:= ExpandConstant('{cm:Welcome1}')+#13+('{#MyAppName}');
end;

WelcomeLabel2:=TLabel.Create(WizardForm);
with WelcomeLabel2 do
begin
Top:= ScaleY(270);
Left:= ScaleX(70);
Width:= ScaleX(650);
Height:= ScaleY(200);
AutoSize:= false;
WordWrap:= true;
Font.Name:= 'Georgia';
Font.Size:= 11
Font.Style := [fsBold, fsItalic];
Font.Color:=ClWhite;
Transparent:= true;
Parent:= WizardForm.WelcomePage;
Caption:= ExpandConstant('{cm:Welcome2}');
end;

////////////////////// WelcomePage //////////////////////

////////////////////// SelectDirPage //////////////////////

PageNameLabel1:= TLabel.Create(WizardForm);
with PageNameLabel1 do
begin
Left:= ScaleX(65);
Top:= ScaleY(185);
Width:= ScaleX(300);
Height:= ScaleY(30);
AutoSize:= False;
Font.Name:= 'Georgia'
Font.Size:= 13;
Font.Style:= [fsBold];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.SelectDirPage;
end;

PageDescriptionLabel1:= TLabel.Create(WizardForm);
with PageDescriptionLabel1 do
begin
Left:=ScaleX(95);
Top:= ScaleY(215);
Width:= ScaleX(600);
Height:= ScaleY(50);
AutoSize:= False;
Font.Name:= 'Georgia'
Font.Size:= 10;
Font.Style:= [fsBold, fsItalic];
Font.Color:= ClWhite;
Wordwrap:= True;
Transparent := True;
Parent:= WizardForm.SelectDirPage;
end;

SelectDirBrowseLabel:= TLabel.Create(WizardForm);
with SelectDirBrowseLabel do
begin
Caption:= WizardForm.SelectDirBrowseLabel.Caption;
Left:= ScaleX(120);
Top:= ScaleY(250);
Width:= ScaleX(600);
Height:= ScaleY(50);
AutoSize:= False;
WordWrap:= True;
Font.Name:= 'Georgia'
Font.Size:= 10;
Font.Style:= [fsBold, fsItalic];
Font.Color:= ClWhite;
Transparent:= True;
Parent:= WizardForm.SelectDirPage;
end;

with WizardForm do
begin
DirBrowseButton.Top:= ScaleY(305);

DirEdit.Left:= ScaleX(120);
DirEdit.Top:= ScaleY(305);
DirEdit.Width:= ScaleX(460);
DirEdit.Font.Size:= 9;
DirEdit.Font.Style:= [fsBold, fsItalic];
DirEdit.Font.Name:= 'Georgia'
end;

////////////////////// SelectDirPage //////////////////////

////////////////////// ProgrammGroupPage //////////////////////

PageNameLabel2:= TLabel.Create(WizardForm);
with PageNameLabel2 do
begin
Left:= ScaleX(65);
Top:= ScaleY(185);
Width:= ScaleX(350);
Height:= ScaleY(30);
AutoSize:= False;
Font.Name:= 'Georgia';
Font.Size:= 13;
Font.Style:= [fsBold];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.SelectProgramGroupPage;
end;

PageDescriptionLabel2:= TLabel.Create(WizardForm);
with PageDescriptionLabel2 do
begin
Left:=ScaleX(95);
Top:= ScaleY(215);
Width:= ScaleX(600);
Height:= ScaleY(50);
AutoSize:= False;
Font.Name:= 'Georgia'
Font.Size:= 10;
Font.Style:= [fsBold, fsItalic];
Font.Color:= ClWhite;
Wordwrap:= True;
Transparent := True;
Parent:= WizardForm.SelectProgramGroupPage;
end;

SelectStartMenuFolderBrowseLabel:=TLabel.Create(WizardForm)
with SelectStartMenuFolderBrowseLabel do
begin
Left:= ScaleX(120);
Top:= ScaleY(250);
Width:= ScaleX(600);
Height:= ScaleY(50);
AutoSize:= False;
WordWrap:= True;
Font.Name:= 'Georgia';
Font.Size:= 10;
Font.Style:= [fsBold, fsItalic];
Font.Color:= ClWhite;
WordWrap:=True
Transparent:=True
Caption:=ExpandConstant('{cm:StartMenuLbl}')
Parent:=WizardForm.SelectProgramGroupPage
end;

WizardForm.NoIconsCheck.Show;
WizardForm.NoIconsCheck.Left := ScaleX(65);
WizardForm.NoIconsCheck.Top := ScaleY(440);
WizardForm.NoIconsCheck.Width := ScaleX(13);
WizardForm.NoIconsCheck.Height := ScaleY(13);
WizardForm.NoIconsCheck.OnClick := @CheckStartMenuOnClick;
WizardForm.NoIconsCheck.Parent := WizardForm.SelectProgramGroupPage;

NoIconsLabel:= TLabel.Create(WizardForm);
with NoIconsLabel do
begin
Caption:=WizardForm.NoIconsCheck.Caption
Left:= ScaleX(90);
Top:= ScaleY(440);
Width:= ScaleX(150);
Height:= ScaleY(13);
Font.Name:= 'Georgia';
Font.Size:= 8;
Font.Style:= [fsBold, fsItalic];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.SelectProgramGroupPage
OnClick := @CheckNoIconsCheck;
end;

with WizardForm do
begin
GroupEdit.Left:= ScaleX(120);
GroupEdit.Top:= ScaleY(305);
GroupEdit.Width:= ScaleX(460);
GroupEdit.Font.Size:=9
GroupEdit.Font.Style:= [fsBold, fsItalic];
GroupEdit.Font.Name:= 'Georgia'

GroupBrowseButton.Top:= ScaleY(305);
end;

////////////////////// ProgrammGroupPage //////////////////////

////////////////////// InstallingPage //////////////////////

PageNameLabel3:= TLabel.Create(WizardForm);
with PageNameLabel3 do
begin
Left:= ScaleX(65);
Top:= ScaleY(185);
Width:= ScaleX(150);
Height:= ScaleY(20);
AutoSize:= False;
Font.Name:= 'Georgia';
Font.Size:= 13;
Font.Style:= [fsBold];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.InstallingPage;
end;

StatusLabel:= TLabel.Create(WizardForm);
with StatusLabel do
begin
Left:=ScaleX(95);
Top:= ScaleY(215);
Width:= ScaleX(600);
Height:= ScaleY(50);
AutoSize:= False;
Font.Name:= 'Georgia';
Font.Size:= 10;
Font.Style:= [fsBold, fsItalic];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.InstallingPage;
Caption:= ExpandConstant('{cm:Status}')
end;

FilenameLabel:= TLabel.Create(WizardForm);
with FilenameLabel do
begin
Left:= ScaleX(65);
Top:= ScaleY(275);
Width:= ScaleX(625);
Height:= ScaleY(20);
AutoSize:= False;
Font.Name:= 'Georgia'
Font.Size:= 10;
Font.Style:= [fsBold, fsItalic];
Font.Color:= ClWhite;
Transparent := True;
Parent:= WizardForm.InstallingPage;
end;

with WizardForm do
begin
ProgressGauge.Top:=ScaleY(310);
ProgressGauge.Left:=ScaleX(100);
ProgressGauge.Width:=ScaleX(590);
end;

////////////////////// InstallingPage //////////////////////

////////////////////// FinishedPage //////////////////////

FinishedHeadingLabel:=TLabel.Create(WizardForm);
with FinishedHeadingLabel do
begin
Left:= ScaleX(70);
Top:= ScaleY(180);
Width:= ScaleX(650);
Height:= ScaleY(65)
AutoSize:= false;
Alignment := taCenter;
WordWrap:= true;
Font.Name:='Georgia';
Font.Size:= 16;
Font.Color:=ClWhite;
Font.Style := [fsBold];
Transparent:= true;
Parent:= WizardForm.FinishedPage;
Caption:= ExpandConstant('{cm:Finished1}');
end;

FinishedLabel:= TLabel.Create(WizardForm);
with FinishedLabel do
begin
Top:= ScaleY(270);
Left:= ScaleX(70);
Width:= ScaleX(650);
Height:= ScaleY(200);
AutoSize:= false;
WordWrap:= true;
Font.Name:= 'Georgia'
Font.Size:= 11;
Font.Style := [fsBold, fsItalic];
Font.Color:=ClWhite;
Transparent:= true;
Parent:= WizardForm.FinishedPage;
Caption:= ExpandConstant('{cm:Finished2}')+#13#13+ExpandConstant('{cm:Finished3}');
end;
end;

////////////////////// FinishedPage //////////////////////

//////////////////////////////////////////////////////////////////
var
Img:Longint;

function ImgLoad(Wnd :HWND; FileName :PAnsiChar; Left, Top, Width, Height :integer; Stretch, IsBkg :boolean) :Longint; external 'ImgLoad@{tmp}\botva2.dll stdcall delayload';
procedure ImgApplyChanges(h:HWND); external 'ImgApplyChanges@{tmp}\botva2.dll stdcall delayload';
procedure gdipShutdown; external 'gdipShutdown@{tmp}\botva2.dll stdcall delayload';

function InitializeSetup:boolean;
begin
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
Result:=True;
end;

procedure InitializeWizard2;
begin
ExtractTemporaryFile('mspaint.png');
Img:=ImgLoad(WizardForm.SelectDirPage.Handle,ExpandConstant('{tmp}\mspaint.png'),230,100,100,100,Tru e,True);
ImgApplyChanges(WizardForm.SelectDirPage.Handle);
end;

procedure DeinitializeSetup;
begin
gdipShutDown;
end;

////////////////////////////////////////////////////////////////////

procedure InitializeWizard;
begin
InitializeWizard1;
InitializeWizard2;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
PageNameLabel1.Caption:= WizardForm.PageNameLabel.Caption;
PageDescriptionLabel1.Caption:= WizardForm.PageDescriptionLabel.Caption;
PageNameLabel2.Caption:= WizardForm.PageNameLabel.Caption;
PageDescriptionLabel2.Caption:= WizardForm.PageDescriptionLabel.Caption;
PageNameLabel3.Caption:= WizardForm.PageNameLabel.Caption;

if CurPageID=wpSelectProgramGroup then
begin
If WizardForm.FindComponent('NextButton') is TButton
then
TButton(WizardForm.FindComponent('NextButton')).Caption:='Установить';
end;
end;

Gnom_aka_Lexander
11-07-2011, 15:36
No4noylis, #include "botva2.iss" »
#include "botva2.iss" - в нем все функции вызова, поэтом отдельно их писать и не нужно, отсюда и Duplicate identifier :) просто удали дублирующиеся функции, и все.

Edison007
11-07-2011, 15:37
No4noylis
попробуй эту строку:
Img:=ImgLoad(WizardForm.SelectDirPage.Handle,ExpandConstant('{tmp}\mspaintу.png'),230,100,100,100,Tr ue,True);
заменить на эту
Img:=ImgLoad(WizardForm.SelectDirPage.Handle,ExpandConstant('{tmp}\mspaint.png'),230,100,100,100,Tru e,False);

No4noylis
11-07-2011, 15:40
Edison007, спасибо огромнейшее!!!!!!!!!!! Сколько я намучился с этими .PNG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

vint56
11-07-2011, 16:31
No4noylis, вот пример только я его переделал из Need for Speed™ Undercover 1 вариант добавил картинку png
http://rghost.ru/14172391

No4noylis
11-07-2011, 20:05
Помогите если кто знает в чем дело, плиз. Почему если для какого-либо компонента страницы указать Parent:= WizardForm; то он не отображается вообще, приходиться указывать страницу Parent:= WizardForm.SelectDirPage; Кто знает как сделать чтоб этот компонент отображался на всех страницах??????

leshcat
11-07-2011, 20:05
Подскажите как убрать выделенный "размер"?
http://img232.imageshack.us/img232/4263/sizeproblem.png (http://imageshack.us/photo/my-images/232/sizeproblem.png/)
Код объявления такой:
Name: g0; Description: "Игра"; Types: full; Flags: fixed
Name: g0\c1; Description: "Русский"; Types: full; Flags: exclusive
Name: g0\c2; Description: "Английский"; Types:; Flags: exclusive
Name: g0\c3; Description: "Немецкий"; Types:; Flags: exclusive

Выделенный блок копирует на свое место "размер"любого из выбранного компонента.

Gnom_aka_Lexander
11-07-2011, 20:33
Почему если для какого-либо компонента страницы указать Parent:= WizardForm; то он не отображается »
потому, что поверх WizardForm находится WizardForm.OuterNotebook, поверх которого уже идут страницы инсталлятора. WizardForm.OuterNotebook идет не до конца, WizardForm снизу, под бевелом остается свободным, если нужно можеш отобразить свой элемент там. либо скрыть WizardForm.OuterNotebook, но тогда у тебя останется голый WizardForm и придется полностью вручную заполнять страницы. А это ооочень много букв писать придется.

leshcat, В секцию [Setup] добавь строчку ShowComponentSizes=false

No4noylis
11-07-2011, 21:45
Лександер, ну так а что прописать нужно чтоб компонент отображался (а точнее .Png панель), какой параметр нужно добавить или тут что написать WizardForm.???????.Handle??????????

Gnom_aka_Lexander
11-07-2011, 21:56
No4noylis, Два варианта, как я уже писал - либо скрывать WizardForm.OuterNotebook и тогда указывать родителем WizardForm, либо создавать .Png панель на каждой странице.

Johny777
11-07-2011, 22:09
уважаемые пользователи
реально ли сделать деинсталятор с выбором компонентов??

ilyhakz001
11-07-2011, 22:56
подскажите, не могу правильно прописать распаковку, начинает распаковывать, процентов до 300 идет.


if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\Data.bin'),ExpandConstant('{app}\Data.bin'), true) then break;
if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\Data.bin'), ExpandConstant('{app}\Data.bin'), true, '') then break;
// äàëåå íàõîäÿòñÿ çàêîììåíòèðîâàíûå ïðèìåðû ðàçëè÷íûõ ôóíêöèé ðàñïàêîâêè (÷òîáû êàæäûé ðàç íå ëàçèòü â ñïðàâêó çà ïðèìåðàìè)
(*
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\arc.arc'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\Data.7z'), ExpandConstant('{app}\data1'), false, '') then break;
if not ISRarExtract ( 0, 0, ExpandConstant('{src}\data_*.rar'), ExpandConstant('{app}'), false, '') then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data1024_1024.srep'),ExpandConstant('{app}\data1024.arc'), true) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data.pcf'), ExpandConstant('{app}\data.7z'), true) then break;
if not ISxDeltaExtract ( 0, 0, 0, 640, ExpandConstant('{app}\in.pcf'), ExpandConstant('{app}\*.diff'), ExpandConstant('{app}\out.dat'), false) then break;
if not ISPackZIP ( 0, 0, ExpandConstant('{app}\1a1\*'), ExpandConstant('{app}\1a1.pak'), 2, false ) then break;
if not ISExec ( 0, 0, 0, ExpandConstant('{tmp}\Arc.exe'), ExpandConstant('x -o+ "{src}\001.arc" "{arr}\"'), ExpandConstant('{tmp}'), '...') then break;
if not ShowChangeDiskWindow ('Ïîæàëóéñòà, âñòàâüòå âòîðîé äèñê è äîæäèòåñü åãî èíèöèàëèçàöèè.', ExpandConstant('{src}'),'CODMW_2.arc') then break;

Edison007
11-07-2011, 23:38
Johny777
Да возможно, вот пару примеров: http://rghost.ru/14227021
ЗЫ если я правильно вас понял

leshcat
11-07-2011, 23:46
Лександер,
Спасибо, работает :)

Еще вопрос:
Хочу, чтобы файлы были внешними, тоесть вне архива. Посему использую флаг external.

Source: Files\* ; DestDir: {app}; Flags: recursesubdirs createallsubdirs sortfilesbyextension external; AfterInstall: Progress()

Однако получаю:
http://img32.imageshack.us/img32/1592/capturedyt.png (http://imageshack.us/photo/my-images/32/capturedyt.png/)

По-моему, установщик ищет файл вместо всей папки. Как это исправить?

UP: lol, я забыл добавить {src} в начало пути :)

Johny777
12-07-2011, 00:17
Edison007
спасибо

но как пришить его к моему скрипту
всё прописал, вылетает ошибка, в секции кода
пробовал оба примера
вот скрипт
http://rghost.net/14232021

leshcat
12-07-2011, 01:02
Мне предложили сделать свои custom иформацию с помощью этого кода:

ExtracttemporaryFile('Changelog.rtf')
LoadStringFromFile(ExpandConstant('{tmp}\Changelog.rtf'),S);
{ Creates custom wizard page }
ISCustomPage1 := CreateCustomPage(wpInfoBefore,'Изменения', 'Подробнее');

{ ISCustomPage1 }
with ISCustomPage1.Surface do
begin
Name := 'ISCustomPage1';
end;
{ RichEditViewer1 }
RichEditViewer1 := TRichEditViewer.Create(WizardForm);
with RichEditViewer1 do
begin
Name := 'RichEditViewer1';
Parent := ISCustomPage1.Surface;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(417);
Height := ScaleY(233);
RTFText :=S;
end;

//;adv_readme_2
ExtracttemporaryFile('ReleaseNotes.rtf')
LoadStringFromFile(ExpandConstant('{tmp}\ReleaseNotes.rtf'),V);
{ Creates custom wizard page }
ISCustomPage2 := CreateCustomPage(wpInfoBefore,'Oб игре', 'Информация');
{ ISCustomPage2 }
with ISCustomPage2.Surface do
begin
Name := 'ISCustomPage2';
end;
{ RichEditViewer2 }
RichEditViewer2 := TRichEditViewer.Create(WizardForm);
with RichEditViewer2 do
begin
Name := 'RichEditViewer2';
Parent := ISCustomPage2.Surface;
Left := ScaleX(0);
Top := ScaleY(0);
Width := ScaleX(417);
Height := ScaleY(233);
RTFText :=V;
end;

Он работает. Но есть два вопроса:
1. Текст можно менять (двигать\удалять) прямо в инсталляторе, чего естественно не хочется. Как запретить любое изменение, разрешив только просмотр?
2. Есть ли расширенная версия, где можно подключать что-нибудь посовершеннее, типа doc с 2003 офиса/ docx 2007?

Если есть решение ещё лучше, с нетерпением жду совета :)

No4noylis
12-07-2011, 16:10
Народ подскажите, вобщем тут такое дело: Я скрываю FilenameLabel (т.е ставлю FilenameLabel.Hide; ), а потом заново создаю его на InstallingPage, так вот, что нужно написать в параметре Caption:= чтоб отображалось имя распаковываемого файла???

murlakatamenka
12-07-2011, 16:52
Народ подскажите, вобщем тут такое дело: Я скрываю FilenameLabel (т.е ставлю FilenameLabel.Hide; ), а потом заново создаю его на InstallingPage, так вот, что нужно написать в параметре Caption:= чтоб отображалось имя распаковываемого файла??? »
так а зачем заново создавать его ?
можно просто показать

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssInstall then begin
WizardForm.FilenameLabel.Show;
end;
end;
//или так
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpInstalling then begin
WizardForm.FilenameLabel.Show;
end;
end;
Если что есть такая функция

Prototype:
function CurrentFileName: String;

Description:
Returns the destination name of the [Files] entry that is currently being processed. The returned name may include constants.

Do not attempt to call this function from outside a Check, BeforeInstall or AfterInstall event function belonging to a [Files] entry.

No4noylis
12-07-2011, 17:12
так а зачем заново создавать его ? »
Я его создаю чтоб изменить размер шрифта, цвет, стиль, и самое главное указать его прозрачность (Transparent := True; ) Ну так что можно сделать???

Gnom_aka_Lexander
12-07-2011, 21:43
No4noylis, Только через таймер, по другому не получится. Смотри мой пример, там это реализовано.




© OSzone.net 2001-2012