Jump to content
Korean Random
EvilAlex

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

Recommended Posts

@Kotyarko_O, не получаеться...

 

Если НЕТ, то:post-31076-0-60508500-1427965354_thumb.jpg

 

 

 

Если убрать это: Скрипт с музыкой.zip

НЕТ нормально закрывает инсталлятор

То если  ДА (закрывается игра, и запускается инсталлятор, если игра не запущена то инсталлятор вообще не запускается):

[15:14:39,792]   InitializeSetup returned False; aborting.
[15:14:39,793]   Got EAbort exception.
[15:14:39,794]   Deinitializing Setup.
[15:14:39,809]   *** Установка exit code: 1

Edited by sergey spb

Share this post


Link to post

Short link
Share on other sites

@sergey spb, и что за архив ты приложил? Как оформить музыку мне известно, и все примеры по 100 раз виданы.

Нужен твой скрипт.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Всем привет! А как сделать так что б ты например при установки мод пака выбрал русский и весь мод пак на русском и в том числе вибор модов, зделать бекап ,удалить моди , выбрал украинский и весь на украинской ?

Edited by voin_123

Share this post


Link to post

Short link
Share on other sites

Подключай языки и используй для каждой надписи вариации на разных языках:

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

[CustomMessages]
RU.CompName1=Компонент 1
RU.CompName2=Компонент 2
EN.CompName1=Component 1
EN.CompName2=Component 2

Share this post


Link to post

Short link
Share on other sites

@AtotIK, Все супер но как такое зделать на удаление или бэкап? видает ошибку

Edited by voin_123

Share this post


Link to post

Short link
Share on other sites

@voin_123,

Вместо описания нужно прописать ссылку на CustomMessages

[CustomMessages]
ru.DeleteRadioButtonDesc=Удалить моды
en.DeleteRadioButtonDesc=Delete mods

[_code]
DeleteRadioButton.Caption:=ExpandConstant('{cm:DeleteRadioButtonDesc}');

Share this post


Link to post

Short link
Share on other sites

Hello Everyone.

I need help.

I do not know russian language . however, i understand your article and post with the google translator.

 

[Files]


;Source: "{app}\res_mods\configs\xvm\Aslain\battleLoading,3.xc"; DestDir: "{app}\res_mods\configs\xvm\Aslain"; DestName: "battleLoading.xc"; Check: "IsComponentNotSelected('am/addons/panels/BattleLoading')"; MinVersion: 0.0,5.0; Flags: ignoreversion
;Source: "{app}\res_mods\configs\xvm\Aslain\playersPanel,4.xc"; DestDir: "{app}\res_mods\configs\xvm\Aslain"; DestName: "playersPanel.xc"; Check: "IsComponentNotSelected('am/addons/panels/PlayersPanel')"; MinVersion: 0.0,5.0; Flags: ignoreversion
;Source: "{app}\res_mods\configs\xvm\Aslain\texts,3.xc"; DestDir: "{app}\res_mods\configs\xvm\Aslain"; DestName: "texts.xc"; Check: "IsComponentNotSelected('am/addons/panels/PlayersPanel')"; MinVersion: 0.0,5.0; Flags: ignoreversion
;Source: "{app}\res_mods\configs\xvm\Aslain\statisticForm,3.xc"; DestDir: "{app}\res_mods\configs\xvm\Aslain"; DestName: "statisticForm.xc"; Check: "IsComponentNotSelected('am/addons/panels/StatisticsTab')"; MinVersion: 0.0,5.0; Flags: ignoreversion
 

 

//=================================================================================================

 

This is File section in Aslain modpack. I wondered " IsComponentNotSelected() "

 

Maybe...

Any Component is not selected, shoud use default config(ex;battleloading,3.xc).

 

And.... How do i make this function or procedure?

Can Somebody help me?

Edited by neosecure

Share this post


Link to post

Short link
Share on other sites
I wondered " IsComponentNotSelected() "

You can use (for example):

[Components]
Name: am\addons\panels\BattleLoading; Description: 11;

[Files]
Source: "{app}\res_mods\configs\xvm\Aslain\battleLoading,3.xc"; DestDir: "{app}\res_mods\configs\xvm\Aslain"; DestName: "battleLoading.xc"; Check: not am\addons\panels\BattleLoading; MinVersion: 0.0,5.0; Flags: ignoreversion
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

Всем прив а как добавить ещо одну вкладку с виборами компонентов?

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

Share this post


Link to post

Short link
Share on other sites

Всем прив а как добавить ещо одну вкладку с виборами компонентов?

[Setup]
AppName=Моя программа
AppVersion=1.5
DefaultDirName={pf}\Моя программа
DirExistsWarning=no
AppendDefaultDirName=no

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

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

