Jump to content
Korean Random
EvilAlex

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

Recommended Posts

Вот так:

[Tasks]
Name: "Tweaker"; Description: "Отключение эффектов:";
Name: "Tweaker\Fog"; Description: "Удалить туман на картах и увеличить дальность видимости"; GroupDescription: "Отключение эффектов:";

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

Парни подскажите как изменить прогресс бар?Дело в том,что полоса движется не равномерно а иногда сразу же доходит до конца и стоит на месте пока идет копирование .

Share this post


Link to post

Short link
Share on other sites

Парни подскажите как изменить прогресс бар?Дело в том,что полоса движется не равномерно а иногда сразу же доходит до конца и стоит на месте пока идет копирование .

Есть библиотека для создания кастомного прогресс-бара, но я не юзал её и не знаю, как она будет расчитывать. Я на 90% уверен, что будет так же.

Ну сам понимаешь, что абсолютно все файлы (с зависимостью от размера) не могут распаковываться идентично по скорости. По-этому полоса движется относительно общего объёма всех выбранных на установку компонентов. Если в конце остаётся распаковать кучу-кучу мелких файлов (типо твикера), то полоса, понятное дело, замедляется.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

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

 

Это широко известный факт из области ООП. Поэтому чем меньше меньше шагов у прогрессбара тем лучше.

Share this post


Link to post

Short link
Share on other sites

Я тут поигрался с ComboBox`ом, и единственный вопрос возник:

При переходе на страницу с этим боксом, он отображается так:

post-16412-0-56607000-1408197845_thumb.png

просто пустой. Но при нажатии на него и выборе какого-то типа - тот отображается нормально.\

 

Как включить его видимым? Вроде уже все опции перепробовал.. как-то получалось, но два типа, которые я туда поставил, путались..

 

Решено. ItemIndex, если кому-то понадобится.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Я тут поигрался с ComboBox`ом, и единственный вопрос возник:

При переходе на страницу с этим боксом, он отображается так:

attachicon.gif16.108.png

просто пустой. Но при нажатии на него и выборе какого-то типа - тот отображается нормально.\

 

Как включить его видимым? Вроде уже все опции перепробовал.. как-то получалось, но два типа, которые я туда поставил, путались..

 

У него должно быть свойство ItemIndex типа Integer, если оно задано -1, то ни одно из значений не выбрано, если задано 0, то выбрано первое значение. 

Share this post


Link to post

Short link
Share on other sites

Kotyarko_O, можно указать что написать в нём:

  NewComboBox := TNewComboBox.Create(WizardForm);
  with NewComboBox do
  begin
    Name := 'NewComboBox';
    Parent := Page.Surface;
    Left := ScaleX(0);
    Top := ScaleY(0);
    Width := ScaleX(417);
    Height := ScaleY(21);
    Style := csDropDownList;
    Text := 'TComboBox';
    Items.Text := 'TComboBox';
    ItemIndex := 0;
  end;

А выбрать вот так: меняй ItemIndex.

Edited by AtotIK

Share this post


Link to post

Short link
Share on other sites

@StranikS_Scan, @AtotIK, создавал так:

 TPComboBox := TNewComboBox.Create(TweakerPage);
 TPComboBox.Parent := TweakerPage.Surface;
 TPComboBox.Left := WizardForm.TypesCombo.Left;
 TPComboBox.Top := WizardForm.TypesCombo.Top;
 TPComboBox.Width := WizardForm.TypesCombo.Width;
 TPComboBox.Height := WizardForm.TypesCombo.Height;
 TPComboBox.Style := csDropDownList;
 TPComboBox.Ctl3D := True;
 TPComboBox.Items.Add('Конфигурация настроек твикера, рекомендуемая автором сборки.');
 TPComboBox.Items.Add('Конфигурация настроек твикера для максимальной производительности.');
 TPComboBox.ItemIndex := 0;
 TPComboBox.OnChange := @TPComboBoxChange;

Но изначально, параметр ItemIndex был вписан раньше, чем Items.Add. Вот и не слушалось.

Потом догнал, опустил ItemIndex ниже и всё решилось :)

 Порядок записи иногда важен, я о нём часто забываю.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Да, он сбрасывается на -1 автоматически, когда редактируется состав пунктов.

Share this post


Link to post

Short link
Share on other sites

Пока получилось вот так:

post-16412-0-71638600-1408200132_thumb.png

Как думаете, изображение там не лишнее?

Share this post


Link to post

Short link
Share on other sites

мне кажется лишнее, а само окошко с выбором настроек расширить

Edited by XSerzHX

Share this post


Link to post

Short link
Share on other sites

Kotyarko_O, чекаешь хоть так?

WizardForm.TasksList.Checked[0]

Нет. У меня на отдельно созданной странице.

Так что вот так:

Procedure TPComboBoxChange(Sender: TObject);
begin
 case TPComboBox.ItemIndex of
 0:
  begin
   TPBox.Checked[1] := False;
   TPBox.Checked[2] := True;
  end;
 1:
  begin
   TPBox.Checked[1] := True;
   TPBox.Checked[2] := True;
  end;
 end;
