Jump to content
Korean Random
EvilAlex

Создание инсталляторов для модпаков на базе Inno Setup

Recommended Posts

Ребята есть ли у кого то нормальный рабочий скрипт что бы можно было добавить мелодию 

Не надо так делать. Поверь мне, пожалуйста.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Не надо так делать. Поверь мне, пожалуйста.

немного тебя не понял. объясни пожалуйста . 

Share this post


Link to post

Short link
Share on other sites

немного тебя не понял. объясни пожалуйста . 

Не надо вставлять музыку в инсталлятор.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Не надо вставлять музыку в инсталлятор.

по чему 

Ребята подскажите как убрать этот серый квадратик в левом углу где должна картинка быть. как только эта страница открывается он есть, как только я проведу просто о меню или в самом модпаке он пропадает. через редактор форм не вижу не каких доп функций что бы там накладывались. может кто знает как решить эту проблемку

 

post-35157-0-28512400-1505313229_thumb.jpg

Share this post


Link to post

Short link
Share on other sites

хрен сним уже с этим квадратом хоть подскажите как сделать что бы постоянно картинка была на фоне а не пустое окно и лишь при наведении что бы появлялась. а была нормально когда страница открыта. потому как на второй странице она сразу появляется а на первой по мимо серого квадратика еще и пустая прозрачная рамка. не могу понять как картинку подцепить что бы постоянно там была как заглавная

Share this post


Link to post

Short link
Share on other sites

[Setup]
DefaultDirName={code:WotDirNameRU}

[Code]
function WotDirNameRU(S:String): String; // ключь для основного клиента  {1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1
var                                 
  InsPath: String;
  er: boolean;
  myFile:String;
begin
  Result:=ExpandConstant('C:\Games\World_of_Tanks\'); //если ключа нет то будем ставить сюда
  er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', InsPath);
  if er and (InsPath<>'') then //если ключ существует и там что-то записано
  begin
    Result := InsPath;
  end;
end;
//""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""//
function WotDirNameCT(S:String): String; // ключь для тестового клиента {1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1
var                                
  InsPath: String;
  er: boolean;
  myFile:String;
begin
  Result:=ExpandConstant('C:\Games\World_of_Tanks_CT\'); //если ключа нет то будем ставить сюда
  er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1', 'InstallLocation', InsPath);
  if er and (InsPath<>'') then //если ключ существует и там что-то записано
  begin
    Result := InsPath;
  end;
end;

 

пока тишина напишу и свой вопрос )))

для автоматического поиска игры по реестру  этот код до сих пор рабочий? проверил но  у меня что то не заводится он...

Edited by ЛОМ

Share this post


Link to post

Short link
Share on other sites

пока тишина напишу и свой вопрос )))

для автоматического поиска игры по реестру этот код до сих пор рабочий? проверил но у меня что то не заводится он...

а че ему ломаться

а в ответ тишина

тишина потому что все это есть в теме, просто надо искать

Share this post


Link to post

Short link
Share on other sites
а че ему ломаться

ну да вроде не девочка  :ok:  просто он всё на диск С  ставит и ставит. игру заново перекачал после того как винду  переустановил. и вроде должно было  путь найти. короче хз.. нет так нет))))

 

P/S... а вот эти сработали... 

 

https://koreanrandom.com/forum/topic/9050-создание-инсталляторов-для-модпаков-на-базе-inno-setup/?p=266742

 

https://koreanrandom.com/forum/topic/9050-создание-инсталляторов-для-модпаков-на-базе-inno-setup/?p=266708

Edited by ЛОМ

Share this post


Link to post

Short link
Share on other sites

а че ему ломаться

тишина потому что все это есть в теме, просто надо искать

да искал но то что находил не прокатывало у меня. или я не понимаю. я не когда раньше не собирал модпаки два раза перечитал по 240 страниц. если бы сам мог бы то не просил о помощи. щас вот так как то методом тыка и эксперементов подставил кое что от себя подставил а точнее добавил и картинка появилась постоянно стоит . теперь проблема стала в другом . на выбор меню нажимаю картинка меняется на ту которая прописана к компоненту но когда я убираю курсор опять пустое окно становится . то оно было пустым и при первом переходе на страницу теперь сделал при переходе есть но только как я мышкой проведу по компоненту в меню так уже больше обратно не возвращается. а надо что бы обратно возвращалась. код я свой  приложил. если знаешь что там не так помоги пожалуйста . у меня еще подключена вторая страница там все хорошо работает но там и по другому все прописано 

