PDA

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


Страниц : 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

audiofeel
15-05-2014, 19:08
привет всем !!
не отображается StatusPanel.png и StatusPanel2.png
подскажите что и где не так
#include "iss\b2p.iss"
#include "iss\STS_module.iss"

[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp

[Files]
Source: Dll\*; Flags: dontcopy
Source: Files\*; Flags: dontcopy;

[_code]
var
MyFont: TFont;
Form: LongInt;

procedure CreateForm;
begin
Form := ImgLoad(WizardForm.Handle, ExpandConstant('{tmp}\Form.png'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, False, True);
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('botva2.dll')
ExtractTemporaryFile('b2p.dll')
ExtractTemporaryFile('CallbackCtrl.dll')
ExtractTemporaryFile('StatusPanel.png');
ExtractTemporaryFile('StatusPanel2.png');

WizardForm.Width:= 790;
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;

MyFont:= TFont.Create
MyFont.Size:=8;
// | отключаем функцию сортировки страниц
STS_Init(ExpandConstant('{tmp}\StatusPanel.png'), ExpandConstant('{tmp}\StatusPanel.png'), 0, 20, WizardForm.Width, 20, MyFont, False)
//Если вы отключили функцию сортировки страниц, то должны добавлять страницы
//которые будут использоваться в панели, строго по порядку их показывания
//Иначе панель будет неправильно отображать текущий статус
//Pagename PageID
STS_AddStage(CustomMessage('STSWelcomePage'), wpWelcome); //добавляет строку с названием страницы в панель
STS_AddStage(CustomMessage('STSDirEditPage'), wpSelectDir);
STS_AddStage(CustomMessage('STSReadyPage'), wpReady);
STS_AddStage(CustomMessage('STSInstallingPage'), wpInstalling);
STS_AddStage(CustomMessage('STSFinishedPage'), wpFinished);
STS_SetColor(clGray, clWhite)
STS_CreatePanel();
CreateForm;
ImgApplyChanges(WizardForm.Handle);
end;

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

procedure DeinitializeSetup();
begin
gdipShutdown
end;

Shift85
15-05-2014, 20:07
audiofeel, Юзай.http://rghost.ru/55188772

audiofeel
15-05-2014, 20:17
Shift85,
:cool:
этот пример я и взял, только там "старая" ботва" а как быть с "новой", то есть b2p.dll и тд
вот = http://file.sampo.ru/w8nrsk/

Shift85
15-05-2014, 20:30
а как быть с "новой", то есть b2p.dll »
audiofeel, Бес понятия. Придеться походу остаться на botva2.dll. :(

Dodakaedr
15-05-2014, 20:59
Ставил изображения через Редактор форм в расширенном Инно. Добавлял BitmapImage.
Возможно ли как-то сделать на этих страницах разные шапки. Если да, то как? Заранее спасибо! »
Приблизительно так:[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

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


[Files]

DestName: "WizardForm.BitmapImage1.bmp"; Source: "1.bmp"; Flags: dontcopy solidbreak
DestName: "WizardForm.BitmapImage2.bmp"; Source: "2.bmp"; Flags: dontcopy solidbreak
DestName: "WizardForm.BitmapImage3.bmp"; Source: "3.bmp"; Flags: dontcopy solidbreak
DestName: "WizardForm.BitmapImage4.bmp"; Source: "4.bmp"; Flags: dontcopy solidbreak


Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "TextRussian.isl"; Check: IsComponent(1)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "TextEnglish.isl"; Check: IsComponent(2)
Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "VoiceRussian.isl"; Check: IsComponent(4)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "VoiceEnglish.isl"; Check: IsComponent(5)

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: text; Description: Дополнительное по; Types: full;
Name: text\DirectX; Description: DirectX 9;
Name: text\Visual; Description: Microsoft Visual C++;

[CustomMessages]
RU.CompSubtitlesLng=Язык субтитров
RU.CompVoiceLng=Язык озвучки
RU.CompRussian=Русский
RU.CompEnglish=Английский


[ code]
var
Flag: Boolean;
SettingButton: TButton;
ComponentsPage: TWizardPage;
ComponentsList: TNewCheckListBox;
BitmapImage1, BitmapImage2, BitmapImage3, BitmapImage4: TBitmapImage;

procedure HideShowOnClick(Sender: TObject);
begin
if Flag = False then begin
WizardForm.ClientWidth:= ScaleX(497);
WizardForm.ClientHeight:= ScaleY(360);
Flag:= True;
SettingButton.Caption:= '[]';
end else begin
WizardForm.ClientWidth:= ScaleX(497);
WizardForm.ClientHeight:= ScaleY(500);
Flag:= False;
SettingButton.Caption:= '[]';
end;
end;

function IsComponent(CompIndex: Integer): Boolean;
var
i: Integer;
begin
Result := False;
for i := 0 to ComponentsList.ItemCount - 1 do
begin
if CompIndex <= (ComponentsList.ItemCount - 1) then
Result := ComponentsList.Checked[CompIndex];
end;
end;

procedure InitializeWizard();
begin
WizardForm.WizardSmallBitmapImage.Hide;
SettingButton:= TButton.Create(WizardForm);
SettingButton.SetBounds(ScaleX(10),ScaleY(325), ScaleX(30), ScaleY(30))
SettingButton.Caption:= '[]';
SettingButton.OnClick:= @HideShowOnClick;
SettingButton.Parent:= WizardForm;
Flag:=True;

ComponentsList := TNewCheckListBox.Create(WizardForm);
with ComponentsList do
begin
Parent := WizardForm;
SetBounds(ScaleX(40), ScaleY(370), ScaleX(417), ScaleY(100));
AddCheckBox(CustomMessage('CompSubtitlesLng'), '', 0, True, False, False, True, nil);
AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);
AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);
AddCheckBox(CustomMessage('CompVoiceLng'), '', 0, True, False, False, True, nil);
AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);
AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);
end;
BitmapImage1 := TBitmapImage.Create(WizardForm);
with BitmapImage1 do
begin
Parent := WizardForm.MainPanel;
Left := ScaleX(440);
Top := ScaleY(1);
Width := ScaleX(55);
Height := ScaleY(55);
ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp'));
end;


