Jump to content
Korean Random
EvilAlex

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

Recommended Posts

Ошибка говорит, что на данном этапе WizardForm еще не существует, а вы пытаетесь к ней обратиься.

В функции InitializeSetup нельзя обращться к WizardForm, а так же её дочерним компонентам ибо они будут созданы после того, как отработает функция.

и как это сделать?

Share this post


Link to post

Short link
Share on other sites

Ошибка говорит, что на данном этапе WizardForm еще не существует, а вы пытаетесь к ней обратиться.

В функции InitializeSetup нельзя обращаться к WizardForm, а так же её дочерним компонентам ибо они будут созданы после того, как отработает эта функция.

Да, это уже выяснилось. Разговор об этом плавно перешёл в ЛС.

Изначально проблемой было WizardForm.Free в процедуре DeinitializeSetup. Но потом выяснилось, что какой-то из остальных DeinitializeSetup до сих пор использует визард (там много процедур подключаются).

 

@Ekspoint, прблема в DeinitializeSetup. Отключай всё оттуда по очереди и узнаешь.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

 

@Ekspoint, прблема в DeinitializeSetup. Отключай всё оттуда по очереди и узнаешь.

ок

все равно ошибка

Share this post


Link to post

Short link
Share on other sites

Здарова,

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


AtotIK, подскажи будь добр, ты ведь гений  в этих делах

Edited by Pokaritel_VBR

Share this post


Link to post

Short link
Share on other sites

Pokaritel_VBR, пачка примеров и библиотек лежит в папке с Inno Ultra. Если конечно устанавливал. Достаточно поискать: "Dll Examples\Isgsg [0.6.0.69]".

 

Про "виснет и т.д." не понял ничего - подробней.

Share this post


Link to post

Short link
Share on other sites

Парни как сделать чтоб после страницы выбора компонентов открывалась страница SelectTasksPage?

Share this post


Link to post

Short link
Share on other sites

Парни как сделать чтоб после страницы выбора компонентов открывалась страница SelectTasksPage?

Нужен хотя бы один таск.

Share this post


Link to post

Short link
Share on other sites

MEDNIKs, призываю КЭПа на помощь.

 

Один пункт в блоке [Tasks] инициализирует страницу.

[Tasks]
Name: "Tweaker"; Description: "Отключение эффектов:"; Flags: unchecked;

Share this post


Link to post

Short link
Share on other sites

MEDNIKs, призываю КЭПа на помощь.

 

Один пункт в блоке [Tasks] инициализирует страницу.

[Tasks]
Name: "Tweaker"; Description: "Отключение эффектов:"; Flags: unchecked;

Кеп сдесь, ты зачем вызывал, о Всемогущий?  :heh:

Edited by Darksoul

Share this post


Link to post

Short link
Share on other sites

 

 

Один пункт в блоке [Tasks] инициализирует страницу.

Создать через Task получилось а вот редактировать не получается! 

Share this post


Link to post

Short link
Share on other sites

Создать через Task получилось а вот редактировать не получается! 

А что тебе там отредактировать нужно?

Share this post


Link to post

Short link
Share on other sites

хотел окно твикера там разместить post-19655-0-25121400-1418072500_thumb.png не получилось

 

теперь пробую его заталкать на страницу ReadyPage

Share this post


Link to post

Short link
Share on other sites

 

 

хотел окно твикера там разместить
"твикер" - это не окно. Это TNewCheckListBox.

И у тебя он, по ходу, окрашивается скином, вот его и не видно.

Share this post


Link to post

Short link
Share on other sites

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

procedure RedesignWizardForm1;
begin
  with WizardForm do
  begin
    AutoScroll := False;
  end;
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.Left := ScaleX(490);   // размер картинки  323X279
    InfoPic.Top := ScaleY(28);
    InfoPic.Width := ScaleX(323);
    InfoPic.Height := ScaleY(279);
    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
//-----------------------КАРТИНКИ----------------------------\\
'OverCross от zayaz': UndefPic := 'OverCross от zayaz.bmp';
'Корейский прицел (Deegie Sights)': UndefPic := 'Корейский прицел (Deegie Sights).bmp';
'Прицел J1mB0': UndefPic := 'Прицел J1mB0.bmp';
'Прицел от Орешкина (Зеленый)': UndefPic := 'Прицел от Орешкина (Зеленый).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 InitializeWizard1();
begin
    with WizardForm.ComponentsList do    //рамка компонентов
    begin
    Top := ScaleY(26);
    Width := ScaleX(473);
    Height := ScaleY(284);
    Offset := 0;
    WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
    WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
    TempPath := AddBackslash(ExpandConstant('{tmp}'));
     LastIndex := UNDEF_INDEX;
     end;
    with TBevel.Create(WizardForm) do
    begin
      Parent := WizardForm.SelectComponentsPage;
      Left := ScaleX(488);  //рамка картинки
      Top := ScaleY(26);
      Width := ScaleX(329);
      Height := ScaleY(284);
      Shape := bsFrame;
    end;
    InfoPic := TBitmapImage.Create(WizardForm)
    with InfoPic do
    begin
    Parent := WizardForm.SelectComponentsPage;
    Left := ScaleX(490);
    Top := ScaleY(28);
    Width := ScaleX(323);
    Height := ScaleY(279);
    AutoSize := true;
    ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');
    Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp'));
    end;