там я все так делал AddCompDescription(0, ('CompDesc1'), 'CompDescImg0.bmp');   ну и код там другой, на первой странице он что то у меня не работает . возможно у меня команды нет какойто или она не так подключена или что то лишнее . не знаю уже голова разрывается а отдачи нет . 

 

const

  UNDEF_INDEX = -777;

function GetCursorPos(var lpPoint: TPoint): BOOL; external '[email protected] 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(400), ScaleY(30), ScaleX(400), ScaleY(285));

  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 := 'Markers.bmp';

           'XVM': UndefPic := 'XVM.bmp';

           'Дополнения XVM': UndefPic := 'Дополнения XVM.bmp';

           'Карусель танков в три ряда': UndefPic := 'tankIconsCam.bmp';

           'Панели счета WGL XVM': UndefPic := 'Панели счета WGL XVM.bmp';

          'Карусель': UndefPic := 'Carousel.bmp';

          'Карусель танков прозрачная P.S.Enot': UndefPic := 'Карусель танков прозрачная P.S.Enot.bmp';

          'Карусель танков от игрока НЕКРОМАНТ': UndefPic := 'Карусель танков от игрока НЕКРОМАНТ.bmp';

          'Дамаг панель Заяц с ремонтом по CTRL': UndefPic := 'Дамаг панель Заяц с ремонтом по CTRL.bmp';

          'Панель счета WGL стиль Green': UndefPic := 'Панель счета WGL стиль Green.bmp';

          'Панель счета WGL Green': UndefPic := 'Панель счета WGL Green.bmp';

          'Медали в бою': UndefPic := 'ProAchivments.bmp';

          'Дамаг лог от игрока НЕКРОМАНТ': UndefPic := 'Дамаг лог от игрока НЕКРОМАНТ.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(30), ScaleX(400), ScaleY(285));

 

     WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;

    WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;

    TempPath := AddBackslash(ExpandConstant('{tmp}'));

    LastIndex := UNDEF_INDEX;

    with TBevel.Create(WizardForm) do

    begin

      Parent := WizardForm.SelectComponentsPage;

      SetBounds(ScaleX(400), ScaleY(30), ScaleX(400), ScaleY(285));                //430

       Shape := bsFrame;

    end;

      InfoPic := TBitmapImage.Create(WizardForm)

      with InfoPic do

       begin

    Parent := WizardForm.SelectComponentsPage;

      SetBounds(ScaleX(400), ScaleY(30), ScaleX(400), ScaleY(285));

      Stretch := True;

     ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');

     Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp'));

    

     //AutoSize := True;

    end;

end;

Edited by P.S.Enot

Share this post


Link to post

Short link
Share on other sites

ShowPicHint - процедура создания всплывающих подсказок с картинками

CompOnItemMouseMove - процедура проверки наведена ли мышь на компонент, если да то вызывается процедура ShowPicHint

ShowPicHint(TempPath + UndefPic);

CompOnMouseLeave - процедура проверки действия - убрали ли мы мышь с компонента, если убран курсор - подсказки скрываются.

PicForm.Hide;

В InitInfo - создается форма для картинок и подгружаются все созданные процедуры с привязками к событиям

WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;

Все в секции:

[code]

За исключением procedure InitializeWizard();

Она думаю уже должна быть у вас в своем скрипте, в него нужно добавить загрузку процедуры: InitInfo();

 

Ну и подстроить под себя:

case TNewCheckListBox(Sender).ItemCaption[Index] of

В соответствие со своим списком устанавливаемых компонентов.

а какая команда или как прописать что бы когда курсор с меню убирался и ни важно  куда его направишь оставалась любая последняя  картинка из меню а не исчезала  . то есть что бы постоянна какая то картинка но была  ????

Share this post


Link to post

Short link
Share on other sites

то есть что бы постоянна какая то картинка но была  ????

procedure CompOnMouseLeave(Sender: TObject);
begin
    //PicForm.Hide;
    LastIndex := -1;
end;

Share this post


Link to post

Short link
Share on other sites
procedure CompOnMouseLeave(Sender: TObject);
begin
    //PicForm.Hide;
    LastIndex := -1;
end;

не помогает. серавно когда хоть раз по меню проводишь обратно не возвращается показывает только то что в меню а как только с меню убираю пустое окно остается 

 

вод код посмотри пожалуйста может там что то не так у меня

'Открыть '