BitmapImage2 := TBitmapImage.Create(WizardForm);
with BitmapImage2 do
begin
Parent := WizardForm.MainPanel;
Left := ScaleX(440);
Top := ScaleY(1);
Width := ScaleX(55);
Height := ScaleY(55);
ExtractTemporaryFile('WizardForm.BitmapImage2.bmp');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage2.bmp'));
end;


BitmapImage3 := TBitmapImage.Create(WizardForm);
with BitmapImage3 do
begin
Parent := WizardForm.MainPanel;
Left := ScaleX(440);
Top := ScaleY(1);
Width := ScaleX(55);
Height := ScaleY(55);
ExtractTemporaryFile('WizardForm.BitmapImage3.bmp');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage3.bmp'));
end;


BitmapImage4 := TBitmapImage.Create(WizardForm);
with BitmapImage4 do
begin
Parent := WizardForm.MainPanel;
Left := ScaleX(440);
Top := ScaleY(1);
Width := ScaleX(55);
Height := ScaleY(55);
ExtractTemporaryFile('WizardForm.BitmapImage4.bmp');
Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage4.bmp'));
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpSelectDir:
begin
BitmapImage1.Show;
BitmapImage2.Hide;
BitmapImage3.Hide;
BitmapImage4.Hide;
end;
wpSelectComponents:
begin
BitmapImage2.Show;
BitmapImage1.Hide;
BitmapImage3.Hide;
BitmapImage4.Hide;
end;
wpReady:
begin
BitmapImage3.Show;
BitmapImage2.Hide;
BitmapImage1.Hide;
BitmapImage4.Hide;
end;
wpInstalling:
begin
BitmapImage4.Show;
BitmapImage2.Hide;
BitmapImage3.Hide;
BitmapImage1.Hide;
end;
end;
end;