end;

'вот, для полного представления механизма:'

[Files]
Source: "MODS\FPS\NO_FOG\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: TPB1;
Source: "MODS\FPS\NO_SKYBOXES\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: TPB2;

[Code]
Procedure TPComboBoxChange(Sender: TObject);
begin
 case TPComboBox.ItemIndex of
 0:
  begin
   TPBox.Checked[1] := True;
   TPBox.Checked[2] := True;
  end;
 1:
  begin
   TPBox.Checked[1] := False;
   TPBox.Checked[2] := False;
  end;
 end;

Function CreateTweakerPage(PreviousPageId: Integer): Integer;
begin
 TPComboBox := TNewComboBox.Create(TweakerPage);
 TPComboBox.Parent := TweakerPage.Surface;
 TPComboBox.Left := WizardForm.TypesCombo.Left;
 TPComboBox.Top := WizardForm.TypesCombo.Top;
 TPComboBox.Width := WizardForm.TypesCombo.Width;
 TPComboBox.Height := WizardForm.TypesCombo.Height;
 TPComboBox.Style := csDropDownList;
 TPComboBox.Items.Add('Конфигурация настроек твикера, рекомендуемая автором сборки.');
 TPComboBox.Items.Add('Конфигурация настроек твикера для максимальной производительности.');
 TPComboBox.ItemIndex := 0;
 TPComboBox.OnChange := @TPComboBoxChange;
end;

Function TPB1(): Boolean;
begin
 Result := TPBox.Checked[1];
end;

Function TPB2(): Boolean;
begin
 Result := TPBox.Checked[2];
end;

Procedure CreateTweakerPageDO();
begin
 CreateTweakerPage(wpSelectComponents);
end;
end;

Это основа, по которой можно понять, как работает.

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

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Kotyarko_O, на TaskPage тот же ComponentsList, но видоизменённый. Привести его в нормальный вид ничего не стоит, на TaskPage и размещай свой ComboBox с параметрами.

Edited by AtotIK

Share this post


Link to post

Short link
Share on other sites

Kotyarko_O, на TaskPage тот же ComponentsList, но видоизменённый. Привести его в нормальный вид ничего не стоит, на TaskPage и размещай свой ComboBox с параметрами.

Я делал две страницы с твикером, для сравнения.. первая как раз на TaskPage, но она мне не понравилась изначально, из-за чего и снёс, оставив текущую, кастомную страницу.

Мне пока ничем не мешает. Возможно (опять же, когда снова дойдут руки), перемещу её.

Share this post


Link to post

Short link
Share on other sites

Как замутить кликабельную картинку внизу модпака

#define MyAppURL "www.eee.com"

[Files]
Source: logo.bmp; Flags: dontcopy noencryption 

Procedure LogoOnClick(Sender: TObject);
var
 ResCode: Integer;
begin
  ShellExec('', '{#MyAppURL}', '' , '', SW_SHOW, ewNoWait, ResCode);
end;

Procedure Logo;
var
 BtnPanel: TPanel;
 BtnImage: TBitmapImage;
begin
 ExtractTemporaryFile('logo.bmp');
 BtnPanel:=TPanel.Create(WizardForm);
  BtnPanel.Left:=0;
  BtnPanel.Top:=0;
  BtnPanel.Width:=0;
  BtnPanel.Height:=0;
  BtnPanel.Cursor:=crHand;
  BtnPanel.OnClick:=@logoOnClick;
  BtnPanel.Parent:=WizardForm;

 BtnImage:=TBitmapImage.Create(WizardForm);
  BtnImage.AutoSize:=True;
  BtnImage.Enabled:=False;
  BtnImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\logo.bmp');
  BtnImage.Parent:=BtnPanel;
 end;

Procedure InitializeWizard();
begin
 Logo();
end;

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

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites
#define MyAppURL "www.eee.com"

[Files]
Source: logo.bmp; Flags: dontcopy noencryption 

Procedure LogoOnClick(Sender: TObject);
var
 ResCode: Integer;
begin
  ShellExec('', '{#MyAppURL}', '' , '', SW_SHOW, ewNoWait, ResCode);
end;

Procedure Logo;
var
 BtnPanel: TPanel;
 BtnImage: TBitmapImage;
begin
 ExtractTemporaryFile('logo.bmp');
 BtnPanel:=TPanel.Create(WizardForm);
  BtnPanel.Left:=0;
  BtnPanel.Top:=0;
  BtnPanel.Width:=0;
  BtnPanel.Height:=0;
  BtnPanel.Cursor:=crHand;
  BtnPanel.OnClick:=@logoOnClick;
  BtnPanel.Parent:=WizardForm;

 BtnImage:=TBitmapImage.Create(WizardForm);
  BtnImage.AutoSize:=True;
  BtnImage.Enabled:=False;
  BtnImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\logo.bmp');
  BtnImage.Parent:=BtnPanel;
 end;

Procedure InitializeWizard();
begin
 Logo();
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...