const

UNDEF_INDEX = -777;

function GetCursorPos(var lpPoint: TPoint): BOOL; external '[email protected] 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(400), ScaleY(30), ScaleX(400), ScaleY(285));

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 := 'Markers.bmp';

'XVM': UndefPic := 'XVM.bmp';

'Дополнения XVM': UndefPic := 'Дополнения XVM.bmp';

'Карусель танков в три ряда': UndefPic := 'tankIconsCam.bmp';

'Панели счета WGL XVM': UndefPic := 'Панели счета WGL XVM.bmp';

'Карусель': UndefPic := 'Carousel.bmp';

'Карусель танков прозрачная P.S.Enot': UndefPic := 'Карусель танков прозрачная P.S.Enot.bmp';

'Карусель танков от игрока НЕКРОМАНТ': UndefPic := 'Карусель танков от игрока НЕКРОМАНТ.bmp';

'Дамаг панель Заяц с ремонтом по CTRL': UndefPic := 'Дамаг панель Заяц с ремонтом по CTRL.bmp';

'Панель счета WGL стиль Green': UndefPic := 'Панель счета WGL стиль Green.bmp';

'Панель счета WGL Green': UndefPic := 'Панель счета WGL Green.bmp';

'Медали в бою': UndefPic := 'ProAchivments.bmp';

'Дамаг лог от игрока НЕКРОМАНТ': UndefPic := 'Дамаг лог от игрока НЕКРОМАНТ.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

ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');

WizardForm.SelectComponentsLabel.Hide;

WizardForm.SelectComponentsPage;

WizardForm.TypesCombo.Hide;

WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(30), ScaleX(400), ScaleY(285));

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(400), ScaleY(30), ScaleX(400), ScaleY(285));

Shape := bsFrame;

end;

InfoPic := TBitmapImage.Create(WizardForm)

with InfoPic do

begin

Parent := WizardForm.SelectComponentsPage;

SetBounds(ScaleX(400), ScaleY(30), ScaleX(400), ScaleY(285));

Stretch := True;

ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');

Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp'));

 

end;

end;

post-35157-0-27402800-1505547623_thumb.jpg

Edited by P.S.Enot

Share this post


Link to post

Short link
Share on other sites
не помогает.

 

Пример я привел конкретно для кода описанного выше в посте ЛОМ-ма.

Ответил в личку конкретно по твоему коду.

 

P.S.: Код старайся помещать под спойлер, мало кому хочется видеть одно сообщение на пол страницы (в особенности это касается тех пользователей кто просматривает форум с мобильных девайсов).

Edited by night_dragon_on

Share this post


Link to post

Short link
Share on other sites

все решил проблему на вот таком коде все заработало. спасибо все за помощь

 

вот мой код все работает картинка как нужно возвращается и больше нет пустого окна.

 

'Открыть '

[код ]
function GetCursorPos(var lpPoint: TPoint): BOOL; external '[email protected] stdcall';
var
InfoPic: TBitmapImage;
TempPath: String;
procedure ShowPicHint(const PicFilePath: String);
var
pt: TPoint;
begin
if not GetCursorPos(pt) then Exit;
InfoPic.Bitmap.LoadFromFile(PicFilePath);
InfoPic.SetBounds(ScaleX(0), ScaleY(30), ScaleX(400), ScaleY(258));
InfoPic.Show;
end;
procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
var
UndefPic: String;
begin
if Index = -1 then Exit;
try
case TNewCheckListBox(Sender).ItemCaption[index] of
'Маркеры': UndefPic := 'Markers.bmp';
'XVM': UndefPic := 'XVM.bmp';
'Дополнения XVM': UndefPic := 'Дополнения XVM.bmp';
'Карусель танков в три ряда': UndefPic := 'tankIconsCam.bmp';
'Панели счета WGL XVM': UndefPic := 'Панели счета WGL XVM.bmp';
'Карусель': UndefPic := 'Carousel.bmp';
'Карусель танков прозрачная P.S.Enot': UndefPic := 'Карусель танков прозрачная P.S.Enot.bmp';
'Карусель танков от игрока НЕКРОМАНТ': UndefPic := 'Карусель танков от игрока НЕКРОМАНТ.bmp';
'Дамаг панель Заяц с ремонтом по CTRL': UndefPic := 'Дамаг панель Заяц с ремонтом по CTRL.bmp';
'Панель счета WGL стиль Green': UndefPic := 'Панель счета WGL стиль Green.bmp';
'Панель счета WGL Green': UndefPic := 'Панель счета WGL Green.bmp';
'ProAchivments': UndefPic := 'ProAchivments.bmp';
else
begin
InfoPic.Hide;
Exit;
end;
end;
if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);
ShowPicHint(TempPath + UndefPic);
finally
end;
end;
procedure CompOnMouseLeave(Sender: TObject);
begin
LastIndex := -1;
end;
procedure InitInfo();
begin
WizardForm.TypesCombo.Hide;
WizardForm.ComponentsList.SetBounds(ScaleX(400), ScaleY(30), ScaleX(400), ScaleY(258));
WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
TempPath := AddBackslash(ExpandConstant('{tmp}'));
with TBevel.Create(WizardForm) do
begin
Parent := WizardForm.SelectComponentsPage;
SetBounds(ScaleX(0), ScaleY(30), ScaleX(400), ScaleY(258));
Shape := bsFrame;
end;
InfoPic := TBitmapImage.Create(WizardForm)
with InfoPic do
begin
Parent := WizardForm.SelectComponentsPage;
AutoSize := True;
end;
end;