Kashtan007
15-05-2014, 22:20
Dodakaedr, спасибо большое. Все получилось!)

Антон_Мураткин@vk
16-05-2014, 00:00
Всем привет. А можно на текст наложить тень или эфект двойной контур или чего нибудь подобное? Заранее благодарю.

saurn
16-05-2014, 06:30
а как больше путей добавить без понятия. »
Аналогичным способом вызвать Exec для второго ключа или раздела.

Shift85
16-05-2014, 07:33
А можно на текст наложить тень или эфект двойной контур »
Антон_Мураткин@vk, Можно создать два лейбла. (То есть второй для тени.) Как то так.

WelcomeLabel1:= TLabel.Create(WizardForm);
with WelcomeLabel1 do begin
AutoSize:=False;
SetBounds(ScaleX(-26), ScaleY(31), ScaleX(550), ScaleY(70));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Georgia';
Font.Size:= 14;
Font.Color:=$000000;
Font.Style:=[fsBold];
Caption:= ExpandConstant('{cm:Welcome1}');
Parent:=WizardForm.WelcomePage;
end;
WelcomeLabel2:= TLabel.Create(WizardForm);
with WelcomeLabel2 do begin
AutoSize:=False;
SetBounds(ScaleX(-27), ScaleY(30), ScaleX(550), ScaleY(70));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Georgia';
Font.Size:= 14;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold];
Caption:= ExpandConstant('{cm:Welcome1}');
Parent:=WizardForm.WelcomePage;
end;