[Files]
Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "TextRussian.isl"; Check: IsComponentsForm1(1)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "TextEnglish.isl"; Check: IsComponentsForm1(2)
Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "VoiceRussian.isl"; Check: IsComponentsForm1(4)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "VoiceEnglish.isl"; Check: IsComponentsForm1(5)
//========================================================================\\
Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "TextRussian.isl"; Check: IsComponentsForm2(1)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "TextEnglish.isl"; Check: IsComponentsForm2(2)
Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "VoiceRussian.isl"; Check: IsComponentsForm2(4)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "VoiceEnglish.isl"; Check: IsComponentsForm2(5)
//========================================================================\\
Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "TextRussian.isl"; Check: IsComponentsForm3(1)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "TextEnglish.isl"; Check: IsComponentsForm3(2)
Source: "compiler:Languages\Russian.isl"; DestDir: "{app}"; DestName: "VoiceRussian.isl"; Check: IsComponentsForm3(4)
Source: "compiler:Default.isl"; DestDir: "{app}"; DestName: "VoiceEnglish.isl"; Check: IsComponentsForm3(5)

[Code]
var
  ComponentsPage1,ComponentsPage2,ComponentsPage3: TWizardPage;
  SelectComponentsLabel1,SelectComponentsLabel2,SelectComponentsLabel3: TNewStaticText;
  ComponentsList1,ComponentsList2,ComponentsList3: TNewCheckListBox;

procedure ComponentsForm1;
begin
  ComponentsPage1 := CreateCustomPage(wpSelectComponents, 'ПЕРВАЯ СТРАНИЦА', SetupMessage(msgSelectComponentsDesc));
//========================================================================\\
  SelectComponentsLabel1 := TNewStaticText.Create(WizardForm);
  with SelectComponentsLabel1 do
  begin
    Parent := ComponentsPage1.Surface;
    SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(42));
    AutoSize := False;
    WordWrap := True;
    Caption := SetupMessage(msgSelectComponentsLabel2);
  end;
//========================================================================\\
  ComponentsList1 := TNewCheckListBox.Create(WizardForm);
  with ComponentsList1 do
  begin
    Parent := ComponentsPage1.Surface;
    SetBounds(ScaleX(0), ScaleY(61), ScaleX(417), ScaleY(169));
    AddCheckBox(CustomMessage('CompSubtitlesLng'), '', 0, True, False, False, True, nil);  //0
      AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);                //1
      AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);               //2
    AddCheckBox(CustomMessage('CompVoiceLng'), '', 0, True, False, False, True, nil);      //3
      AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);                //4
      AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);               //5
  end;
end;
procedure ComponentsForm2;
begin
  ComponentsPage2 := CreateCustomPage(ComponentsPage1.ID, 'ВТОРАЯ СТРАНИЦА', SetupMessage(msgSelectComponentsDesc));
//========================================================================\\
  SelectComponentsLabel2 := TNewStaticText.Create(WizardForm);
  with SelectComponentsLabel2 do
  begin
    Parent := ComponentsPage2.Surface;
    SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(42));
    AutoSize := False;
    WordWrap := True;
    Caption := SetupMessage(msgSelectComponentsLabel2);
  end;
//========================================================================\\
  ComponentsList2 := TNewCheckListBox.Create(WizardForm);
  with ComponentsList2 do
  begin
    Parent := ComponentsPage2.Surface;
    SetBounds(ScaleX(0), ScaleY(61), ScaleX(417), ScaleY(169));
    AddCheckBox(CustomMessage('CompSubtitlesLng'), '', 0, True, False, False, True, nil);  //0
      AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);                //1
      AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);               //2
    AddCheckBox(CustomMessage('CompVoiceLng'), '', 0, True, False, False, True, nil);      //3
      AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);                //4
      AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);               //5
  end;
end;

procedure ComponentsForm3;
begin
  ComponentsPage3 := CreateCustomPage(ComponentsPage2.ID, 'ТРЕТЬЯ СТРАНИЦА', SetupMessage(msgSelectComponentsDesc));
//========================================================================\\
  SelectComponentsLabel3 := TNewStaticText.Create(WizardForm);
  with SelectComponentsLabel3 do
  begin
    Parent := ComponentsPage3.Surface;
    SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(42));
    AutoSize := False;
    WordWrap := True;
    Caption := SetupMessage(msgSelectComponentsLabel2);
  end;
//========================================================================\\
  ComponentsList3 := TNewCheckListBox.Create(WizardForm);
  with ComponentsList3 do
  begin
    Parent := ComponentsPage3.Surface;
    SetBounds(ScaleX(0), ScaleY(61), ScaleX(417), ScaleY(169));
    AddCheckBox(CustomMessage('CompSubtitlesLng'), '', 0, True, False, False, True, nil);  //0
      AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);                //1
      AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);               //2
    AddCheckBox(CustomMessage('CompVoiceLng'), '', 0, True, False, False, True, nil);      //3
      AddRadioButton(CustomMessage('CompRussian'), '', 1, True, True, nil);                //4
      AddRadioButton(CustomMessage('CompEnglish'), '', 1, False, True, nil);               //5
  end;