Пример я привел конкретно для кода описанного выше в посте ЛОМ-ма.

Ответил в личку конкретно по твоему коду.

 

P.S.: Код старайся помещать под спойлер, мало кому хочется видеть одно сообщение на пол страницы (в особенности это касается тех пользователей кто просматривает форум с мобильных девайсов).

спасибо . я уже все сделал. на другом коде . твоя подсказка помогла  . как всегда выручил. огромное спасибо тебе 

Edited by P.S.Enot

Share this post


Link to post

Short link
Share on other sites

вот так вот как то все получилось. музыку вырежу,  нафиг не нужна, только приведет к лишнему клацанью пользователей 

 

post-35157-0-88295200-1505598560_thumb.jpgpost-35157-0-04459800-1505598563_thumb.jpg

Share this post


Link to post

Short link
Share on other sites

Ужасный дизайн.

ну а какой не ужасный подскажите или пример покажите нормального дизайна . я как бы раньше не делал не когда не чего подобного. сделать решил чисто для подписчиков своей группы для которых я делаю хвм конфиги и иногда оформляю моды. по их просьбам сделать инсталятор что бы они не из архива папки кидали а могли автоматом ставить компоненты все я и решил попробовать для людей что то собрать. пролистав все страницы если честно я тут вообще не видел что то нормального из дизайна кроме обычного стандартного инсталятора который выполнен как подкопирку. возможно фоновое изображение стоит сменить. если вы знаете подскажите я же не против поучится здесь я тоже пока не чего не нашел  http://krinkels.org. да и как мне кажется дизайн не главная составляющая инсталятора . главное его функцианал и удобство . так что прошу покажите мне нормальный дизайн я рад буду прислушаться к вашему мнению

Share this post


Link to post

Short link
Share on other sites

всем приветы. народ подскажите если не трудно что и как нужно вписать  в этот код чтобы выбранные моды записывались бы в install.log  и  со второй страницы тоже.  а то в нём тока с 1ой страницы моды прописываются а со второй и с Tasks не пишет.   Ну черт с ним с Tasks но хотя бы чтобы вторая тоже была...

function CreateLogMods: Boolean;
var
  I: Integer;
  FileName, DateTime: String;
begin
  Result:=True;
  DateTime:=GetDateTimeString('dd/mm/yyyy  hh:nn', '-', '-');
  ForceDirectories(ExpandConstant('{app}\ХХХ-удалить'));
  FileName:=ExpandConstant('{app}\ХХХ-удалить\install.log');
  SaveStringToFile(FileName, '{#MyAppName} version {#MyAppVersion}' + #13#10 + #13#10 +  'Дата установки: ' + DateTime + #13#10 + #13#10 + 'Путь установки: ' +  WizardForm.DirEdit.Text +  #13#10 + #13#10 + 'Выбранные вами моды:' + #13#10, True);
    For I:=0 to WizardForm.ComponentsList.Items.Count - 1 do
        If WizardForm.ComponentsList.Checked[I] then
    begin
        SaveStringToFile(FileName, '    ' + WizardForm.ComponentsList.ItemCaption[I] + #13#10, True);
    end;
end;

P\S... и еще... наглеть так наглеть))) как привязать картинки ко второй странице компонентов  если я использую вот этот код?

 

[code]
#ifdef UNICODE
    #define A "W"
