Jump to content
Korean Random

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


Recommended Posts

Без разницы где будешь компилить - всё равно на 8 и 8.1 будут глюки. Советую присмотреться к VCL Styles for Inno Setup

 

Благодарю! Спас от нервного срыва... Всё работает.   :no1:

 

Единственный замут что в скрипте указать надо версию Inno Setup (Ansi или Unicode). Строка:

 

procedure LoadVCLStyle(VClStyleFile: String); external 'LoadVCLStyleW@files:VclStylesInno.dll stdcall';      // Unicode

либо

procedure LoadVCLStyle(VClStyleFile: String); external 'LoadVCLStyleA@files:VclStylesInno.dll stdcall';       // Ansi

 

Благо есть альтернатива!   :ic: 

 

#define AW = (Defined UNICODE) ? "W" : "A"

 

procedure LoadVCLStyle(VClStyleFile: String); external 'LoadVCLStyle{#AW}@files:VclStylesinno.dll stdcall';

 

        :gawi:  :flag: 

Link to comment
Short link
Share on other sites

Вроде доделал. Объясняю как работает:

Через #include подключается файл, в котором описаны функции работы с файлами и папками. В частности тут это - MoveDir. Нужна версия Inno Setup с установленным препроцессором.

Страница создаётся после начальной. Выбираете действие и спокойно идете дальше по установке. Как только инсталлятор переходит на процесс установки (страница ssInstall) запускается чекер, который смотрит какой пункт был выбран и исходя из этого запускает нужную функцию на исполнение. В первом варианте удаляются папки 0.8.11 и xvm, потом создаётся пустая папка 0.8.11. Во втором варианте папки 0.8.11 и xvm переносятся в res_mods\backup. После создаётся пустая папка 0.8.11. Третий вариант создаётся как "заглушка", ничего не происходит при его выборе.

Если не нужны надписи вверху страницы (там где картинка), то оставляйте пустые кавычки в строке:

BackupPage:=CreateCustomPage(wpWelcome, '', '');
Тогда нужно будет ещё скрыть белый фон, на котором эти надписи отображаются. В InitializeWizard() добавьте:

WizardForm.PageNameLabel.Hide;
WizardForm.PageDescriptionLabel.Hide;
Поле этого страница будет выглядить примерно вот так:

7a11cfb9f052.png

В общем спрашивайте, если что-то не понятно. Вроде всё доступно написал.

 

Куда закидывать эти 2 файла в архиве или куда вставить?:(

Link to comment
Short link
Share on other sites

Умные люди будьте добры подскажите
Вот в справке есть пример и он работает

[Setup]
Uninstallable=not IsTaskSelected('portablemode')

[Tasks]
Name: portablemode; Описание:  "Portable Mode"

Но как вместо  [Tasks]  сделать через  TNewCheckBox  ? 

var
  UninstCheckBox: TCheckBox;

begin
  UninstCheckBox:=TNewCheckBox.Create(WizardForm);
  UninstCheckBox.Parent:=WizardForm.SelectComponentsPage;
  UninstCheckBox.Top:=ScaleY(52);
  UninstCheckBox.Left := ScaleX(10);
  UninstCheckBox.Width:=650;
  UninstCheckBox.Caption:='Создать деинсталлятор'
  UninstCheckBox.Checked:=False;
end;

Link to comment
Short link
Share on other sites

Умные люди будьте добры подскажите

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

[Setup]
Uninstallable=not IsTaskSelected('portablemode')

[Tasks]
Name: portablemode; Описание:  "Portable Mode"

Но как вместо  [Tasks]  сделать через  TNewCheckBox  ? 

var
  UninstCheckBox: TCheckBox;

begin
  UninstCheckBox:=TNewCheckBox.Create(WizardForm);
  UninstCheckBox.Parent:=WizardForm.SelectComponentsPage;
  UninstCheckBox.Top:=ScaleY(52);
  UninstCheckBox.Left := ScaleX(10);
  UninstCheckBox.Width:=650;
  UninstCheckBox.Caption:='Создать деинсталлятор'
  UninstCheckBox.Checked:=False;
end;

а это для чего? если не секрет 

Link to comment
Short link
Share on other sites

@-zav-,

[Setup]
Uninstallable=UninstallAbleCheck

[Code]
Var
 UninstCheckBox: TNewCheckBox;

Procedure InitializeWizard();
begin
 UninstCheckBox:=TNewCheckBox.Create(WizardForm);
 UninstCheckBox.Parent:=WizardForm.SelectComponentsPage;
 UninstCheckBox.Top:=ScaleY(52);
 UninstCheckBox.Left := ScaleX(10);
 UninstCheckBox.Width:=650;
 UninstCheckBox.Caption:='Создать деинсталлятор'
 UninstCheckBox.Checked:=False;
end;

Function UninstallAbleCheck(): Boolean;
begin
 Result := UninstCheckBox.Checked;
end;
Edited by Kotyarko_O
Link to comment
Short link
Share on other sites

а это для чего? если не секрет 

Дать возможность пользователю выбирать будет создаваться деинсталлятор или нет

 

 

,

Спасибо работает

Link to comment
Short link
Share on other sites

Не подскажите как убрать это сообщение ( интерполятор автоматом чистит содержимое res_mods)

attachicon.gif2015-02-17 02-57-24 Установленные компоненты.png

компоненту поставь 

Flags: disablenouninstallwarning;
Edited by ♫♫♫Dark_Knight_MiX♫♫♫
  • Upvote 1
Link to comment
Short link
Share on other sites

интерполятор

Не угадали.

 

нужно прописать на 6 стр кнопку

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

"странице" или "страницах"?

Edited by Kotyarko_O
Link to comment
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...