end;

Share this post


Link to post

Short link
Share on other sites

 

 

как сделать так чтобы какая то картинка появлялась тогда когда отводишь курсор с компонента?
Вот это:
WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;

поменяй на это:

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

Должно сработать.

Share this post


Link to post

Short link
Share on other sites
WizardForm.ComponentsList.OnItemMouseMove := @CompOnMouseLeave;
WizardForm.ComponentsList.OnMouseLeave := @CompOnItemMouseMove;

Должно сработать.

 

нет 

 

Share this post


Link to post

Short link
Share on other sites

@Ekspoint, значит, нельзя.

Изображение выводится под курсором (GetCursorPos) при его наведении на компонент, наоборот - никак (только писать что-то новое).

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Боже мой, возьми уже кавычки - «»

Можешь не благодарить

???

Share this post


Link to post

Short link
Share on other sites

как переместить в новое окно по кнопке?

#define Video "_The_Expendables_mp4.avi"
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Files]
Source: "IsDXvideo.dll"; DestDir: "{app}"
Source: {#Video}; Flags: dontcopy
[Types]
Name: rus; Description: Полностью русский язык; Flags: iscustom
Name: eng; Description: Полностью английский язык язык;
Name: ruseng; Description: Русская озвучка, английские субтитры;
Name: engrus; Description: Английская озвучка, русские субтитры;
[Components]
Name: text; Description: Язык субтитров; Types: rus eng ruseng engrus; Flags: fixed
Name: text\rus; Description: Русский; Flags: exclusive; Types: rus engrus;
Name: text\eng; Description: Английский; Flags: exclusive; Types: eng ruseng;
Name: voice; Description: Язык озвучки; Types: rus eng ruseng engrus; Flags: fixed
Name: voice\rus; Description: Русский; Flags: exclusive; Types: rus ruseng;
Name: voice\eng; Description: Английский; Flags: exclusive; Types: eng engrus;
[Tasks]
Name: VCCheck; Description: Установить Microsoft Visual C++ 2005 Redist
Name: PhysXCheck; Description: Установить Nvidia PhysX
[Code]
function DXvideoAdd(aHwnd:HWND;FileName:PAnsiChar;volume,aLeft,aTop,aWidth,aHeight:Integer;Time:Double):Integer;external 'DXvideoAdd@files:IsDXvideo.dll stdcall';
procedure DXvideoSetPosition(DXV,aLeft,aTop,aWidth,aHeight:Integer);external 'DXvideoSetPosition@files:IsDXvideo.dll stdcall';
procedure DXvideoFullScreen(DXV:Integer);external 'DXvideoFullScreen@files:IsDXvideo.dll stdcall';
procedure DXvideoSetVisible(DXV:Integer;Show:Boolean);external 'DXvideoSetVisible@files:IsDXvideo.dll stdcall';
procedure DXvideoRun(DXV:Integer);external 'DXvideoRun@files:IsDXvideo.dll stdcall';
procedure DXvideoPause(DXV:Integer);external 'DXvideoPause@files:IsDXvideo.dll stdcall';
procedure DXvideoFree;external 'DXvideoFree@files:IsDXvideo.dll stdcall';
procedure DXvideoVolumeUp(DXV:Integer);external 'DXvideoVolumeUp@files:IsDXvideo.dll stdcall';
procedure DXvideoVolumeDown(DXV:Integer);external 'DXvideoVolumeDown@files:IsDXvideo.dll stdcall';
procedure DXvideoInit;external 'DXvideoInit@files:IsDXvideo.dll stdcall';
//***********************************************************************************************//
var
  showvid,startdx,full:Boolean;
  showvid1,startdx1,full1:Boolean;
  DXbtn1,DXbtn:Array[0..3]of TNewButton;
  Portal:Integer;
//************************************//
procedure DXbtnClick(Sender: TObject);
begin
  case Sender of
DXbtn[0]:
      begin
      case startdx of
        True: begin
          DXvideoPause(Portal);
          DXbtn[0].Caption := '4';
        end;
        False:begin
          DXvideoRun(Portal);
          DXbtn[0].Caption := ';';
        end;
      end;
      startdx:= not startdx;
      DXbtn[1].Enabled:=startdx;
    end;
//*****************************//
DXbtn[1]:
      begin
      case full of
        True: begin
          DXvideoSetPosition(Portal,ScaleX(0),ScaleY(0),ScaleX(480),ScaleY(272));
          DXbtn[1].Font.Name:='Symbol';
          DXbtn[1].Caption := 'Ы';
        end;
        False:begin
          DXvideoSetPosition(Portal,ScaleX(-180),ScaleY(0),ScaleX(830),ScaleY(437));
          DXbtn[1].Font.Name:='MS Outlook';
          DXbtn[1].Caption := 'M';
        end;
      end;
      full:= not full;
    end;
//*****************************//
    DXbtn[2]:DXvideoVolumeDown(Portal);
    DXbtn[3]:DXvideoVolumeUp(Portal);
  DXbtn1[0]:
  end;
end;
//*************************************************************************************//
procedure InitializeWizard();
var
  i:Integer;
begin
  with WizardForm do
  begin
    AutoScroll := False;
    ClientHeight := ScaleY(700);
    ClientWidth := ScaleX(800);
    OuterNotebook.SetBounds(ScaleX(0),ScaleY(272),ScaleX(480),ScaleY(170));
    InnerNotebook.SetBounds(ScaleX(25),ScaleY(1),ScaleX(425),ScaleY(169));
    InnerPage.Color:=clWhite;
    WizardBitmapImage.Hide;
    WizardBitmapImage2.Hide;
    MainPanel.Hide;
    Bevel.SetBounds(ScaleX(0),ScaleY(442),ScaleX(470),ScaleY(1));
    Bevel1.SetBounds(ScaleX(0),ScaleY(0),ScaleX(470),ScaleY(1));
    BackButton.SetBounds(ScaleX(227),ScaleY(447),ScaleX(80),ScaleY(25));
    NextButton.SetBounds(ScaleX(307),ScaleY(447),ScaleX(80),ScaleY(25));
    CancelButton.SetBounds(ScaleX(387),ScaleY(447),ScaleX(80),ScaleY(25));
//*************************************************************************//
    for i:=0 to 3 do
    begin
      DXbtn[i]:=TNewButton.Create(WizardForm);
      with DXbtn[i] do
      begin
        Parent := WizardForm;
        SetBounds(ScaleX(3+i*30),ScaleY(443),ScaleX(35),ScaleY(20));
            Font.Size:=10;
        case i of
        0:begin
            Font.Name:='Webdings';
            Caption := '4';
          end;
//*****************************//
        1:begin
            Font.Name:='Symbol';
            Caption := 'Ы';
            Enabled:=False;
          end;
//*****************************//
        2:begin
            Caption := '-';
          end;
//*****************************//
        3:begin
            Caption := '+';
          end;
//*****************************//
        end;
        OnClick := @DXbtnClick;
     end;
end;
    WelcomeLabel1.Hide;
    WelcomeLabel2.Hide;
    DiskSpaceLabel.Top := ScaleY(150);
    SelectComponentsLabel.SetBounds(ScaleX(0),ScaleY(1),ScaleX(425),ScaleY(40));
    TypesCombo.SetBounds(ScaleX(0),ScaleY(50),ScaleX(425),ScaleY(21));
    ComponentsList.SetBounds(ScaleX(0),ScaleY(75),ScaleX(425),ScaleY(90));
    NoIconsCheck.Top := ScaleY(150);
    TasksList.SetBounds(ScaleX(0),ScaleY(75),ScaleX(425),ScaleY(90));
    TasksList.Color:=clWhite;
    TasksList.BorderStyle:=bsSingle;
    SelectTasksLabel.Width := ScaleX(465);
    ReadyMemo.SetBounds(ScaleX(0),ScaleY(50),ScaleX(425),ScaleY(115));
    ReadyMemo.Color:=clWhite;
    ReadyMemo.BorderStyle:=bsSingle;
    ReadyLabel.Width := ScaleX(465);
    FilenameLabel.SetBounds(ScaleX(0),ScaleY(110),ScaleX(425),ScaleY(14));
    StatusLabel.SetBounds(ScaleX(0),ScaleY(90),ScaleX(425),ScaleY(14));
    ProgressGauge.SetBounds(ScaleX(0),ScaleY(130),ScaleX(425),ScaleY(20));
    FinishedHeadingLabel.SetBounds(ScaleX(25),ScaleY(5),ScaleX(425),ScaleY(14));
    FinishedLabel.SetBounds(ScaleX(25),ScaleY(65),ScaleX(425),ScaleY(14));
//******************************************************************************//
    ExtractTemporaryFile('{#Video}');
    Portal := DXvideoAdd(Handle,ExpandConstant('{tmp}\{#Video}'),-2000,ScaleX(0),ScaleY(0),ScaleX(480),ScaleY(272),73);
end;
  showvid:= True;
  showvid1:= True;
  DXvideoInit;
end;
procedure DeinitializeSetup();
begin
  DXvideoFree;
end;

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...