end;

function IsComponentsForm1(CompIndex: Integer): Boolean;
var
  i: Integer;
begin
  Result := False;
  for i := 0 to ComponentsList1.ItemCount - 1 do
  begin
    if CompIndex <= (ComponentsList1.ItemCount - 1) then
      Result := ComponentsList1.Checked[CompIndex];
  end;
end;
//========================================================================\\
function IsComponentsForm2(CompIndex: Integer): Boolean;
var
  i: Integer;
begin
  Result := False;
  for i := 0 to ComponentsList2.ItemCount - 1 do
  begin
    if CompIndex <= (ComponentsList2.ItemCount - 1) then
      Result := ComponentsList2.Checked[CompIndex];
  end;
end;
//========================================================================\\
function IsComponentsForm3(CompIndex: Integer): Boolean;
var
  i: Integer;
begin
  Result := False;
  for i := 0 to ComponentsList3.ItemCount - 1 do
  begin
    if CompIndex <= (ComponentsList3.ItemCount - 1) then
      Result := ComponentsList3.Checked[CompIndex];
  end;
end;

procedure InitializeWizard();
begin
  ComponentsForm1;
  ComponentsForm2;
  ComponentsForm3;
end; 

Share this post


Link to post

Short link
Share on other sites

Hello Everyone.

I need help.

I do not know russian language . however, i understand your article and post with the google translator.

 

[Files]

 

 

;Source: "{app}\res_mods\configs\xvm\Aslain\battleLoading,3.xc"; DestDir: "{app}\res_mods\configs\xvm\Aslain"; DestName: "battleLoading.xc"; Check: "IsComponentNotSelected('am/addons/panels/BattleLoading')"; MinVersion: 0.0,5.0; Flags: ignoreversion

;Source: "{app}\res_mods\configs\xvm\Aslain\playersPanel,4.xc"; DestDir: "{app}\res_mods\configs\xvm\Aslain"; DestName: "playersPanel.xc"; Check: "IsComponentNotSelected('am/addons/panels/PlayersPanel')"; MinVersion: 0.0,5.0; Flags: ignoreversion

;Source: "{app}\res_mods\configs\xvm\Aslain\texts,3.xc"; DestDir: "{app}\res_mods\configs\xvm\Aslain"; DestName: "texts.xc"; Check: "IsComponentNotSelected('am/addons/panels/PlayersPanel')"; MinVersion: 0.0,5.0; Flags: ignoreversion

;Source: "{app}\res_mods\configs\xvm\Aslain\statisticForm,3.xc"; DestDir: "{app}\res_mods\configs\xvm\Aslain"; DestName: "statisticForm.xc"; Check: "IsComponentNotSelected('am/addons/panels/StatisticsTab')"; MinVersion: 0.0,5.0; Flags: ignoreversion

 

 

//=================================================================================================

 

This is File section in Aslain modpack. I wondered " IsComponentNotSelected() "

 

Maybe...

Any Component is not selected, shoud use default config(ex;battleloading,3.xc).

 

And.... How do i make this function or procedure?

Can Somebody help me?

 

Why not ask me? I have added special code to make IsComponentNotSelected available :)

Share this post


Link to post

Short link
Share on other sites

Как отключить показ стр компонентов но оставить компонент лист на другой стр?

Share this post


Link to post

Short link
Share on other sites

Dark_Knight_MiX, не добавлять ничего в секцию [Components]. Ваш КЭП.

Share this post


Link to post

Short link
Share on other sites

Dark_Knight_MiX, не добавлять ничего в секцию [Components]. Ваш КЭП.

А мне надо оставить эту секцию, но чтобы стр компонентов не было, а лист был

Share this post


Link to post

Short link
Share on other sites

А мне надо оставить эту секцию, но чтобы стр компонентов не было, а лист был

Для пропуска страницы ShouldSkipPage в помощь. А компонент листу просто поменять "родителя".

Share this post


Link to post

Short link
Share on other sites

Для пропуска страницы ShouldSkipPage в помощь. А компонент листу просто поменять "родителя".

спасиб

Share this post


Link to post

Short link
Share on other sites

Как сделать всплывающее подсказки для компонентов? 

Share this post


Link to post

Short link
Share on other sites

Как сделать всплывающее подсказки для компонентов? 

С хинтом там почти нет смысла играть. Способы, которые я видел, криво работают.

Можно через скрипт показа изображений сделать (на пустом изображении текст написать).

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

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

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