Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
все описания будут отображаться в строго определенной области. »В ShowPicHint
Замени
SetBounds(ScaleX(pt.x + 16), ScaleY(pt.y + 7), InfoPic.Width, InfoPic.Height);
на
SetBounds(ScaleX(700), ScaleY(410), InfoPic.Width, InfoPic.Height);
Farser21
25-01-2014, 20:52
Ivan_009, http://rghost.ru/51921076
Dinvin4ester
25-01-2014, 20:59
Ivan_009,
http://www.fayloobmennik.net/3519701
Ivan_009
25-01-2014, 21:12
Farser21, Не знаю что у тебя но у меня все тип топ. Навсякий случай скачай и замени модуль BASS...
Dinvin4ester,Скачай тоже примеры использования внутри.
Ссылка: http://rghost.ru/51921479
Dinvin4ester
http://rghost.ru/51921808
Dinvin4ester
25-01-2014, 21:37
vint56, Ivan_009,
Спс.
Farser21
25-01-2014, 22:26
Ivan_009, спасибо помогло!
Возникли еще вопросы, надеюсь поможете.
1)Как сделать так, чтобы когда устанавливаешь компоненты, можно было поставить флажок на удаление старых компонентов в определенной папке.
2)Как сделать авто определение установки, т.е. установщик сам выбирает нужную папку куда устанавливать.
Заранее спасибо за ответы!
Код:
SetBounds(ScaleX(700), ScaleY(410), InfoPic.Width, InfoPic.Height); »
я имел ввиду в строго определенной области установщика, а не экрана - сорри
т.е. когда наводится указатель на какой либо мод - картинка мода, отображается вместо WizardImageFile
Как это осуществить? Заранее Спасибо!
1)Как сделать так, чтобы когда устанавливаешь компоненты, можно было поставить флажок на удаление старых компонентов в определенной папке. »
Пост #271 (http://forum.oszone.net/post-2137536-271.html)
2)Как сделать авто определение установки, т.е. установщик сам выбирает нужную папку куда устанавливать. »
Уточните по какому критерию должен выполнятся выбор: на основе записи в реестре или непосредственный поиск папки по указанному имени.
------------------------------------------------------------------
Читайте форум. Эти вопросы давно уже заезжены-переезжены.
------------------------------------------------------------------
я имел ввиду в строго определенной области установщика, а не экрана - сорри »
[code]
const
UNDEF_INDEX = -777;
function GetCursorPos(var lpPoint: TPoint): BOOL; external 'GetCursorPos@user32.dll stdcall';
var
InfoPic: TBitmapImage;
LastIndex: Integer;
TempPath: String;
procedure ShowPicHint(const PicFilePath: String);
var
pt: TPoint;
begin
if not GetCursorPos(pt) then Exit;
InfoPic.Bitmap.LoadFromFile(PicFilePath);
InfoPic.SetBounds(ScaleX(245), ScaleY(42), ScaleX(166), ScaleY(165));
InfoPic.Show;
end;
procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
var
UndefPic: String;
begin
if Index = -1 then Exit;
if Index = LastIndex then Exit;
try
case TNewCheckListBox(Sender).ItemCaption[Index] of
'Half-Life 2': UndefPic := 'Wasteland_Scanner_con.bmp';
'Half-Life 2 Episode One': UndefPic := 'Strider_early2.bmp';
'Half-Life 2 Episode Two': UndefPic := 'Cremator_poster.bmp';
'Portal': UndefPic := 'Portal.bmp';
else
begin
LastIndex := UNDEF_INDEX;
InfoPic.Hide;
Exit;
end;
end;
if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);
ShowPicHint(TempPath + UndefPic);
finally
LastIndex := Index;
end;
end;
procedure CompOnMouseLeave(Sender: TObject);
begin
InfoPic.Hide;
LastIndex := -1;
end;
procedure InitInfo();
begin
WizardForm.TypesCombo.Hide;
WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(37), ScaleX(225), ScaleY(176));
WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
TempPath := AddBackslash(ExpandConstant('{tmp}'));
LastIndex := UNDEF_INDEX;
with TBevel.Create(WizardForm) do
begin
Parent := WizardForm.SelectComponentsPage;
SetBounds(ScaleX(240), ScaleY(37), ScaleX(177), ScaleY(176));
Shape := bsFrame;
end;
InfoPic := TBitmapImage.Create(WizardForm)
with InfoPic do
begin
Parent := WizardForm.SelectComponentsPage;
AutoSize := True;
end;
end;
procedure InitializeWizard();
begin
InitInfo();
end;
читать дальше » »
Спасибо, Получилось!
http://i57.fastpic.ru/big/2014/0126/18/b8e69f9656bef1784e70123e9c58d918.jpg
И еще одно - как сделать чтобы было 0,0
http://i33.fastpic.ru/big/2014/0126/ef/38811fdf20edf3968ab7b009b5899cef.jpg
скрипт:
[Components]
Name: a; Description: Удаляем видео заставку;
Name: b; Description: "Часы в Ангаре";
Name: c; Description: "Выберите Прицел";
Name: c\1; Description: от zayaz; Flags: exclusive;
Name: c\2; Description: от ZCH_0933; Flags: exclusive;
Name: c\3; Description: от dab97; Flags: exclusive;
Name: c\4; Description: Бирюза; Flags: exclusive;
Name: c\5; Description: Анимированый; Flags: exclusive;
;Name: d; Description: "УГН";
;Name: e; Description: "ZoomMod + ZoomX";
;Name: q; Description: "Стандартные Звуки (папка Audio)";
;Name: f; Description: "Зоны пробития";
;Name: g; Description: "Белые трупы танков";
;Name: h; Description: "Уведомление союзников о засвете";
;Name: i; Description: "Прозрачный чат";
;Name: j; Description: "Дамаг Индикатор";
;Name: k; Description: Выберите Ангар;
;Name: k\1; Description: "«8 ноября»"; Flags: exclusive;
;Name: k\2; Description: "«Мастерская WG»"; Flags: exclusive;
;Name: l; Description: "Иконки";
;Name: m; Description: "Информативная панель";
;Name: o; Description: "Меню рамашка от TRJ-VoRoN";
;Name: p; Description: "Понель повреждений";
;Name: r; Description: "Статистика за сессию";
;Name: s; Description: "Список грядущих боёв на ГК";
;Name: t; Description: "Танки в два ряда";
;Name: y; Description: "XVM (Олень)";
;Name: u; Description: "Фокус";
;Name: w; Description: "Отображение оверлея (TS_Mumble_RaidCall)";
;Name: x; Description: "Максимальное увеличение дальности видимости";
;Name: z; Description: "Звуковой мод Громовые орудия, версия 1.6";
;Name: n; Description: "Реалистичная озвучка экипажа";
;Name: b1; Description: "Убираем облака";
[Files]
;////////////////////////////////////////Описание\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Source: 1.bmp; Flags: dontcopy nocompression
Source: 2.bmp; Flags: dontcopy nocompression
Source: 3.bmp; Flags: dontcopy nocompression
Source: 4.bmp; Flags: dontcopy nocompression
Source: 5.bmp; Flags: dontcopy nocompression
Source: 6.bmp; Flags: dontcopy nocompression
Source: 7.bmp; Flags: dontcopy nocompression
;/////////////////////////////////////// MODS \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Source: "C:\Users\TaucoH\Desktop\334\InstallFiles\isskin.dll"; DestDir: "{app}"; Flags: dontcopy nocompression; Attribs: hidden system;
Source: "C:\Users\TaucoH\Desktop\334\InstallFiles\Tiger.cjstyles"; DestDir: "{app}"; Flags: dontcopy nocompression; Attribs: hidden system;
Source: "C:\Users\TaucoH\Desktop\334\InstallFiles\WizardImage.bmp"; DestDir: "{app}"; Flags: dontcopy nocompression; Attribs: hidden system;
Source: "C:\Users\TaucoH\Desktop\334\InstallFiles\WizardSmallImage.bmp"; DestDir: "{app}"; Flags: dontcopy nocompression; Attribs: hidden system;
Source: "C:\Games\World_of_Tanks\MODS\01. Удаляем видео заставку (INTRO)\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: a;
Source: "C:\Games\World_of_Tanks\MODS\02. Часы в Ангаре\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: b;
Source: "C:\Games\World_of_Tanks\MODS\03.1 Прицел zayaz\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: c\1;
Source: "C:\Games\World_of_Tanks\MODS\03.2 Прицел ZCH_0933\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: c\2;
Source: "C:\Games\World_of_Tanks\MODS\03.3 Прицел от dab97\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: c\3;
Source: "C:\Games\World_of_Tanks\MODS\03.4 Прицел Бирюза\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: c\4;
Source: "C:\Games\World_of_Tanks\MODS\03.5 Прицел анимированый\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: c\5;
;Source: "C:\Games\World_of_Tanks\MODS\04. УГН\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: d;
;Source: "C:\Games\World_of_Tanks\MODS\05. ZoomMod + ZoomX\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: e;
;Source: "C:\Games\World_of_Tanks\MODS\06. Звуки Стандартные (папка Audio)\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: q;
;Source: "C:\Games\World_of_Tanks\MODS\07. Зоны пробития\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: f;
;Source: "C:\Games\World_of_Tanks\MODS\08. Белые трупы танков\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: g;
;Source: "C:\Games\World_of_Tanks\MODS\09. Уведомление союзников о засвете\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: h;
;Source: "C:\Games\World_of_Tanks\MODS\10. Прозрачный чат\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: i;
;Source: "C:\Games\World_of_Tanks\MODS\11. Дамаг Индикатор\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: j;
;Source: "C:\Games\World_of_Tanks\MODS\12.1 Ангар «8 ноября»\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: k\1;
;Source: "C:\Games\World_of_Tanks\MODS\12.2 Ангар «Мастерская WG»\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: k\2;
;Source: "C:\Games\World_of_Tanks\MODS\13. Иконки\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: l;
;Source: "C:\Games\World_of_Tanks\MODS\14. Информативная панель\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: m;
;Source: "C:\Games\World_of_Tanks\MODS\16. Меню рамашка от TRJ-VoRoN\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: o;
;Source: "C:\Games\World_of_Tanks\MODS\17. Понель повреждений\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: p;
;Source: "C:\Games\World_of_Tanks\MODS\18. Статистика за сессию\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: r;
;Source: "C:\Games\World_of_Tanks\MODS\19. Список грядущих боёв на ГК\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: s;
;Source: "C:\Games\World_of_Tanks\MODS\20. Танки в два ряда\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: t;
;Source: "C:\Games\World_of_Tanks\MODS\21. XVM (Олень)\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: y;
;Source: "C:\Games\World_of_Tanks\MODS\22. Фокус\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: u;
;Source: "C:\Games\World_of_Tanks\MODS\23. Отображение оверлея (TS_Mumble_RaidCall)\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: w;
;Source: "C:\Games\World_of_Tanks\MODS\24. Максимальное увеличение дальности видимости\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: x;
;Source: "C:\Games\World_of_Tanks\MODS\25. Звуковой мод Громовые орудия, версия 1.6\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: z;
;Source: "C:\Games\World_of_Tanks\MODS\26. Реалистичная озвучка экипажа\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: n;
;Source: "C:\Games\World_of_Tanks\MODS\27. Убираем облака\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: b1;
[Registry]
Root: HKLM; Subkey: "Software\TAY50N_mods\Version"; ValueType: string; ValueName: "Version"; ValueData: "8.0"; Flags: uninsdeletekey
[Code]
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
const
UNDEF_INDEX = -777;
ALPHA_BLEND_LEVEL = 255; // max=Byte=255
WS_EX_LAYERED = $80000;
WS_EX_TRANSPARENT = $20;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;
GWL_EXSTYLE = (-20);
var
InfoPic: TBitmapImage;
LastIndex: Integer;
TempPath: String;
PicForm: TForm;
type
COLORREF = DWORD;
function GetCursorPos(var lpPoint: TPoint): BOOL; external 'GetCursorPos@user32.dll stdcall';
function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; external 'SetLayeredWindowAttributes@user32.dll stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLong{#A}@user32.dll stdcall';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function SetFocus(hWnd: HWND): HWND; external 'SetFocus@user32.dll stdcall';
//////Картинка описания//////////
procedure ShowPicHint(const PicFilePath: String);
var
pt: TPoint;
begin
if not GetCursorPos(pt) then Exit;
InfoPic.Bitmap.LoadFromFile(PicFilePath);
InfoPic.SetBounds(ScaleX(251), ScaleY(70), ScaleX(225), ScaleY(229));
InfoPic.Show;
end;
///////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
var
UndefPic: String;
begin
if Index = -1 then Exit;
if Index = LastIndex then Exit;
try
case TNewCheckListBox(Sender).ItemCaption[Index] of
'Удаляем видео заставку': UndefPic := '1.bmp';
'Часы в Ангаре': UndefPic := '2.bmp';
'от zayaz': UndefPic := '3.bmp';
'от ZCH_0933': UndefPic := '4.bmp';
else
begin
LastIndex := UNDEF_INDEX;
InfoPic.Hide;
Exit;
end;
end;
if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);
ShowPicHint(TempPath + UndefPic);
finally
LastIndex := Index;
end;
end;
procedure CompOnMouseLeave(Sender: TObject);
begin
InfoPic.Hide;
LastIndex := -1;
end;
procedure InitInfo();
begin
WizardForm.TypesCombo.Hide;
WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(63), ScaleX(240), ScaleY(240));
WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
TempPath := AddBackslash(ExpandConstant('{tmp}'));
LastIndex := UNDEF_INDEX;
with TBevel.Create(WizardForm) do
begin
Parent := WizardForm.SelectComponentsPage;
SetBounds(ScaleX(245), ScaleY(63), ScaleX(235), ScaleY(240));
Shape := bsFrame;
end;
InfoPic := TBitmapImage.Create(WizardForm)
with InfoPic do
begin
Parent := WizardForm.SelectComponentsPage;
AutoSize := True;
end;
end;
var
SystemPage: TWizardPage;
ModNameLabel: TNewStaticText;
MouseLabel, SiteLabel: TLabel;
GamePathPanel, GameVersPanel, GameModPanel: TPanel;
FindGamePath, FindGameVers, FindGameMod, ReqSatisfy: TNewStaticText;
GamePathMemo, GameVersMemo, GameModMemo, GamePathFindMemo, GameVersFindMemo, GameModFindMemo: TPanel;
RenameCheckBox: TNewCheckBox;
//процедуры, для использования скина (Tiger.cjstyles)
procedure LoadSkin(lpszPath: PAnsiChar; lpszIniFileName: PAnsiChar); external 'LoadSkin@{tmp}\isskin.dll stdcall delayload';
procedure UnloadSkin; external 'UnloadSkin@{tmp}\isskin.dll stdcall delayload';
function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';
//процедуры, которые выполняются при наведении на ссылку (левый нижний угол)
procedure SiteLabelOnClick(Sender: TObject); var ErrorCode: Integer;
begin
ShellExec('open', 'http:\\defir.uniogame.com', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;
procedure SiteLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color := clRed;
end;
procedure SiteLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color := WizardForm.Font.Color;
end;
procedure SiteLabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color := clRed;
end;
procedure SiteLabelMouseMove2(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color := WizardForm.Font.Color;
end;
procedure RedesignWizardForm;
begin
with WizardForm do
begin
Color := clBlack;
WelcomePage.Color := clBlack;
FinishedPage.Color := clBlack;
Font.Color := clWhite;
Font.Style := [fsBold];
Font.Size := 9;
ClientWidth := ScaleX(690);
ClientHeight := ScaleY(459);
Caption := ExpandConstant('{#SetupSetting("AppName")}');
Center;
end;
with WizardForm.OuterNotebook do
begin
SetBounds(ScaleX(180), ScaleY(60), ScaleX(680), ScaleY(350));
end;
with WizardForm.InnerNotebook do
begin
SetBounds(WizardForm.InnerNotebook.Left - ScaleX(40), ScaleY(10), ScaleX(560), ScaleY(340));
end;
with WizardForm.InnerPage do
begin
Color := clBlack;
end;
with WizardForm.Bevel do
begin
SetBounds(ScaleX(0), ScaleY(410), ScaleX(690), ScaleY(2));
end;
with WizardForm.Bevel1 do
begin
Parent := WizardForm;
SetBounds(ScaleX(0), ScaleY(58), ScaleX(690), ScaleY(2));
end;
with WizardForm.MainPanel do
begin
Parent := WizardForm;
SetBounds(ScaleX(0), ScaleY(0), ScaleX(690), ScaleY(58));
end;
with WizardForm.WizardSmallBitmapImage do
begin
Left := ScaleX(633);
end;
with WizardForm.CancelButton do
begin
Left := ScaleX(590);
Top := ScaleY(425);
Font.Name := 'Tahoma';
Font.Size := 8;
Font.Style := [];
end;
with WizardForm.NextButton do
begin
Left := ScaleX(500);
Top := ScaleY(425);
Font.Name := 'Tahoma';
Font.Size := 8;
Font.Style := [];
end;
with WizardForm.BackButton do
begin
Left := ScaleX(410);
Top := ScaleY(425);
Font.Name := 'Tahoma';
Font.Size := 8;
Font.Style := [];
end;
with WizardForm.ReadyMemo do
begin
SetBounds(ScaleX(0), ScaleY(30), ScaleX(480), ScaleY(280));
end;
ModNameLabel := TNewStaticText.Create(WizardForm);
with ModNameLabel do
begin
Parent := WizardForm.MainPanel;
Font.Size := 22;
Font.Name := 'Courier New';
Font.Style := [fsBold];
Font.Color := clWindowText;
SetBounds(ScaleX(20), ScaleY(15), ScaleX(200), ScaleY(50));
Caption := ExpandConstant('{#SetupSetting("AppName")}');
end;
MouseLabel := TLabel.Create(WizardForm);
with MouseLabel do
begin
Parent := WizardForm;
Width := WizardForm.Width;
Height := WizardForm.Height;
Autosize := False;
Transparent := True;
OnMouseMove := @SiteLabelMouseMove2;
end;
SiteLabel := TLabel.Create(WizardForm);
with SiteLabel do
begin
Caption := ExpandConstant('{#SetupSetting("AppPublisherURL")}');
Parent := WizardForm;
Left := ScaleX(15);
Top := ScaleY(425);
Font.Name := 'Courier New';
Cursor := crHand;
OnClick := @SiteLabelOnClick;
OnMouseDown := @SiteLabelMouseDown;
OnMouseUp := @SiteLabelMouseUp;
OnMouseMove := @SiteLabelMouseMove;
end;
end;
//************************************************ [Начало - Компоненты страниц] ***************************************************//
////////////////////// WelcomePage //////////////////////
procedure CreatePageComponents;
begin
with WizardForm.WizardBitmapImage do
begin
Parent := WizardForm;
SetBounds(ScaleX(0), ScaleY(60), ScaleX(407), ScaleY(350));
end;
with TLabel.Create(WizardForm) do
begin
Caption := WizardForm.WelcomeLabel1.Caption;
Parent := WizardForm.WelcomePage;
Alignment := taCenter;
AutoSize := False;
Wordwrap := True;
Font.Name := 'Courier New';
Font.Size := 14;
Font.Style := [fsBold];
Transparent := True;
SetBounds(ScaleX(30), ScaleY(45), ScaleX(407), ScaleY(45));
end;
with WizardForm.WelcomeLabel2 do
begin
Font.Name := 'Courier New';
SetBounds(ScaleX(30), ScaleY(140), ScaleX(407), ScaleY(239));
end;
////////////////////// WelcomePage //////////////////////
with WizardForm.PageNameLabel do
begin
Height := ScaleY(20);
Font.Name := 'Courier New';
Font.Size := 12;
Font.Color := WizardForm.Font.Color;
end;
with WizardForm.PageDescriptionLabel do
begin
Top := WizardForm.PageDescriptionLabel.Top + ScaleY(8);
Height := ScaleY(15);
Width := ScaleX(550);
Font.Name := 'Courier New';
end;
////////////////////// SelectDirPage //////////////////////
WizardForm.SelectDirLabel.Font.Name := 'Courier New';
with WizardForm.SelectDirBrowseLabel do
begin
Height := ScaleY(30);
Font.Name := 'Courier New';
end;
with WizardForm.DirEdit do
begin
Top := ScaleY(50);
Font.Size := 10;
Font.Name := 'Courier New';
Parent := WizardForm.SelectComponentsPage;
end;
with WizardForm.DirBrowseButton do
begin
Left := ScaleX(405);
Top := ScaleY(100);
Font.Name := 'Tahoma';
Font.Size := 8;
Font.Style := [];
Parent := WizardForm.SelectComponentsPage;
end;
with WizardForm.DiskSpaceLabel do
begin
Top := ScaleY(245);
Font.Name := 'Courier New';
end;
////////////////////// SelectDirPage //////////////////////
////////////////////// SelectComponentsPage //////////////////////
with WizardForm.SelectComponentsLabel do
begin
Height := ScaleY(30);
Font.Name := 'Courier New';
end;
with WizardForm.DirEdit do
begin
SetBounds(ScaleX(0), ScaleY(35), ScaleX(400), ScaleY(50));
Font.Size := 10;
Font.Name := 'Courier New';
Parent := WizardForm.SelectComponentsPage;
end;
with WizardForm.DirBrowseButton do
begin
Top := ScaleY(36);
Font.Name := 'Tahoma';
Font.Size := 8;
Font.Style := [];
Parent := WizardForm.SelectComponentsPage;
end;
with WizardForm.TypesCombo do
begin
Top := ScaleY(45);
Font.Name := 'Courier New';
end;
with WizardForm.ComponentsList do
begin
Top := ScaleY(80);
Height := ScaleY(155);
Font.Name := 'Tahoma';
Font.Size := 9;
Font.Style := [];
end;
with WizardForm.ComponentsDiskSpaceLabel do
begin
Top := ScaleY(315);
Font.Name := 'Courier New';
end;
////////////////////// SelectComponentsPage //////////////////////
////////////////////// SelectProgramGroupPage //////////////////////
with WizardForm.SelectStartMenuFolderLabel do
begin
Font.Name := 'Courier New';
end;
with WizardForm.SelectStartMenuFolderBrowseLabel do
begin
Height := ScaleY(30);
Font.Name := 'Courier New';
end;
with WizardForm.GroupEdit do
begin
Top := ScaleY(100);
Font.Name := 'Courier New';
Font.Size := 8;
end;
with WizardForm.GroupBrowseButton do
begin
Top := ScaleY(99);
Font.Name := 'Tahoma';
Font.Size := 8;
Font.Style := [];
end;
with WizardForm.NoIconsCheck do
begin
Top := ScaleY(245);
Font.Name := 'Courier New';
Width := ScaleX(250);
end;
////////////////////// SelectProgramGroupPage //////////////////////
////////////////////// ReadyPage //////////////////////
WizardForm.ReadyLabel.Font.Name := 'Courier New';
WizardForm.ReadyMemo.Font.Name := 'Courier New';
////////////////////// ReadyPage //////////////////////
////////////////////// InstallingPage //////////////////////
WizardForm.StatusLabel.Font.Name := 'Courier New';
WizardForm.ProgressGauge.SetBounds(ScaleX(0), ScaleY(60), ScaleX(417), ScaleY(30));
with WizardForm.FilenameLabel do
begin
Top := ScaleY(20);
Font.Name := 'Courier New';
Font.Style := [];
end;
////////////////////// InstallingPage //////////////////////
////////////////////// FinishedPage //////////////////////
with WizardForm.WizardBitmapImage2 do
begin
Parent := WizardForm;
SetBounds(ScaleX(0), ScaleY(60), ScaleX(223), ScaleY(350));
end;
with TLabel.Create(WizardForm) do
begin
Caption := WizardForm.FinishedHeadingLabel.Caption;
Parent := WizardForm.FinishedPage;
Alignment := taCenter;
AutoSize := False;
Wordwrap := True;
Font.Name := 'Courier New';
Font.Size := 14;
Font.Style := [fsBold];
Transparent := True;
SetBounds(ScaleX(30), ScaleY(45), ScaleX(407), ScaleY(45));
end;
with WizardForm.FinishedLabel do
begin
Font.Name := 'Courier New';
SetBounds(ScaleX(30), ScaleY(130), ScaleX(407), ScaleY(239));
end;
end;
////////////////////// FinishedPage //////////////////////
////////////////////// UninstallingPage //////////////////////
procedure RedesignUninstallProgressForm;
var
UninstallBitmapImage: TBitmapImage;
begin
with UninstallProgressForm do
begin
Color := clBlack;
Font.Color := clWhite;
Font.Style := [fsBold];
Font.Name := 'Courier New';
Font.Size := 9;
ClientWidth := ScaleX(690);
ClientHeight := ScaleY(459);
Caption := ExpandConstant('{#SetupSetting("AppName")}');
Center;
OuterNotebook.SetBounds(ScaleX(223), ScaleY(60), ScaleX(467), ScaleY(351));
InnerNotebook.SetBounds(UninstallProgressForm.InnerNotebook.Left - ScaleX(25), ScaleY(50), ScaleX(460), ScaleY(260));
InnerPage.Color := clBlack;
Bevel.SetBounds(ScaleX(0), ScaleY(410), ScaleX(690), ScaleY(2));
StatusLabel.Top := ScaleY(0);
ProgressBar.SetBounds(UninstallProgressForm.StatusLabel.Left, ScaleY(50), ScaleX(417), ScaleY(30));
end;
with UninstallProgressForm.PageNameLabel do
begin
Height := ScaleY(20);
Font.Name := UninstallProgressForm.Font.Name;
Font.Size := 12;
Font.Color := UninstallProgressForm.Font.Color;
end;
with UninstallProgressForm.PageDescriptionLabel do
begin
Top := UninstallProgressForm.PageDescriptionLabel.Top + ScaleY(8);
Height := ScaleY(15);
Width := ScaleX(500);
end;
UninstallBitmapImage := TBitmapImage.Create(UninstallProgressForm);
with UninstallBitmapImage do
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardImage.bmp'));
Parent := UninstallProgressForm;
SetBounds(ScaleX(0), ScaleY(60), ScaleX(223), ScaleY(350));
end;
with UninstallProgressForm.WizardSmallBitmapImage do
begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardSmallImage.bmp'));
Left := ScaleX(633);
end;
with UninstallProgressForm.Bevel1 do
begin
Parent := UninstallProgressForm;
SetBounds(ScaleX(0), ScaleY(58), ScaleX(690), ScaleY(2));
end;
with UninstallProgressForm.MainPanel do
begin
Parent := UninstallProgressForm;
SetBounds(ScaleX(0), ScaleY(0), ScaleX(690), ScaleY(58));
end;
with UninstallProgressForm.CancelButton do
begin
Left := ScaleX(590);
Top := ScaleY(425);
Font.Name := 'Tahoma';
Font.Size := 8;
Font.Style := [];
end;
end;
////////////////////// UninstallingPage //////////////////////
//************************************************ [Конец - Компоненты страниц] ***************************************************//
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID = 6) then
Result:= True;
end;
procedure ShowComponents(CurPageID: Integer);
begin
WizardForm.PageNameLabel.Show;
WizardForm.PageDescriptionLabel.Show;
ModNameLabel.Hide;
WizardForm.WelcomeLabel1.Hide;
WizardForm.FinishedHeadingLabel.Hide;
case CurPageID of
wpWelcome:
begin
WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
ModNameLabel.Show;
end;
wpFinished:
begin
WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
ModNameLabel.Show;
WizardForm.NextButton.Left := ScaleX(590);
end;
end;
end;
function InitializeSetup: Boolean;
begin
ExtractTemporaryFile('isskin.dll');
ExtractTemporaryFile('Tiger.cjstyles');
LoadSkin(ExpandConstant('{tmp}\Tiger.cjstyles'), '');
Result:=True;
end;
procedure InitializeWizard();
begin
RedesignWizardForm;
CreatePageComponents;
InitInfo();
end;
procedure CurPageChanged(CurPageID: Integer);
begin
ShowComponents(CurPageID);
end;
procedure DeinitializeSetup;
begin
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkin;
end;
function InitializeUninstall: Boolean;
begin
FileCopy(ExpandConstant('{app}\isskin.dll'), ExpandConstant('{tmp}\isskin.dll'), False);
FileCopy(ExpandConstant('{app}\Tiger.cjstyles'), ExpandConstant('{tmp}\Tiger.cjstyles'), False);
FileCopy(ExpandConstant('{app}\WizardImage.bmp'), ExpandConstant('{tmp}\WizardImage.bmp'), False);
FileCopy(ExpandConstant('{app}\WizardSmallImage.bmp'), ExpandConstant('{tmp}\WizardSmallImage.bmp'), False);
LoadSkin(ExpandConstant('{tmp}\Tiger.cjstyles'), '');
Result:=True;
end;
procedure InitializeUninstallProgressForm;
begin
RedesignUninstallProgressForm;
end;
procedure DeinitializeUninstall;
begin
UnloadSkin;
end;
И еще одно - как сделать чтобы было 0,0 »
Проще просто отключить вывод информации о размере компонентов.
[Setup]
ShowComponentSizes=no
Farser21
26-01-2014, 13:48
saurn , спасибо за ответ.
Уточняю второй вопрос.
2)Как сделать авто определение установки, т.е. установщик сам выбирает нужную папку куда устанавливать
Смотри предположим мне нужно, чтобы компоненты устанавливались в игру World_of_Tanks, но у кого-то на компе допустим эта папка называется просто WOT.
Или допустим чтобы установщик находил папку в которой находиться файл WorldOfTanks.exe.
Если будет поиск по указанному имени например World of Tanks, то не факт, что у кого-то папка называется именно так. Тогда получается нужно через реестр, расскажите пожалуйста как это сделать!
Заранее спасибо!
Тогда получается нужно через реестр, расскажите пожалуйста как это сделать! »
Проще всего вот так:
[Setup]
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyApp_is1,InstallLocati on}
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyApp_is1: полный путь к разделу реестра игры.
InstallLocation: строковый параметр, содержащий полный путь к папке с установленной игрой.
Farser21
26-01-2014, 14:08
saurn, игра должна находиться на системном диске? И если я так сделаю то будет автопоиск данной игры независимо от название папки?
игра должна находиться на системном диске? И если я так сделаю то будет автопоиск данной игры независимо от название папки? »
Без разницы. Установщик игры создает запись в реестре, с указанием пути к папке приложения.
Farser21
26-01-2014, 14:29
saurn , спасибо сейчас попробую. А если у человека другой путь к этой игре на компе? Установщик найдет её?
А если у человека другой путь к этой игре на компе? »
Путь для установки выдирается из записи в реестре, которая создается установщиком игры на этапе установки. Не важно в какую папку или на какой раздел будет установленна игра: параметр, в который пишется полный путь, не меняется, меняется лишь его значение, в зависимости от того, в какую папку игру установили. Вот это вот значение и использует инсталятор в качестве пути установки по умолчанию.
Farser21
26-01-2014, 14:55
saurn,
http://s52.radikal.ru/i137/1401/ad/8ff768323901.png
Вот нашел игру в реестре, но выскакивает вот такая ошибка.
Farser21, ищите ветку реестра игры в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
А если у человека другой путь к этой игре на компе? Установщик найдет её? »При условии если это ни чей нибудь левый репак и зная точный ключ деинсталляции то найдёт.
Farser21, В случае если игра будет не найдена то можно добавить альтернативный путь:
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MyApp_is1,InstallLocati on|{pf}\Альтернативный путь}
Вспоминай ещё такой (http://forum.oszone.net/post-2270679-1690.html) вариант, далее (http://forum.oszone.net/post-2272207-1716.html).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.