Dodakaedr
16-05-2014, 12:33
saurn, С восстановлением разобрался »
Нет не разобрался((( код не восстанавливает экспортированный ключ...

[Registry]
Root: HKCR; SubKey: .mp3; BeforeInstall: IsRegExport(); Check: AudioCheck;

[ Code]
procedure IsRegExport();
var
i: Integer;
RegKey: String;
begin
RegKey := 'HKEY_CLASSES_ROOT\.mp3';
Exec( ExpandConstant( '{win}\regedit.exe' ), '-ea mp3.reg ' + AddQuotes( RegKey ), ExpandConstant( '{app}' ), SW_HIDE, ewWaitUntilTerminated, i );
end;

procedure IsRegImport();
var
i: Integer;
RegFile: String;
begin
RegFile:= ExpandConstant('{app}\mp3.reg');

if FileExists(RegFile) <> False then
Exec( 'regedit.exe', ' /s ' + AddQuotes( RegFile ), ExpandConstant( '{win}' ), SW_HIDE, ewWaitUntilTerminated, i );
end;


procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
case CurUninstallStep of
usUninstall: IsRegImport();
end;
end;

diman_21Ru
16-05-2014, 13:49
Всем привет у меня в скрипте есть установка модов на Мир Танков и автопоиск игры а как мне можно дополнительно программы устнавливать чтобы программы в конце установки вышли а не рспаковывались , скрипты все есть каков пусть лишь нужен ,заранее спасибо

Kashtan007
16-05-2014, 15:57
Всем привет. Как добавить фон для установщика. Если делать это через Редактор форм, а точнее BitmapImage то её закрывают такие элементы как компонент лист, блок с текстом и т.д. В итоге получается что видны только края картинки. Я видел, в справке есть другой вариант, но он более трудоемкий. Если ли способы полегче. Как залить фон для установщика! Заранее спасибо за ответ!

Shift85
16-05-2014, 18:00
Как залить фон для установщика! »
Kashtan007, Вот можно так:http://rghost.ru/55220479 =)

Kashtan007
16-05-2014, 19:26
Shift85, спасибо, но немножко не то.

Как сделать эти серые окна прозрачные?
http://rghost.ru/55222907/image.png

Shift85
16-05-2014, 19:42
Как сделать эти серые окна прозрачные? »
Kashtan007, Попробуй.

const
TransparentPercent = 50; // процент прозрачности

WS_EX_LAYERED = $80000;
WS_EX_TRANSPARENT = $20;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;
GWL_EXSTYLE = (-20);

function SetLayeredWindowAttributes(hwnd: HWND; crKey: TColor; bAlpha: BYTE; dwFlags: DWORD): Boolean;
external 'SetLayeredWindowAttributes@user32.dll stdcall';

function GetWindowLong(Wnd: HWnd; Index: Integer): Longint;
external 'GetWindowLongA@user32.dll stdcall';

function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint;
external 'SetWindowLongA@user32.dll stdcall';

Procedure InitializeWizard();
begin
SetWindowLong(WizardForm.Handle, GWL_EXSTYLE, GetWindowLong(WizardForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(WizardForm.Handle, 0, (255 * TransparentPercent) / 100, LWA_ALPHA);
end;

Kashtan007
16-05-2014, 20:15
Shift85, весь установщик стал прозрачный.. А мне нужно чтобы внутри серые блоки были прозрачные.

ROMKA-1977
17-05-2014, 18:29
Подскажите пожалуйста. Применяю архивы FreeArc, для отображения размера установленной проги в окне "Удаление программ" в секции [Setup] указываю: UninstallDisplaySize=3176374272. Как правильно указать чтобы размер отображался в зависимости от выбранных компонентов?

saneksanek
18-05-2014, 04:32
Здрасте.может кто-то помочь если не трудно,не выходит не как в данный код добавить чек-бокс в завершение,для запуска игры после установки.var MainImage : TBitmapImage;
FinishedImage: TBitmapImage;
WelcomeLabel1, WelcomeLabel2,StartMenuLbl,FinishedLabel,Welcome1,Welcome2,NeedSpaceLabel,SelectTasksLabel, FreeSpaceLabel, FinishedHeadingLabel: TLabel;

procedure InitializeWizard();
begin
ExtractTemporaryFile('1.bmp');
MainImage := TBitmapImage.Create(WizardForm);
with MainImage do
begin
Parent := WizardForm;
Left := 0;
Top := 0;
Width := 500;
Height := 313;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
end;

ExtractTemporaryFile('2.bmp');
FinishedImage := TBitmapImage.Create(WizardForm);
with FinishedImage do
begin
Parent := WizardForm;
Left := 0;
Top := 0;
Width := 500;
Height := 313;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\2.bmp'));
end;

Welcome1:= TLabel.Create(WizardForm);
with Welcome1 do
begin
Left:= ScaleX(150);
Top:= ScaleY(26);
Width:= ScaleX(301);
Height:= ScaleY(71);
AutoSize:= false;
Transparent:= true;
WordWrap:= true;
Font.Size:= 12;
Font.Color:=clBlack
Font.Style := [fsBold]
Parent:= WizardForm;
Font.Name:= 'Georgia'
Caption:= ExpandConstant('{cm:Welcome1}')
end;

Welcome2:=TLabel.Create(WizardForm);
with Welcome2 do
begin
Left:= ScaleX(150);
Top:= ScaleY(66);
Width:= ScaleX(345);
Height:= ScaleY(300);
AutoSize:= false;
WordWrap:= true;
Font.Color:=clBlack
Font.Name:= 'Georgia'
Font.Size:= 9;
Transparent:= true;
Parent:= WizardForm;
Caption:= ExpandConstant('{cm:Welcome2}')
end;

FinishedHeadingLabel:=TLabel.Create(WizardForm);
with FinishedHeadingLabel do
begin
Left:= ScaleX(170);
Top:= ScaleY(26);
Width:= ScaleX(300);
Height:= ScaleY(150);
AutoSize:= false;
WordWrap:= true;
Font.Size:= 12;
Font.Color:=clBlack
Font.Name:= 'Georgia'
Font.Style := [fsBold]
Transparent:= true;
Parent:= WizardForm;
Caption:= WizardForm.FinishedHeadingLabel.Caption;
end;

FinishedLabel:= TLabel.Create(WizardForm);
with FinishedLabel do
begin
Left:= ScaleX(170);
Top:= ScaleY(66);
Width:= ScaleX(325);
Height:= ScaleY(150);
AutoSize:= false;
WordWrap:= true;
Transparent:= true;
Font.Color:=clBlack
Font.Size:= 9;
Font.Name:= 'Georgia'
Parent:= WizardForm;
Caption:= ExpandConstant('{cm:Finished1}') + #10#13#10 + ExpandConstant('{cm:Finished2}')
end;
end;

procedure HideComponents;
begin
Welcome1.Hide;
Welcome2.Hide;
FinishedHeadingLabel.Hide;
FinishedLabel.Hide;

end;

procedure ShowComponents(CurPageID: Integer);
begin
case CurPageID of
wpWelcome:
begin
Welcome1.Show;
Welcome2.Show;
end;
wpFinished:
begin
FinishedHeadingLabel.Show;
FinishedLabel.Show;
end;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
HideComponents;
ShowComponents(CurPageID);
if CurPageID = wpWelcome then
begin
WizardForm.OuterNotebook.Hide;
FinishedImage.Hide;

end
else if CurPageID = wpFinished then
begin
WizardForm.OuterNotebook.Hide;
MainImage.Hide;
FinishedImage.Show;
end
else WizardForm.OuterNotebook.Show;
end;

Антон_Мураткин@vk
18-05-2014, 09:50
Shift85, Всё нормально, но второй текст (типа тени) появляется на всех остальных страницах. Как это исправить?

ROMKA-1977
18-05-2014, 11:43
saneksanek,

#define MyAppName "Need for Speed: The Run - Limited Edition"
#define MyAppExeName "Need For Speed The Run.exe"

[CustomMessages]
russian.RunEntryExec=Запустить {#MyAppName}

[Code]
///////////////////////// Чекбокс запуска приложения на странице завершения установки /////////////////////////
var
RunProgram: TCheckBox;
RunProgramLabel: TLabel;

procedure LabelOnClick(Sender: TObject);
begin
case Sender of
RunProgramLabel: begin RunProgram.Checked:= not RunProgram.Checked; end;
end;
end;

procedure DeinitializeSetup();
var ResultCode: Integer;
begin
if (WizardForm.CurPageID=wpFinished) and (RunProgram.Checked) then
Exec(ExpandConstant('{app}\{#MyAppExeName}'), '', '', SW_SHOWNORMAL, ewNoWait, ResultCode);
end;

procedure InitializeWizard();
begin
RunProgram:= TCheckBox.Create(WizardForm);
with RunProgram do
begin
Parent:= WizardForm.FinishedPage;
SetBounds(ScaleX(65), ScaleY(147), ScaleX(13), ScaleY(13)) //Координаты чекбокса
TabOrder:= 5;
Checked:= False; //Если необходимо, можно поменять на True
end;

RunProgramLabel:= TLabel.Create(WizardForm);
with RunProgramLabel do
begin
Caption:=ExpandConstant('{cm:RunEntryExec}');
SetBounds(ScaleX(85), ScaleY(147), ScaleX(150), ScaleY(13)) //Координаты текста чекбокса
Transparent := True;
Font.Color:= clWhite;
Parent:= WizardForm.FinishedPage;
OnClick:= @LabelOnClick;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
RunProgram.Hide;
RunProgramLabel.Hide;
if CurPageId = wpFinished then
begin
RunProgram.Show;
RunProgramLabel.Show;
end;
if (CurPageID = wpFinished) and ISDoneError then
begin
RunProgram.hide;
RunProgramLabel.hide;
end;
end;




© OSzone.net 2001-2012