#else
    #define A "A"
#endif

const
    UNDEF_INDEX = -777;
    ALPHA_BLEND_LEVEL = 128; // 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 '[email protected] stdcall';
function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; external '[email protected] 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 '[email protected] stdcall';


procedure ShowPicHint(const PicFilePath: String);
var
    pt: TPoint;
begin
    if not GetCursorPos(pt) then Exit;
    InfoPic.Bitmap.LoadFromFile(PicFilePath);
    try
        with PicForm do
        begin
            SetBounds(ScaleX(pt.x + 16), ScaleY(pt.y + 7), InfoPic.Width, InfoPic.Height);
            Show;
        end;
    finally
        SetFocus(WizardForm.Handle);
    end;
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

            '. Анимированная лампочка 10сек.': UndefPic := 'анимированная лампочка.bmp';
             '. Белые трупы танков и белые гусеницы': UndefPic := 'белые трупы.bmp';
             '. небо звездное': UndefPic := 'звездное небо.bmp';
             '. Новый интерфейс ангара': UndefPic := 'кр.bmp';
             '. Мод тень от Polar Fox (модель танка)': UndefPic := 'Мод Тень.bmp';
             '. Панель счета c HP команд + лог урона': UndefPic := 'панель ХП.bmp';
             '. прицел - Jimbo': UndefPic := 'прицел джимбо.bmp';
             '. Круги сведения с пробитием (31 вариант)-(копируется на рабочий стол)': UndefPic := 'сведения.bmp';
            '. статистика за сессию SeVeRRR': UndefPic := 'статистика SeVeRRR.bmp';
            'ОЛЕНЬ': UndefPic := 'ХВМ.bmp';
            '. цветные пробития': UndefPic := 'цветные пробития.bmp';
            '. прицел - Желтый': UndefPic := 'прицел желтый.bmp';
            '. панель повреждений с таймером ремонта от Andre_V \ GambitER': UndefPic := 'панель GambitER.bmp';

            '. Менеджер аккаунтов': UndefPic := 'Менеджер аккаунтов.bmp';
            '. P-MoD = сервер + лампа 10 сек + ком.камера + зум60х': UndefPic := 'п мод.bmp';
            '. Отображения установленного оборудования на танках': UndefPic := 'показ оборудования.bmp';
            '. мод тылы, разноцветный индикатор ближайших врагов': UndefPic := 'тылы мод.bmp';
            '. прицел L - MS': UndefPic := 'прицел L - MS.bmp';
            '. прицел от Andr': UndefPic := 'прицел от Andr.bmp';

        else
            begin
                LastIndex := UNDEF_INDEX;
                PicForm.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
    PicForm.Hide;
    LastIndex := -1;
end;


procedure InitInfo();
begin
    WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
    WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
    TempPath := AddBackslash(ExpandConstant('{tmp}'));
    LastIndex := UNDEF_INDEX;
    PicForm := TForm.Create(WizardForm)
    with PicForm do
    begin
        BorderStyle := bsNone;
        FormStyle := fsStayOnTop;
        InfoPic := TBitmapImage.Create(PicForm)
        with InfoPic do
        begin
            Parent := PicForm;
            AutoSize := True;
        end;
    end;
    SetWindowLong(PicForm.Handle, GWL_EXSTYLE, GetWindowLong(PicForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
    SetLayeredWindowAttributes(PicForm.Handle, 0, ALPHA_BLEND_LEVEL, LWA_ALPHA);
end;


procedure InitializeWizard();
begin
    InitInfo();
end; 

 

 

P\P\S... Пожалуйста еще помогите объединить два кода в один, они вроде все на NextButtonClick привязаны

 

1.

function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then
begin
MsgBox('Не верно указана папка World of Tanks!', mbError, MB_OK);
Result := False;
end;
end;
end;

2.

function IsAppRunning(): Boolean;
begin                                                                
  Result:=(FindWindowByWindowName('WoT Client') <> 0);
end;

function NextButtonClick(CurPage: Integer): Boolean;
begin
  Result:=True;
If CurPage=1 then
begin
  if IsAppRunning() then
  begin
    MsgBox('Клиент игры World of Tanks в настоящее время запущен.' #13#13 'Необходимо закрыть его перед продолжением установки.', mbError, MB_OK);
    Result:=False;
  end;
  else
    Result:=True;
end;
end;

 Буду очень и ооооочень благодарен  :ok:

Edited by ЛОМ

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...