Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: batva
Дата сообщения: 20.05.2011 19:48

Inno Setup часть 14

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

Последние версии:
Inno Setup QuickStart Pack (ansi) 5.5.3 [30.01.2013]
Скачать (1.9 Mb)
Inno Setup QuickStart Pack (unicode) 5.5.3 [30.01.2013]
Скачать (2.2 Mb)
Что нового? | Все сборки
Русский язык для Inno Setup версии 5.5.x от vadimsva [02.06.2012]
Скачать
Русский язык для Inno IDE версии 1.0.0.0078 от vadimsva
Скачать |

Расширенная версия от китайских собратьев. Домашняя страница ResTools
Inno Setup Compiler 5.5.0-5.1 build 120808
Скачать (2.98 Mb) | Зеркало (2 Mb) - убраны картинки для уменьшения размера архива
[more=Что нового?]Данный раздел содержит список изменений за 2011 год в расширенной версии редактора от Restools. Т.к. оригинальная страница написана на китайском языке, то данный перевод был произведен с помощью веб ресурса translate.google.com
Русский текст не редактировался, так что он немного хромает. Но у кого есть время, то может помочь и привести его к более читабельному виду.

Build 110102
Различные изменения в визуальный дизайн "ошибки.

Build 110103
1. Внести изменения в различных визуальных BUG дизайна.
2. TTimer увеличения расширения визуального оформления контроля.
3. Для увеличения не-визуальных элементов управления для создания порядок корректировки.

Build 110116
1. Увеличение расширение визуальное оформление контроля TImageList.
2. Пересмотреть и скорректировать подсветкой синтаксиса некоторые из проблем. Кодекс подсветкой синтаксиса и увеличения строки раздел выставки {} # XXX особый колорит.
3. Исправлена копией UBB и HTML код автоматически определяет, является ли раздел кодекса код, чтобы скопировать только с Pas обработки цвета подсветки.
4. Исправлена визуальной обработки, будет какое-то время в визуальный интерфейс дизайн, частичное исчезновение ситуации.
5. Исправлена небольшая утечка памяти.
6. Исправлена всплывающего списка автозаполнения об ошибках.

Build 110123
1. Исправлено автоматическое Полный список алгоритм проблем.
2. Исправлены некоторые проблемы в визуальный дизайн.
3. Для повышения визуального дизайна управления TNewNotebook.

Build 110202
1. Для оригинальных управления WizardForm предоставляет методы для изменения родительского элемента управления.
2. Исправлены некоторые проблемы в визуальный дизайн.

Build 110208
1. Исправлена ошибка в скрипте мастера.
2. Исправлено визуальное оформление "изменения родительского элемента управления" в ошибке.
3. Увеличение визуальное оформление контроля блокировки для предотвращения переключения передач не осторожны.
4. Увеличение "TNewSpeedButton" визуальный дизайн.
5. Исправлены некоторые визуальное оформление контролировать события OnMouseEnter и OnMouseLeave просмотров.

Build 110209
1. Исправлены некоторые визуальные ошибки дизайна.
2. Добавить визуальное оформление зумом.
3. В версии Unicode, сценарий может заставить сохранить как UTF-8 кодировке.

Build 110213
Синхронизированы с 5.4.1 версии, потому что редактор был увеличением степени модификации с именем Compil32Ex.exe появляется, используйте копию с оригиналом, чтобы не закрыть использовании, поэтому пользователь может выбрать редактор использовать.

Build 110301
Правильное многих проблем в визуальном редакторе.

Build 110319
Синхронизация с 5.4.2 и некоторые незначительные поправки.

Build 120112
Синхронизация с 5.4.2, а также некоторые незначительные поправки.

Build 120808
Синхронизация с 5.5.1, и некоторые мелкие исправления ошибка, усиление поддержки управления собственностью является расширенной версией компилятора.[/more]
Inno ISCmplr Setup 5.5.1 build 120726
Скачать (1.73 Mb) | Зеркало (1.7 Mb)
[more=Что нового?]Данный раздел содержит список изменений за 2011 год в расширенной версии компилятора от Restools. Т.к. оригинальная страница написана на китайском языке, то данный перевод был произведен с помощью веб ресурса translate.google.com
Русский текст не редактировался, так что он немного хромает. Но у кого есть время, то может помочь и привести его к более читабельному виду.

build 110111 (5.4.0.e3 & 5.4.0.ee3)
1. ExtractTemporaryFile, ExtractTemporaryFileEx, ExtractTemporaryFileToStream, ExtractTemporaryFileToBuffer эти четыре функции для поддержки выпуска файла означает номер файла.
Например, имя файла цель с той же файл может быть использован в соответствии с порядковый номер сценария, такие как:
ExtractTemporaryFile ('logo.bmp: 1') таким образом, освободить конкретные примеры можно найти Example_ExtractTemporaryFile.iss.
2. MiniVCL версия TBitmap добавить следующие функции:
procedure LoadFromResourceName (Instance: THandle; const ResName: String);
procedure LoadFromResourceID (Instance: THandle; ResID: Integer);
3. FullVCL версия TNewIcon добавить следующие функции:
procedure LoadFromResourceName (Instance: THandle; const ResName: String);
procedure LoadFromResourceID (Instance: THandle; ResID: Integer);
4. MiniVCL версия TStrings добавить следующие функции:
procedure LoadFromStream (Stream: TStream);
procedure SaveToStream (Stream: TStream);
5. MiniVCL версия TForm увеличение собственности
property ModalResult: Longint; read write;
6. В разделе Setup добавились параметры BitmapResource, IconResource, RawDataResource, эти три свойства, в основном в программе установки, чтобы добавить файл ресурсов, так что удалить программу в маскировкой для изображений для обеспечения эффективного источника и возможные направления различных документальных источников, но и для поддержания обычная процедура в одном файле. Для примера можете видеть Example_BitmapResource.iss, Example_IconResource_1.iss, Example_IconResource_2.iss, Example_RawDataResource.iss
7. Является официальным возобновлении отказались параметров установки UninstallIconFile, как было установлено, для работы под Win9x не влияет на решение. В частности относятся к Example_UninstallIconFile.iss
Сделано копию дополнительный пример UninsHs, воплощает в себе влияние этих усовершенствований: Example_Uninstall_3.iss.

build 110206 (5.4.0.e4 & 5.4.0.ee4)
MiniVCL версия:
TLabel, TNewStaticText, TBitmapImage добавлено событие:
property OnMouseEnter: TNotifyEvent; read write;
property OnMouseLeave: TNotifyEvent; read write;
Полезность этих двух событий может ссылаться на примеры: Example_MouseEvent_ImgBtn.iss and Example_MouseEvent_URLLabel.iss
TButton increase procedure Click;
FullVCL версия:
В дополнение к обновленной версии Sync MiniVCL, многие другие элементы управления добавляются события, такие как TEdit, TButton имеют эти два события.
property OnMouseEnter: TNotifyEvent; read write;
property OnMouseLeave: TNotifyEvent; read write;
Конкретные примеры: Example_MouseEvent_HotEdit.iss
Он также добавил новые элементы управления TNewSpeedButton, примеры: Example_TNewSpeedButton_1.iss and Example_TNewSpeedButton_2.iss

build 110214 (5.4.1.e1 & 5.4.1.ee1)
Синхронизированы с 5.4.1 версии. Кроме того ряд поправок к контролю TNewSpeedButton проблемы.
Номер версии ISPP был отменен, так ISPP_Ver_Str константы были отменены.

build 110220 (5.4.1.e2 & 5.4.1.ee2)
ANSI версия:
(MiniVCL: Setup.e32 file size: 724 KB)
(FullVCL: Setup.e32 file size: 894 KB)
Unicode версия:
(MiniVCL: Setup.e32 File Size: 1164 KB)
(FullVCL: Setup.e32 File Size: 1450 KB)
1. Исправлены некоторые проблемы TNewSpeedButton управления.
2. Что касается Float Format функция ограничения, поэтому FormatFloat функции увеличения. Будет более сторон
Тип данных Float должен быть отформатирован для конкретных Example_FormatFloat.iss.
3.TNewCheckListbox добавить следующие функции:
procedure LoadBGBmpFromBitmap (Bmp: TBitmap; OffsetX, OffsetY: Integer);
procedure LoadBGBmpFromFile (FileName: String; OffsetX, OffsetY: Integer);
Вы можете добавлять фоновые изображения, так что весь процесс установки может быть унифицированный интерфейс фон, такой же, как на следующем рисунке (см. Example_NewCheckListBox.iss)
4.MinVCL версия TStrings добавить следующие функции:
procedure BeginUpdate;
procedure EndUpdate;

build 110326 (5.4.2.e1 & 5.4.2.ee1)
ANSI версия:
(MiniVCL: Setup.e32 file size: 725 KB)
(FullVCL: Setup.e32 file size: 894 KB)
Unicode версия:
(MiniVCL: Setup.e32 File Size: 1165 KB)
(FullVCL: Setup.e32 File Size: 1451 KB)
Синхронизирована с версией 5.4.2

build 110329 (5.4.2.e2 & 5.4.2.ee2)
Исправлена проблема языка, добавить Inno Setup событие:
function InitializeLanguageDialog (Languages: String; var LanguageIndex: Integer): Boolean;
Это диалог Язык раньше, чем появление установки Inno события.
Языки диалогового окна появятся в списке языков языков, LanguageIndex является язык будет выбран в случае, могут быть повторно назначены. Результат, если False, диалог Язык не появится.
[Setup] параметры ShowLanguageDialog все еще имеют приоритет над этим инцидентом, если ShowLanguageDialog установлен на нет, InitializeLanguageDialog не будет выполнен.

build 111225 (5.4.3.e1 & 5.4.3.ee1)
ANSI версия:
(MiniVCL: Setup.e32 Размер файла: 725 КБ)
(FullVCL: Setup.e32 Размер файла: 894 КБ)
Unicode версии:
(MiniVCL: Setup.e32 Размер файла: 1165 КБ)
(FullVCL: Setup.e32 Размер файла: 1451 КБ)
Синхронизированы с 5.4.3 версии.

build 120726 (5.5.1.e1 и 5.5.1.ee1)
ANSI версии:
(MiniVCL: Setup.e32 Размер файла: 731 КБ)
(FullVCL: Setup.e32 размер файла: 900 КБ)
Unicode версии:
(MiniVCL: Setup.e32 Размер файла: 1172 КБ)
(FullVCL: Setup.e32 Размер файла: 1458 КБ)
Синхронизируется с версией 5.5.1, но с той лишь разницей, что те же официальные менее Win2000 системы (например, Win98, WinNT, и т.д.) все еще ​​поддерживается.
Кроме того, новая поддержка:
1. Следующие свойства компонентов TTrackBar увеличение, в основном, для регулировки размера ползунка.
ThumbLength собственности: Integer; чтения и записи;
Изменить Inno Setup событий (в частности, см. Example_InitializeLanguageDialog.iss):
Функция InitializeLanguageDialog (Wnd: HWND; Языки: String; VAR LanguageIndex: Integer): Boolean;
Изменить основной язык диалоговое окно ручкой, он может искать его выше элементами управления, чтобы сделать соответствующие коррективы.
3, когда WizardForm.FormStyle: = fsStayOnTop, все соответствующие коррекции диалогового окна не закрывались WizardForm.
(В частности, относятся Example_StayOnTop.iss),
[/more]
Добавляет списку компонентов возможность сворачивать дочерние элементы. Содержит более удобный редактор, кроме того, компилятор имеет множество других возможностей и новых функций. На сайте автора также есть дополнительные библиотеки.
Русский язык для Inno Setup Enhanced (Restools) версии 5.4.x (ansi и unicode) от vadimsva
Скачать

Русская справка к версии 5.5.3, автор перевода BagIra, bugron | Chm-версия



[more=Документация, FAQ, и различные примеры для Inno Setup]

[b]Offline InnoSetup
0.1 - Архивы веток посвященных InnoSetup форума Ru-board. Автор SotM
Предлагаю вашему вниманию оффлайн версии (в формате CHM) веток форума Inno Setup с 1-ой по 11-ую часть.
Для формирования этих файлов я использовал самописную свою программу (она еще в глубокой разработке). Это пока первая альфа версия. Возможно вы найдете ошибки/недочеты внутри CHM.
Часть 1 (1.2 Mb)
Часть 2 (1.2 Mb)
Часть 3 (1.6 Mb)
Часть 4 (2.3 Mb)
Часть 5 (2.6 Mb)
Часть 6 (7.2 Mb)
Часть 7 (7.3 Mb)
Часть 8 (9.0 Mb)
Часть 9 (8.8 Mb)
Часть 10 (15.6 Mb)
Часть 11 (6.2 Mb)

Inno Setup Scripting 5.1 - Руководство по расширенным возможностям Inno Setup от Kindly
Скачать

Inno Setup Extensions Knowledge Base (содержит ответы на многие вопросы) | старая chm-версия

Коллекция скриптов и Сборник вопросов, собранных из этой и предыдущих частей топика от Victor_Dobrov.

Пост с различными скриптами - Собрание различных скриптов

Пост с различными скриптами #2 - Ответы на наиболее частые вопросы.

Сборник скриптов - Сборник скриптов от Krinkels в формате CHM. Версия 1.4 от 17.03.2011
Скачать (172 Kb) | Зеркало

Инструкция по Inno Setup - Инструкция по Inno Setup в формате PDF для начинающих от sjwrec.
Скачать (350 Kb) | Зеркало
[/more][/b] - Здесь можно найти различную документацию, примеры, архивы веток InnoSetup для оффлайн просмотра, и т.д.

[more=Дополнительные библиотеки для Inno Setup]

[b]bass.dll
2.4.7 [30.11.2010] - библиотека для воспроизведения звука.
Описание с офф. сайта:
Цитата:
BASS is an audio library for use in Windows and Mac OSX software. Its purpose is to provide developers with powerful and efficient sample, stream (MP3, MP2, MP1, OGG, WAV, AIFF, custom generated, and more via add-ons), MOD music (XM, IT, S3M, MOD, MTM, UMX), MO3 music (MP3/OGG compressed MODs), and recording functions. All in a tiny DLL, under 100KB in size.

Внимание! У новой bass.dll измененный API, и поэтому она не работает с существующими скриптами, которые писались под версию 2.3. Вашему вниманию предлагается новый скрипт для воспроизведения музыки, который работает с новой bass.dll.
Скачать bass.dll (740 Kb) | Зеркало (375 Kb)

InnoTools Downloader 0.3.5 [15.10.2008] от Sherlock Software
Это скрипт и DLL, которые позволяют вам скачивать файлы с HTTP или FTP из вашей инсталяционной программы.
Скачать (400 Kb) | Что нового?

isSlideShow v1.02 [16.05.2010] от ExpeditorR
Это dll для показа слайд-шоу с эффектами переходов в окне Inno Setup.
В новой версии добавлена возможность выбора эффекта перехода, возможно 12 вариантов (подробнее смотрите readme.rtf). В архиве имеются два примера использования, и подробное описание. isSlideShow.dll может работать в любой версии Windows.
Скачать (3.3 Mb) | | (список изменений)

isProgressBar v1.01 [04.07.2010] от ExpeditorR
Эта библиотека предназначена для отображения прогресс бара для длительных процессов, в которых невозможно показать прогресс бар.
В первую очередь, я думаю, она заинтересует тех, кто занимается репаками игр и использует precomp и другие программы.
Возможны 4 варианта анимации (см. пример в архиве). Так же прекрасно дружит с ISSkin. Дополнительная информация в файле readme.rtf в архиве.
Скачать (155 Kb) | Зеркало

isUtils.dll v1.00 [18.08.2010] от ExpeditorR
Библиотека для проверки системных требований. Ключевой особенностью isUtils.dll является то, что вы может написав всего пару-тройку строчек кода выводить всю информацию прямо в окно Inno Setup, при этом возможно использование любых цветов, размеров и шрифтов и всё это займёт всего 4-5 строк кода. Ну, и конечно же имеются функции для ручного вывода и проверки системных требований.
В архиве имеется файл Readme.rtf с подробным описанием всех функций, а так же два примера - автоматической и ручной проверки.
Скачать (474 Kb) | Зеркало

ISDone v0.5 final [31.12.2010] от Profrager
Библиотека, включающая в себя все необходимое для распаковки и подготовки файлов с помощью прекомпрессоров посредством инсталлятора InnoSetup, с равномерным отображением всех идущих операций на одном прогрессбаре. Поддерживаются arc, 7zip, rar, pcf, srep архивы. Так же реализован запрос на необходимость вставить следующий диск. На будущее планируется добавить некоторые необходимые функции, а так же возможность параллелизации операций на многоядерных системах.
Скачать (715 Kb) | Зеркало

is7z v1.01 [18.12.2008] от ExpeditorR
Библиотека для распаковки 7zip архивов с отображением прогресс бара в окне Inno Setup.
Скачать (283 Kb) | Зеркало

isPrecomp v0.7 [15.01.2010] от Vo1T
Библиотека для отображения процентов распаковки Precomp'a в Inno Setup.
Скачать (374 Kb) | Зеркало (300 Kb)

ISWin7 v0.5 [24.03.2011] от Vo1T
Это плагин позволит вам сделать прозрачными края или всё окно целиком.
Работает ТОЛЬКО в Windows 7 и в Windows 8. Проверенно на всех системах.
В Windows XP и Windows Vista он пропускает инициализацию что не мешает работоспособности сетапника в этих операционных системах.
- Введён режим включения выключения инициализации GDI+ (влияет на отображение выделения кнопки).
- Убрана кривая виндовая SetLayeredWindowAttributes.
Скачать (35 Kb) | Скриншот

botva2 v 0.9.5 [20.02.2011] от htuos
Библиотека для вставки изображений в инсталлятор (jpg, png, gif, tif, bmp). Присутствует возможность создания обычных кнопок и кнопок имеющих 8 состояний (как у чекбоксов), а также множество разнообразных функций и процедур для работы с изображениями. В архиве (1.2 Мб) dll + примеры использования.
Ахтунг! Не работает под win9x/me/2k.
Скачать (1.2 Mb) | Зеркало

ISFlash v 0.0.2 [17.03.2010] от Vo1T
Это плагин позволит вам добавить поддержку Adobe Flash (отображать swf файлы) в Inno Setup.
Скачать (442 Kb) | Зеркало (399 Kb)

Restools Plugins [01.04.2011] - Коллекция Restools-плагинов (17 штук) от Edison007007. В архиве dll + примеры использования.
Скачать (6 Mb)
В коллекцию вошли следующие плагины:

Цитата:
* Inno Callback v1.5
* Inno CallbackCtrl v1.1
* Inno Callnsis (AdvSplash)
* Inno CPUDesc v1.0
* Inno DescCtrl v1.0
* Inno ExecCtrl v1.1
* Inno Fairy v2.0
* Inno FireCtrl v1.0.0.1
* Inno GIFCtrl v2.1
* Inno Logo v1.5
* Inno MUI InstallShield
* Inno TimeCtrl v1.0
* Inno TrayIconCtrl v1.5
* Inno VPatch
* Inno WaterCtrl v2.0
* Inno WebCtrl v2.1
* Inno WinMsgCtrl v1.2


Коллекция DLL файлов для Inno Setup [06.09.2010] - Содержит коллекцию DLL файлов.
Скачать (1.7 Mb)
В коллекцию входят следующие файлы:

Цитата:
bass.dll
bassmidi.dll
BASSMOD.dll
CallNSIS2.dll
ESSvcControl.dll
FirewallInstallHelper.dll
GameuxInstallHelper.dll
get_hw_caps.dll
ImgGdiPlus.dll
InnoCallback.dll
is7z.dll
ISCrypt.dll
isgsg.dll
ISHint.dll
IsProgressBar.dll
ISSkin.dll
ISSkinU.dll
isSlideShow.dll
IssProc.dll
IssSurvey.dll
ISTask.dll
isxbb.dll
isxdl.dll
itdownload.dll
ittray.dll
psvince.dll
unarc.dll


Модуль распаковки архивов FreeArc от Bulat_Ziganshin | Тема FreeArc

ISFreeArcExtract v 4.1 [06.06.2011] от Shegorat
Расширенный скрипт распаковки архивов FreeArc.
Список изменений: Пакетная распаковка архивов
Сделана модульная система, модуль можно подключать к другим скриптам
Сделана отдельная секция для архивов
Добавлена возможность извлекать отдельные файлы из архива
Улучшена поддержка компонентов и задач
Добавлена поддержка facompress.dll
Почищен скрипт, вырезаны некоторые ненужные функции
Мелкие измененияСкачать | Зеркало | Обсуждение

Модули


STS v 1.0 от Shegorat [21.08.2010]
Модуль панели статуса для Inno Setup. Создает панель статуса в выбранном месте, для этого вам потребуется прописать всего несколько функций. Для отрисовки панели используется botva2.dll. Модуль пока только на русском языке. Readme как и в предыдущем модуле нет, но есть несколько примеров использования.
Скачать (28 Kb) | Зеркало

HWREQ v 1.11 от Shegorat [21.02.2011]
Модуль системных требований для Inno Setup. Создает страницу системных требований, при этом вам потребуется прописать всего несколько функций. В архиве есть несколько примеров использования. Описания функций нет, по примерам можно разобраться что к чему. Модуль пока только на русском языке.
Скачать (4 Kb) | Зеркало

BASS v 1.1 от Shegorat [12.01.2011]
Модуль для проигрывания музыки. Используется библиотека BASS.DLL. Инструкции нет, но через примеры можно понять что к чему.
Скачать (172 Kb) | Зеркало (162 Kb)
[/more][/b] - InnoTools Downloader, коллекция DLL файлов, распаковка архивов 7-zip и FreeArc и т.д.

[more=Дополнительные утилиты для Inno Setup]
[b]Inno Setup Form Designer

Можно создавать свои собственные страницы для Inno Setup с кнопочками, списками и т.д.
К сожалению, офф. сайт (http://isfd.kaju74.de) Inno Setup Form Designer более не доступен.
Найдена версия 2.0.8. Скачать можно со следующих ресурсов:
Скачать (1.46 Mb) | Зеркало (1.46 Mb)

ISTool

Мощная надстройка для Inno Setup, при помощи которой создавать свои инсталляторы становится очень просто.

Последний релиз: 5.3.0.1 [29.09.2009]
Скачать (1.2 Mb) | Русификатор (зеркало)

InnoIDE

Программа для создания инсталляционных пакетов с помощью Inno Setup. Имеет простой интерфейс и обладает всеми возможностями Inno Setup.

Последний релиз: 1.0.0.0078 [14.12.2010]
Скачать (1.83 Mb) | Русификатор

GameScript Generator

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

Inno Script Generator

Прежнее название ScriptMaker. Удобная оболочка для облегчения написания скриптов установки для Inno Setup. Обладает некоторыми полезными функциями.

Последний релиз: 1.0.3.1 [23.03.2008]
Скачать (3.8 Mb) | Зеркало | Зеркало на русифицированную программу
Замечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

Inno Setup Unpacker

Распаковщик инсталляторов, созданных с помощью Inno Setup, начиная с версии 2.0.18 по 5.5.0. Извлекает ресурсы и скрипт установки (без секции Code). К Total Commander или FAR подключается с помощью MultiArc плагинов.

Последний релиз: 0.38 (2013.02.01)
Скачать

InnoUnPacker

Еще один вариант распаковщика под названием InnoUnpacker. Здесь на форуме он уже пробегал, примерно в апреле 2008 г. Одна из возможностей этой программы заключается в том, что можно просмотреть содержание CompiledCode.bin в псевдоассемблерном виде.

Последний релиз: 2.6b3 от valeron87
Зеркало
Скорей всего автор больше не поддерживает данный продукт, по крайней мере можно просмотреть содержание архивов созданных в Inno Setup версии 5.2.4.

ISSkin

Программа для создания и добавления в инсталлятор кастомных скинов. Изменить можно практически любой элемент окна.
Инструкция по добавлению нужных кусков кода в скрипт (английский язык)
Инструкция по добавлению нужных кусков кода в скрипт (русский язык). Автор перевода bugron

Последний релиз: 3.0.0.0 [19.01.2010]
Скачать

Русификатор для SkinBuilder (ISSkinEx) 3.0.0.2 [29.09.2010] от vadimsva
Скачать

Converter REG to Inno Setup

Программа для конвертации reg-файлов в формат Inno Setup.
Поддерживаются все ключи реестра. Поддерживается удаление веток и параметров (записи вида [-ветка] и "параметр"=-).
В отличии от ISTool, ключи реестра, которые не поддерживаются в Inno Setup, записываются не как тип string, а записываются в секцию кода. Конвертируются в читаемый вид HEX данные ключей REG_EXPAND_SZ (expandsz) и REG_MULTI_SZ (multisz).

Последний релиз: 0.1.4 [12.03.2010] от Serega0675
Скачать (19 кб).

InnoSetup Script Joiner

Программа для объединения нескольких скриптов InnoSetup в один.

InqSoft Window Scanner v1.7

Программа для получения координат объектов окна инсталлера и изменения их на ходу. Позволяет например передвинуть кнопку
в инсталляторе на нужное Вам место и показывает эти координаты кнопки. Вы можете переписать их в скрипт и при перекомпиляции
кнопка в инсталлере будет на указанном Вами месте. Примечание: Не поддерживается перемещение объектов класса TLabel.

[/more][/b] - сюда входят различные распаковщики, надстройки над Inno Setup, различные генераторы скриптов, утилита объединения скриптов и т.д.

[more=Скрипты инсталляторов для игр]


[b]|
Скачать (зеркало) | Зеркало 2 | Скриншот | Описание | Старая версия || InnoSetup Upgrade || Слайд-шоу |
Обложка для Inno Setup. Сделает инсталлятор более симпатичным и добавляет расширения: Проверка минимальных требований. Расширенный прогрессбар. Расчёт времени до завершения распаковки. Список дисков. Слайдшоу или AVI-файл в фоновом окне. Компактный режим установки. Деинсталляция неучтённых файлов. Экран справки/скриншота. Медиаплеер и многое другое...


Need for Speed™ Undercover.iss v 2.4c [Final] от YURSHAT

| Скачать |
Вставка фоновых изображений (.jpg, .png ), встоенный AutoRun, текстурирование кнопок и прогрессБара, слайд-шоу во время установки, проверка минимальных системных требований, информация о выбранном жестком диске, проигрывание МР3 музыки, озвучка кнопок при наведении и нажатии, установка временного шрифта, распаковка архивов FreeArc, процент распаковки и оставшееся время до завершения установки, удаление игровых сохранений. Деинсталлятор также выполнен в стиле установщика (текстурированный прогрессБар, процент удаления и т.д.)
Добавлен модуль Components.iss. Но. В этом варианте нужно будет самому создавать кнопки (чекбоксы и радиобаттоны) и лебелы, которые нужны, а так же логику (на примере из модуля Components.iss). Просто взять и вставить значения, как в Inno (секция [Components]) не получиться . Нужно хорошо знать ботву.


Need for Speed™ Undercover.iss v 2.2 [Final] + ISDone от YURSHAT, Profrager, nik1967

| Скачать |
Добавлен Isdone. Блочная система. Изменению подверглись модули ISDone.iss (спасибо htuos-у за ум-разум) и Need for Speed™ Undercover.iss. Добавлен модный в последнее время двойной прогресс бар (при использовании ISDone). Заменена ISDone.dll на версию 0.4.2 (спасибо Profrager-у). Главный скрипт: Need for Speed™ Undercover.iss. Обязательные скрипты: PB.iss, Messages.iss, botva2.iss. По желанию: AutoRun.iss, FreeArc.iss, ISDone.iss. В создании участвовал K9000. Не совместим с предыдущей версией!


Xenus2+botva2+ISDone0.5 от nik1967

| Скачать |
Обновлён ISDone0.5final.
Добавлена страница дополнительных компонентов (если не нужна, можно отключить). Блочная система.
По просьбе alifais2000 сделал 2-х язычный установщик с выбором языка при старте(русский и английский). Исправил небольшие косяки в модулях FreeArc.iss, PB.iss.
Добавлен файл справки по ISDone, что бы было меньше вопросов.

За создание скрипта спасибо: YURSHAT, Profrager, htuos, Shegorat, K9000, Expeditor.
Отдельное спасибо Bulat_Ziganshin за его замечательный архиватор FreeArc.


StarCraft 2 от htuos
- Пример создания инсталятора как у StarCraft 2.
| Скачать (10,3 Mb) |


Two Worlds II+ISDone (0.5i) от Kosako


| Скачать |



Hitman - Blood Money v2.2 от troyan90

| Изменения | Скриншоты |
| Зеркало 1 (5.6 Мб) | Зеркало 2 |
Скачать предыдущие версии:
| v1.0 | v2.0 | v2.1 |
скрипт писал под себя. довольно симпотичный инсталлятор получился. пользуйтесь кому надо
p.s. работает скрипт только на расширенной версии Inno setup (a)


Renegade

Минималистичный инсталлятор для игры Renegade + ISDone.
Внимательно читаем шапку скрипта
| v1.0 | - Минимализм и строгость + ISDone
| v1.1 | - добавлены сплеш и деинсталлятор в стиле инсталлятора.
| v1.2 final | - Тройной сплеш и Месседж-бокс по окончании установки.




Скрипты инсталляторов для игр от Krinkels Team

Качественные скрипты инсталляторов для игр от Krinkels Team.[/more][/b] - В этом разделе можно найти различные обложки и скрипты инсталляторов для игр.

Скрипт для добавления ярлыков в Game Explorer (работает только в Windows 7)

Родственные темы:


Inno Setup плюс внешние упаковщики - обсуждение FreeArc+Inno, Precomp+Inno, 7zip+Inno и Inno+остальные внешние упаковщики.

Пережатиe/Pекомпрессия/Oптимизация файлов для лучшего сжатия - обсуждение того, какими утилитами/способами лучше сжимать, чтобы получить как можно меньший размер инсталятора.

Примечание для всех участников

[more=Правила топика посвященному Inno Setup]1. В этой теме обсуждаются только Inno Setup и скрипты для него.

2. Следующие вопросы являются оффтопиком и НЕ должны обсуждаться в этой ветке:
2.1. Что и чем лучше сжать.
2.2. Как использовать: winrar, 7-zip, FreeArc, srep, и т.д.
2.3. Как сделать репак игры YYYY.
2.4. Как запустить YYYY программу в режиме тихой установки.
2.5. Что нужно внести в реестр для YYYY игры/программы.
2.6. Объявления о купле и продаже скриптов (Кто хочет продать свой скрипт пускай лично обратится к предполагаемому покупателю через систему Личных Сообщений.)

3. Перед тем как задать вопрос, проделайте следующие шаги:
3.1. Просмотрите хелп в самом Inno
3.2. Скачайте документацию/примеры из шапки
3.3. Скачайте оффлайн версию форума
3.4. Подумайте над решением задачи сами
3.5. Если уже ничего не помогает, то задавайте вопрос на форуме.

4. Правила оформления поста:
4.1. В этом форуме необходимо писать по-русски. Если же пользователь из-за дальнего зарубежья, то он пишет по-английски.
4.2. Пишите по-русски без ошибок. На крайний случай сделайте проверку орфографии через сторонние программы, например Microsoft Word.
4.3. Если Вы хотите добавить картинку, то используйте сторонние ресурсы, которые могут предоставить ссылки на небольшие превьюшки (например, radikal.ru). Картинки, которые Вы размещаете на форуме, не должны быть в формате bmp, tiff, png, а должны быть в формате gif, jpg. Разрешение должно быть не более 640x480 и вес картинки не должен быть более 100 кб. Запомните, что не Все пользователи хотят смотреть кучу графики на одной странице, а некоторым это всё еще дорого.
4.4. Посты, повторяющиеся очень часто при одинаковом содержании, будут игнорироваться.
4.5. Посты, содержащие требования быстро исправить Ваш скрипт или написать Вам скрипт за спасибо, либо срочно дать код, будут игнорироваться.
4.6. Исходный текст скрипта обязательно заключайте в теги [no][code][/code][/no]. Большие тексты (более 10 строк) обязательно прячутся в [no][more][/no]ВАШ ТЕКСТ и/или Ваш КОД[no][/more][/no].
4.7. Если Ваш скрипт не работает, то полностью опишите проблему, когда она возникает, и очень желательно предоставить сам скрипт. Помните, что телепаты здесь отсутствуют, и никто не будет гадать что у Вас там не так.

Последняя редакция правил: 06.04.2011 by Rikill[/more]

Перед тем, как задать вопрос: Первый вариант: загрузите "версию для печати" (ссылка справа вверху, над номерами страниц) и попробуйте поискать средствами браузера (ctrl+F). Второй вариант: для экономии трафика и для более удобного поиска, скачайте оффлайн версию форума для просмотра в разделе Документация.
Большинство типовых задач уже решались, причем неоднократно!
Пожалуйста, не захламляйте тему и используйте поиск, этим вы избавите тему от флуда!
Автор: Gnom3
Дата сообщения: 20.05.2011 19:52
Vasario85 В скрипте скопируй секцию [Files] и покажи, я скажу тебе, как сделать, чтобы все нормально работало. Хотя, можно проще, найди у себя такой кусок:

Код: procedure CurStepChanged(CurStep: TSetupStep);
var Comps1,Comps2,Comps3, TmpValue:longword;
tmp:integer;
begin
if CurStep = ssInstall then begin //Если необходимо, можно поменять на ssPostInstall
Автор: broono
Дата сообщения: 20.05.2011 19:52
Новая часть флудилки ...
Автор: AntonOVS
Дата сообщения: 20.05.2011 20:56
Раз уж "новая", то повторюсь:
В скрипте ISDone написано:
[more]// примеры использования компонентов и всплывающего запроса следующего диска:

if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW2_Disk2.arc' ) then break;
if not ISArcExtract ( 1, 0, ExpandConstant('{src}\rustext.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ISArcExtract ( 2, 0, ExpandConstant('{src}\engtext.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ISArcExtract ( 3, 0, ExpandConstant('{src}\rusvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ISArcExtract ( 4, 0, ExpandConstant('{src}\engvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ShowChangeDiskWindow('Пожалуйста, вставьте первый диск и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW_2.arc' ) then break;[/more]
Читал справку к ISDone, ничего не понял насчет того, как сделать установку с запросом диска. У меня 8 архивов, первые (data1.bin data2.bin data3.bin data4.bin) надо чтобы были на одном диске, а файлы: data5.bin data6.bin data7.bin data8.bin на другом. То есть мне надо, чтобы из первых четырех архивов распаковались файлы, а потом запросили второй диск (на котором остальные архивы)
Вот мой скрипт, целиком:
[more];script by moonlight82
;original design & labels by Avengerz13

#define NeedSize "10800"
#define GUID "{B40FA060-71FD-44B2-9DF7-F34C80413725}"
#define NeedMem 512
#define appname "Fable 3"
#define exe "FableLauncher.exe"
#define icon "1.ico"


;#define records
;#define precomp04
#define precomp038
;#define unrar

[Setup]
AppName={#appname}
AppVerName={#appname}
DefaultDirName={pf}\{#appname}
DefaultGroupName={#appname}
OutputDir=.\
OutputBaseFilename=Setup
SolidCompression=yes
disablereadypage=true
SetupIconFile={#icon}


[Registry]
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{BB3B9A92-3C10-B7C2-C17D-368079DE73EB}"; ValueName: "ConfigInstallType"; ValueType: String; ValueData: "2"; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{BB3B9A92-3C10-B7C2-C17D-368079DE73EB}"; ValueName: "ConfigApplicationPath"; ValueType: String; ValueData: "{app}\"; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{BB3B9A92-3C10-B7C2-C17D-368079DE73EB}"; ValueName: "ConfigGDFBinaryPath"; ValueType: String; ValueData: "{app}\Fable3.dll"; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{BB3B9A92-3C10-B7C2-C17D-368079DE73EB}"; ValueName: "ApplicationId"; ValueType: String; ValueData: "{{078BAC47-0E49-4D3A-9F70-6F1A5A7F35ED}"; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{BB3B9A92-3C10-B7C2-C17D-368079DE73EB}"; ValueName: "GDFVersion"; ValueType: Dword; ValueData: "$2"; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{BB3B9A92-3C10-B7C2-C17D-368079DE73EB}"; ValueName: "AppExePath"; ValueType: String; ValueData: "{app}\FableLauncher.exe"; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{BB3B9A92-3C10-B7C2-C17D-368079DE73EB}"; ValueName: "Title"; ValueType: String; ValueData: "Fable III"; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{BB3B9A92-3C10-B7C2-C17D-368079DE73EB}"; ValueName: "RatingsInfo"; ValueType: String; ValueData: "<Ratings xmlns=""urn:schemas-microsoft-com:GameDescription.v1"""; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{BB3B9A92-3C10-B7C2-C17D-368079DE73EB}"; ValueName: "Type"; ValueType: Dword; ValueData: "$0"; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games\{{BB3B9A92-3C10-B7C2-C17D-368079DE73EB}"; ValueName: "IsSigned"; ValueType: Dword; ValueData: "$1"; Flags: uninsdeletevalue uninsdeletekeyifempty

[Icons]
Name: {group}\{#AppName}; Filename: {app}\{#exe}; WorkingDir: {app}; IconFilename: "{app}\{#exe}"; Comment: {#AppName}; Check: CheckError and GroupIcons
Name: {group}\Удалить игру; Filename: {uninstallexe}; WorkingDir: {app}\Uninstall\; Comment: Удалить игру {#AppName}; Check: CheckError and GroupIcons
Name: {commondesktop}\{#AppName}; Filename: {app}\{#exe}; WorkingDir: {app}; IconFilename: "{app}\{#exe}"; Comment: {#AppName}; Check: CheckError and CreateIcons
Name: {commondesktop}\Настройка графики Fable 3; Filename: "{app}\PCVideoOptionsApplet\PCVideoOptionsApplet.exe"; WorkingDir: "{app}\PCVideoOptionsApplet"; IconFilename: "{app}\PCVideoOptionsApplet\PCVideoOptionsApplet.exe"; Comment: {#AppName}; Check: CheckError and CreateIcons

[Run]
Filename: {src}\Redist\vcredist_x86.exe; WorkingDir: "{src}\Redist"; Parameters: "/q"; StatusMsg: Устанавливаем Microsoft Visual C++ Redist...; Flags: skipifdoesntexist; Check: InstallRedist and CheckError and not IsWin64
Filename: {src}\Redist\vcredist_x64.exe; WorkingDir: "{src}\Redist"; Parameters: "/q"; StatusMsg: Устанавливаем Microsoft Visual C++ Redist...; Flags: skipifdoesntexist; Check: InstallRedist and CheckError and IsWin64
Filename: {src}\Redist\dxwebsetup.exe; WorkingDir: "{src}\Redist"; StatusMsg: Обновляем DirectX...; Flags: skipifdoesntexist; Check: InstallDirectX and CheckError
Filename: {app}\Game For Windows Live\GFWLIVESetupStub.exe;

[Files]
Source: 1.bmp; DestDir: {tmp}; Flags: dontcopy nocompression
Source: 1.bmp; DestDir: {app}; Attribs: hidden system
Source: button.bmp; DestDir: {tmp}; Flags: dontcopy nocompression
Source: ISDone.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\facompress.dll; DestDir: {tmp}; Flags: dontcopy

#ifdef records
Source: records.inf; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef precomp04
Source: Include\packjpg_dll.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\RTconsole.exe; DestDir: {tmp}; Flags: dontcopy
Source: Include\precomp04.exe; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef precomp038
Source: Include\packjpg_dll.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\RTconsole.exe; DestDir: {tmp}; Flags: dontcopy
Source: Include\precomp038.exe; DestDir: {tmp}; Flags: dontcopy
Source: Include\zlib1.dll; DestDir: {tmp}; Flags: dontcopy
#endif
#ifdef unrar
Source: Include\Unrar.dll; DestDir: {tmp}; Flags: dontcopy
#endif

[CustomMessages]
rus.Welcome1=Вас приветствует Мастер установки игры %n {#appname}
rus.Welcome2=Программа установит {#appname} на Ваш компьютер.%n Рекомендуется закрыть все прочие приложения перед тем, как продолжить.%nНажмите «Далее», чтобы продолжить, или «Отмена», чтобы выйти из программы установки.
rus.Caption1=Выбор папки установки
rus.Caption2=В какую папку Вы хотите установить {#appname} ?%nНажмите «Далее», чтобы продолжить. Если Вы хотите выбрать другую папку, нажмите «Обзор». %n Программа установит {#appname} в следущую папку.
rus.Caption3=Выберите папку в меню «Пуск»
rus.Caption4=Где программа установки должна создать ярлыки? %n Программа создаст ярлыки в следующей папке меню «Пуск»
rus.Caption5=Нажмите «Далее», чтобы продолжить. Если Вы хотите выбрать другую папку, нажмите «Обзор».
rus.Caption6=Установка...
rus.Caption7=Распаковка файлов...
rus.Caption8=Пожалуйста, подождите пока {#appname} установится на Ваш компьютер.
rus.Caption10=Состояние деинсталляции
rus.Caption11=Деинсталляция{#appname} ...
rus.Finished1=Завершение Мастера установки %n{#appname}
rus.Finished2=Игра {#appname} установлена на Ваш компьютер. %nПриложение можно запустить с помощью соответствующего значка. %nНажмите «Завершить», чтобы выйти из программы установки.
rus.FreeSpace=Доступно места на диске:
rus.NeedSpace=Требуется места на диске:
rus.Icons=Создать ярлык на рабочем столе
rus.Group=Создать ярлыки в меню "Пуск"
rus.redist=Установить MS Visual C++ 2008
rus.DRT=Обновить DirectX
rus.UP=Идет обновление DirectX...
rus.ExtractedFile=Извлекается файл:
rus.Extracted=Распаковка архивов...
rus.CancelButton=Отмена
rus.Error=Ошибка распаковки!
rus.ElapsedTime=Прошло:
rus.RemainingTime=Осталось времени:
rus.EstimatedTime=Всего:
rus.AllElapsedTime=Время установки:
rus.Space=Доступно места на диске:
rus.Space1=Требуется места на диске:

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

[UninstallDelete]
Type: filesandordirs; Name: {app}

[Code]
const
PCFonFLY=true;
notPCFonFLY=false;

ButtonWidth = 80;
ButtonHeight = 23;

bidBack = 0;
bidNext = 1;
bidCancel = 2;
bidDirBrowse = 3;
bidGroupBrowse = 4;
bidbtnCancelUnpacking = 5;
var
LabelPct1,LabelCurrFileName: TLabel; //LabelTime1,LabelTime2,LabelTime3: TLabel;
ISDoneProgressBar1: TNewProgressBar;
MyCancelButton: TButton;
Cancel:integer;
MyError:boolean;
PCFVer:double;

ButtonPanel: array [0..5] of TPanel;
ButtonImage: array [0..5] of TBitmapImage;
ButtonLabel: array [0..5] of TLabel;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
NeedSize:Integer;
FreeMB, TotalMB: Cardinal;
SizeStr: String;
SizeInt: Integer;
SymbolNumber: Integer;

type
TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;

function WrapMyCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:ISDone.dll stdcall';

function ISArcExtract(CurComponent:longword; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: BOOL ):BOOL; external 'ISArcExtract@files:ISDone.dll stdcall';
function IS7ZipExtract(CurComponent:longword; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):BOOL; external 'IS7zipExtract@files:ISDone.dll stdcall';
function ISRarExtract(CurComponent:longword; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):BOOL; external 'ISRarExtract@files:ISDone.dll stdcall';
function ISPrecompExtract(CurComponent:longword; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):BOOL; external 'ISPrecompExtract@files:ISDone.dll stdcall';
function ISSRepExtract(CurComponent:longword; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):BOOL; external 'ISSrepExtract@files:ISDone.dll stdcall';
function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):BOOL; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall';
function ISDoneInitialize(RecordFileName:AnsiString; TimeType,Comp1,Comp2,Comp3:longword; PrecompVers: double; RecursiveSubDir:boolean; WinHandle, NeededMem:longint; callback:TCallback):BOOL; external 'ISDoneInitialize@files:ISDone.dll stdcall';
function ISDoneStop:BOOL; external 'ISDoneStop@files:ISDone.dll stdcall';

function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
begin
if OveralPct<=1000 then ISDoneProgressBar1.Position := OveralPct;
LabelPct1.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';
LabelCurrFileName.Caption:=MinimizePathName(ExpandConstant('{cm:ExtractedFile} ')+CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width);
Result := Cancel;
end;

Function NumToStr(Float: Extended): String;
Begin
Result:= Format('%.2n', [Float]); StringChange(Result, ',', '.');
while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do
SetLength(Result, Length(Result)-1);
End;

function GetSize(): Integer;
begin
SizeStr:= WizardForm.DiskSpaceLabel.Caption;
for SymbolNumber:= 97 to 122 do begin
while (Pos(Chr(SymbolNumber), SizeStr) > 0) do Delete(SizeStr, Pos(Chr(SymbolNumber), SizeStr),1); //Находим все символы нижнего регистра и удаляем
while (Pos(AnsiUppercase(Chr(SymbolNumber)), SizeStr) > 0) do Delete(SizeStr, Pos(AnsiUppercase(Chr(SymbolNumber)), SizeStr),1); end; //Находим все символы верхнего регистра и удаляем
for SymbolNumber:= 192 to 255 do begin
while (Pos(Chr(SymbolNumber), SizeStr) > 0) do Delete(SizeStr, Pos(Chr(SymbolNumber), SizeStr),1); end; //Находим все символы нижнего регистра и удаляем
while (Pos('.', SizeStr) > 0) do Delete(SizeStr, Pos('.', SizeStr), 1) //Удаляем точки
;Delete(SizeStr, Pos(',', SizeStr), 5) //Удаляем дробную часть
Result:= StrToInt(Trim(SizeStr)); //Переводим в число
end;

function CompareNum(FirstNum, SecondNum: Integer): Boolean;
begin
if FirstNum < SecondNum then Result:= False else Result:= True;
end;

Function MbOrTb(Byte: Extended): String;
begin
if Byte < 1024 then Result:= NumToStr(Byte) + ' Мб' else
if Byte/1024 < 1024 then Result:= NumToStr(round(Byte/1024*100)/100) + ' Гб' else
Result:= NumToStr(round((Byte/(1024*1024))*100)/100) + ' Тб'
end;

function BackButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
if CurPageID = wpSelectDir then
ButtonPanel[bidNext].Enabled := True;
end;

procedure ButtonLabelClick(Sender: TObject);
var
Button: TButton;
begin
ButtonImage[TLabel(Sender).Tag].Left := 0;
case TLabel(Sender).Tag of
bidBack: Button := WizardForm.BackButton;
bidNext: Button := WizardForm.NextButton;
bidCancel: Button := WizardForm.CancelButton;
bidDirBrowse: Button := WizardForm.DirBrowseButton;
bidGroupBrowse: Button := WizardForm.GroupBrowseButton;
bidbtnCancelUnpacking: Button := MyCancelButton;
else
Exit
end
if Button.Enabled then Button.OnClick(Button);
end;

procedure ButtonLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ButtonLabel[TLabel(Sender).Tag].Enabled then
ButtonImage[TLabel(Sender).Tag].Left := -ScaleX(ButtonWidth);
end;

procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ButtonImage[TLabel(Sender).Tag].Left := 0;
end;

procedure LoadButtonImage(AButton: TButton; AButtonIndex: integer);
var
Image: TBitmapImage;
Panel: TPanel;
Labl: TLabel;

begin
Panel := TPanel.Create(WizardForm);
Panel.Left := AButton.Left;
Panel.Top := AButton.Top;
Panel.Width := AButton.Width;
Panel.Height := AButton.Height;
Panel.Tag := AButtonIndex;
Panel.Parent := AButton.Parent;
ButtonPanel[AButtonIndex] := Panel;

Image := TBitmapImage.Create(WizardForm);
Image.Width := ScaleX(160);
Image.Height := ScaleY(23);
Image.Enabled := False;
Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}\button.bmp'));
Image.Stretch := True;
Image.Parent := Panel;
ButtonImage[AButtonIndex] := Image;

with TLabel.Create(WizardForm) do begin
Tag := AButtonIndex;
Parent := Panel;
Width := Panel.Width;
Height := Panel.Height;
Transparent := True;
OnClick := @ButtonLabelClick;
OnDblClick := @ButtonLabelClick;
OnMouseDown := @ButtonLabelMouseDown;
OnMouseUp := @ButtonLabelMouseUp;
end;

Labl := TLabel.Create(WizardForm);
Labl.Autosize := True;
Labl.Alignment := taCenter;
Labl.Tag := AButtonIndex;
Labl.Transparent := True;
Labl.Font.Color := clWhite;
Labl.Caption := AButton.Caption;
Labl.OnClick := @ButtonLabelClick;
Labl.OnDblClick := @ButtonLabelClick;
Labl.OnMouseDown := @ButtonLabelMouseDown;
Labl.OnMouseUp := @ButtonLabelMouseUp;
Labl.Parent := Panel;
ButtonLabel[AButtonIndex] := Labl;
end;

procedure UpdateButton(AButton: TButton;AButtonIndex: integer);
begin
ButtonLabel[AButtonIndex].Caption := AButton.Caption;
ButtonPanel[AButtonIndex].Visible := AButton.Visible;
ButtonLabel[AButtonIndex].Enabled := Abutton.Enabled;
ButtonLabel[AButtonIndex].Left := ButtonPanel[AButtonIndex].Width div 2 - ButtonLabel[AButtonIndex].Width div 2;
ButtonLabel[AButtonIndex].Top := ButtonPanel[AButtonIndex].Height div 2 - ButtonLabel[AButtonIndex].Height div 2;
end;

procedure ButtonsTextures;
begin
WizardForm.BackButton.Left:=ScaleX(322)
WizardForm.BackButton.Top:=ScaleY(375)
WizardForm.BackButton.Width:=ButtonWidth
WizardForm.BackButton.Height:=ButtonHeight

WizardForm.NextButton.Left:=ScaleX(407)
WizardForm.NextButton.Top:=ScaleY(375)
WizardForm.NextButton.Width:=ButtonWidth
WizardForm.NextButton.Height:=ButtonHeight

WizardForm.CancelButton.Left:=ScaleX(492)
WizardForm.CancelButton.Top:=ScaleY(375)
WizardForm.CancelButton.Width:=ButtonWidth
WizardForm.CancelButton.Height:=ButtonHeight

WizardForm.DirBrowseButton.Left:=ScaleX(420)
WizardForm.DirBrowseButton.Top:=ScaleY(170)
WizardForm.DirBrowseButton.Width:=ButtonWidth
WizardForm.DirBrowseButton.Height:=ButtonHeight

WizardForm.GroupBrowseButton.Left:=ScaleX(420)
WizardForm.GroupBrowseButton.Top:=ScaleY(170)
WizardForm.GroupBrowseButton.Width:=ButtonWidth
WizardForm.GroupBrowseButton.Height:=ButtonHeight

ExtractTemporaryFile('button.bmp')
LoadButtonImage(WizardForm.BackButton,bidBack)
LoadButtonImage(WizardForm.NextButton,bidNext)
LoadButtonImage(WizardForm.CancelButton,bidCancel)
LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse)
LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse)
//Сначала текстурируются кнопки, затем выполняется процедура которую мы перенесли
end;

procedure GetFreeSpaceCaption(Sender: TObject);
var Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
FreeSpaceLabel.Caption:= ExpandConstant('{cm:FreeSpace} ') + MbOrTb(FreeMB)
NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSpace} ') + MbOrTb(SizeInt)
if WizardForm.CurPageID = wpSelectDir then begin
WizardForm.NextButton.Enabled:= CompareNum(FreeMB, SizeInt)
UpdateButton(WizardForm.NextButton, bidNext)
end;
end;

procedure CancelButtonOnClick(Sender: TObject);
begin
if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then Cancel:=1;
end;

procedure HideComponents;
begin
WizardForm.FileNamelabel.Hide;
ISDoneProgressBar1.Hide;
LabelPct1.Hide;
LabelCurrFileName.Hide;
MyCancelButton.Hide;
end;

procedure ShowComponents;
var PBTop:integer;
begin
PBTop:=ScaleY(160);
ISDoneProgressBar1 := TNewProgressBar.Create(WizardForm);
with ISDoneProgressBar1 do begin
Parent := WizardForm.InstallingPage;
Height := WizardForm.ProgressGauge.Height;
Left := ScaleX(90);
Top := PBTop;
Width := ScaleX(400);
Max := 1000;
end;
LabelPct1 := TLabel.Create(WizardForm);
with LabelPct1 do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Left := ScaleX(272);
Top := ScaleY(143);
Width := ScaleX(160);
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
end;
LabelCurrFileName := TLabel.Create(WizardForm);
with LabelCurrFileName do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := ISDoneProgressBar1.Width+ScaleX(30);
Left := ScaleX(90);
Top := ScaleY(190);
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
end;

MyCancelButton:=TButton.Create(WizardForm);
with MyCancelButton do begin
Parent:=WizardForm.InstallingPage;
Width:=ScaleX(80);
Height:=ScaleY(23);
Caption:=ExpandConstant('{cm:CancelButton}');
Left:=ScaleX(405);
Top:=WizardForm.cancelbutton.top;
OnClick:=@CancelButtonOnClick;
end;
end;

Procedure CurPageChanged(CurPageID: Integer);
Begin
if CurPageID = wpSelectProgramGroup then begin
WizardForm.NextButton.Caption:= 'Установить';
end;
UpdateButton(WizardForm.BackButton,bidBack)
UpdateButton(WizardForm.NextButton,bidNext)
UpdateButton(WizardForm.CancelButton,bidCancel)
UpdateButton(WizardForm.DirBrowseButton,bidDirBrowse)
UpdateButton(WizardForm.GroupBrowseButton,bidGroupBrowse)
if (CurPageID = wpFinished) and MyError then
begin
WizardForm.Caption:= ExpandConstant('{cm:Error}');
WizardForm.FinishedLabel.Font.Color:= clRed;
WizardForm.FinishedLabel.Caption:= SetupMessage(msgSetupAborted) ;
end;
if CurPageID = wpSelectDir then begin
GetFreeSpaceCaption(nil)
end;
end;

function CheckError:boolean;
begin
result:= not MyError;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var Comps1,Comps2,Comps3, TmpValue:longword;
tmp:integer;
begin
if CurStep = ssInstall then begin //Если необходимо, можно поменять на ssPostInstall
WizardForm.ProgressGauge.Hide;
WizardForm.CancelButton.Hide;
ShowComponents;
LoadButtonImage(MyCancelButton, bidbtnCancelUnpacking)
UpdateButton(MyCancelButton, bidbtnCancelUnpacking);
UpdateButton(WizardForm.CancelButton, bidCancel);
WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}');
Cancel:=0;

// Распаковка всех необходимых файлов в папку {tmp}.

ExtractTemporaryFile('facompress.dll'); //ускоряет распаковку .arc архивов.

#ifdef records
ExtractTemporaryFile('records.inf');
#endif
#ifdef precomp04
ExtractTemporaryFile('packjpg_dll.dll');
ExtractTemporaryFile('RTconsole.exe');
ExtractTemporaryFile('precomp04.exe');
#endif
#ifdef precomp038
ExtractTemporaryFile('packjpg_dll.dll');
ExtractTemporaryFile('RTconsole.exe');
ExtractTemporaryFile('precomp038.exe');
ExtractTemporaryFile('zlib1.dll');
#endif
#ifdef unrar
ExtractTemporaryFile('Unrar.dll');
#endif

// Подготавливаем переменную, содержащую всю информацию о выделенных компонентах для ISDone.dll
// максимум 96 компонентов.
Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
TmpValue:=1;
if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue; //компонент 1
TmpValue:=TmpValue*2;
if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue; //компонент 2
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue; //компонент 3
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue; //компонент 4
// .....
#endif

#ifdef precomp04
PCFVer:=0.4;
#else
#ifdef precomp038
PCFVer:=0.38;
#else
PCFVer:=0;
#endif
#endif
repeat
MyError:=true;
if not ISDoneInitialize(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, PCFVer, false, MainForm.Handle, {#NeedMem}, @ProgressCallback) then break;
repeat

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data1.bin'), ExpandConstant('{app}\data\'), false, '', '', '', notPCFonFLY ) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data\data1.srep'), ExpandConstant('{app}\data\data1.pcf'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data\data1.pcf'), ExpandConstant('{app}\data\levels.bnk.dat'), true ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data2.bin'), ExpandConstant('{app}\data\'), false, '', '', '', notPCFonFLY ) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data\data2.srep'), ExpandConstant('{app}\data\data2.pcf'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data\data2.pcf'), ExpandConstant('{app}\data\streaming.bnk.dat'), true ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data3.bin'), ExpandConstant('{app}\data\audio\'), false, '', '', '', notPCFonFLY ) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data\audio\data3.srep'), ExpandConstant('{app}\data\audio\data3.pcf'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data\audio\data3.pcf'), ExpandConstant('{app}\data\audio\data3.7z'), true ) then break;
if not IS7ZipExtract ( 0, 0, ExpandConstant('{app}\data\audio\data3.7z'), ExpandConstant('{app}\data\audio\'), true, '' ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data4.bin'), ExpandConstant('{app}\data\globals\'), false, '', '', '', notPCFonFLY ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data5.bin'), ExpandConstant('{app}\data\language\'), false, '', '', '', notPCFonFLY ) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data\language\data5.srep'), ExpandConstant('{app}\data\language\data5.pcf'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data\language\data5.pcf'), ExpandConstant('{app}\data\language\data5.7z'), true ) then break;
if not IS7ZipExtract ( 0, 0, ExpandConstant('{app}\data\language\data5.7z'), ExpandConstant('{app}\data\language\'), true, '' ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data6.bin'), ExpandConstant('{app}\data\art\'), false, '', '', '', notPCFonFLY ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data7.bin'), ExpandConstant('{app}\data\'), false, '', '', '', notPCFonFLY ) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data\data7.srep'), ExpandConstant('{app}\data\data7.pcf'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data\data7.pcf'), ExpandConstant('{app}\data\audio_lod.bnk.dat'), true ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data8.bin'), ExpandConstant('{app}\'), false, '', '', '', notPCFonFLY ) then break;

// далее находятся закомментированые примеры различных комбинаций параметров и функций распаковки
(*
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Spider.arc'), ExpandConstant('{app}'), false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\*.srep'),ExpandConstant('{app}\data1024.arc'), true ) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{app}\data1024.arc'), ExpandConstant('{app}'), true, '', '', ExpandConstant('{app}'), notPCFonFLY) then break;

if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\data64.7z'), ExpandConstant('{app}'), false, '' ) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data64a.srep'),ExpandConstant('{app}\data64.arc'), true ) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{app}\data64.arc'), ExpandConstant('{app}\'), true, '', '', '',notPCFonFLY ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data.pcf'), ExpandConstant('{app}\data.7z'), true ) then break;
if not IS7ZipExtract ( 0, 0, ExpandConstant('{app}\data.7z'), ExpandConstant('{app}\'), true, '' ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\CODMW_2.arc'), ExpandConstant('{app}\data1'), false, '', '', '', notPCFonFLY ) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data1\CODMW2.srep'), ExpandConstant('{app}\data1\CODMW2.pcf'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data1\CODMW2.pcf'), ExpandConstant('{app}\data1\CODMW2.7z'), true ) then break;
if not IS7ZipExtract ( 0, 0, ExpandConstant('{app}\data1\CODMW2.7z'), ExpandConstant('{app}\data1'), true, '' ) then break;

// примеры использования компонентов и всплывающего запроса следующего диска:

if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW2_Disk2.arc' ) then break;
if not ISArcExtract ( 1, 0, ExpandConstant('{src}\rustext.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ISArcExtract ( 2, 0, ExpandConstant('{src}\engtext.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ISArcExtract ( 3, 0, ExpandConstant('{src}\rusvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ISArcExtract ( 4, 0, ExpandConstant('{src}\engvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break;
if not ShowChangeDiskWindow('Пожалуйста, вставьте первый диск и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW_2.arc' ) then break;

// просто различные комбинации параметров в функциях распаковки

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\sds_ru2.arc'), ExpandConstant('{app}\data1'), false, '', '', ExpandConstant('{app}\data1'), PCFonFLY) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\sds_ru.arc'), ExpandConstant('{app}\data1'), false, '', '', ExpandConstant('{app}\data1'), PCFonFLY) then break;

if not ISPrecompExtract( 0, 0, ExpandConstant('{src}\data1\*.pcf'), ExpandConstant('{src}\data1'), false) then break;
if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\data1\sds_ru.7z'), ExpandConstant('{src}\data1'), true, '') then break;

if not ISRarExtract ( 0, 0, ExpandConstant('{src}\data_*.rar'), ExpandConstant('{app}'), false, '' ) then break;
if not ISRarExtract ( 0, 0, ExpandConstant('{src}\*part1.rar'), ExpandConstant('{app}'), false, 'Password' ) then break;

if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\data*.7z'), ExpandConstant('{app}\data1'), false, '' ) then break;
if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\sound.7z'), ExpandConstant('{app}\data1'), false, '' ) then break;

if not ISArcExtract ( 0, 33, ExpandConstant('{src}\dataR.arc'), ExpandConstant('{app}\data1'), false, '', '', '',notPCFonFLY) then break;
if not ISArcExtract ( 0, 33, ExpandConstant('{src}\CODMW_*.arc'), ExpandConstant('{app}\data1'), false, '', '', '',notPCFonFLY) then break;
if not ISArcExtract ( 0, 34, ExpandConstant('{src}\dataR.arc'), ExpandConstant('{app}\data1\'), false, '', '', '',notPCFonFLY) then break;

if not ISPrecompExtract( 0, 0, ExpandConstant('{src}\*.pcf'), ExpandConstant('{app}\data1'), false) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{src}\data0.pcf'), ExpandConstant('{app}\data1'), false) then break;

if not ISSRepExtract ( 0, 0, ExpandConstant('{src}\*.srep'), ExpandConstant('{app}\data1\'), false) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{src}\data02.srep'), ExpandConstant('{app}\data1\data.pcf'), false) then break;
*)
MyError:=false;
until true;
ISDoneStop;
until true;
HideComponents;
WizardForm.CancelButton.Visible:=true;
WizardForm.CancelButton.Enabled:=false;
UpdateButton(MyCancelButton, bidbtnCancelUnpacking);
UpdateButton(WizardForm.CancelButton, bidCancel);
end;
if (CurStep=ssPostInstall) and MyError then begin
Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, tmp);
end;
end;


Procedure InitializeWizard1();
begin
WizardForm.DiskSpaceLabel.Hide;
#ifdef NeedSize
SizeInt:= {#NeedSize}
#else
SizeInt:= GetSize;
#endif
ButtonsTextures;
end;

/////Наложение картинки на страницы инсталла
var
WelcomeLabel1, WelcomeLabel2, FinishedLabel, FinishedHeadingLabel: TLabel;
SelectDirLabel, SelectDirLabelBrowse, Label1, Label2, Label3: TLabel;
lblDirectX, lblRedist, lblGroup, lblIcons, SelectStartMenuFolderLabel, SelectStartMenuFolderBrowseLabel, Parentlabel1: Tlabel;
BmpFile: TBitmapImage;
DirectX, Redist: TCheckBox;
Icons, Group: TCheckBox;

function InstallDirectX: Boolean;
begin
Result:= DirectX.Checked;
end;

function InstallRedist: Boolean;
begin
Result:=Redist.Checked;
end;

function CreateIcons: Boolean;
begin
Result:=Icons.Checked;
end;

function GroupIcons: Boolean;
begin
Result:=Group.Checked;
end;

// задал процедуру, чтоб отмечался чебокс еси кликнуть по надписи lblCheckBox
procedure RedistOnClick(Sender: TObject);
begin
if Redist.Checked = False then
Redist.Checked:= True else
Redist.Checked:= False;
end;

procedure DirectXOnClick(Sender: TObject);
begin
if DirectX.Checked = False then
DirectX.Checked:= True else
DirectX.Checked:= False;
end;

procedure IconsOnClick(Sender: TObject);
begin
if Icons.Checked = False then
Icons.Checked:= True else
Icons.Checked:= False;
end;

procedure StartMenuIconOnClick(Sender: TObject);
begin
if Group.Checked = False then
Group.Checked:= True else
Group.Checked:= False;
end;

procedure GroupOnClickIcon(Sender: TObject);
begin
if Group.Checked = False then
begin
wizardform.GroupEdit.enabled:= false;
wizardform.GroupBrowseButton.enabled:= false;
end
else
begin
wizardform.GroupEdit.enabled:= true;
wizardform.GroupBrowseButton.enabled:= true;
end;
end;

procedure InitializeWizard2();
begin
ExtractTemporaryFile('1.bmp'); //Извлекаем файл, который пойдет в окно инсталлятора
//Вставляем изображение в окно инсталлятора, для каждой страницы нужно добвлять изображение заново
BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 592, 412);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.WelcomePage;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 592, 412);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.SelectDirPage;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 592, 412);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.SelectComponentsPage;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 592, 412);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.SelectProgramGroupPage;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 592, 412);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.InstallingPage;


BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 592, 412);
BmpFile.Stretch:= true
BmpFile.Parent:= WizardForm.FinishedPage;
/////Наложение картинки на страницы инсталла

DirectX:= TCheckBox.Create(WizardForm);
with DirectX do
begin
Parent:= WizardForm.SelectDirPage;
Left:= ScaleX(80);
Top:= ScaleY(200);
Width:= ScaleX(13);
Height:= ScaleY(13);
Checked:= True;
end;

lblDirectX:= TLabel.Create(WizardForm);
with lblDirectX do
begin
Caption:= ExpandConstant('{cm:drt}');
Left:= ScaleX(100);
Top:= ScaleY(200);
Width:= ScaleX(150);
Height:= ScaleY(13);
Transparent := True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Parent:= WizardForm.SelectDirPage;
OnClick:= @DirectXOnClick;
end;

Redist:= TCheckBox.Create(WizardForm);
with Redist do
begin
Parent:= WizardForm.SelectDirPage;
Left:= ScaleX(80);
Top:= ScaleY(220);
Width:= ScaleX(13);
Height:= ScaleY(13);
Checked:= True;
end;

lblRedist:= TLabel.Create(WizardForm);
with lblRedist do
begin
Caption:= ExpandConstant('{cm:redist}');
Left:= ScaleX(100);
Top:= ScaleY(220);
Width:= ScaleX(150);
Height:= ScaleY(13);
Transparent := True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Parent:= WizardForm.SelectDirPage;
OnClick:= @RedistOnClick;
end;

Icons:= TCheckBox.Create(WizardForm);
with Icons do
begin
Parent:= WizardForm.SelectDirPage;
Left:= ScaleX(280);
Top:= ScaleY(200)
Width:= ScaleX(13);
Height:= ScaleY(13);
Checked:= True;
end;

lblIcons:= TLabel.Create(WizardForm);
with lblIcons do
begin
Caption:= ExpandConstant('{cm:icons}');
Left:= ScaleX(300);
Top:= ScaleY(200)
Width:= ScaleX(150);
Height:= ScaleY(13);
Transparent := True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Parent:= WizardForm.SelectDirPage;
OnClick:= @IconsOnClick;
end;

Group:= TCheckBox.Create(WizardForm);
with Group do
begin
Parent:= WizardForm.SelectDirPage;
Left:= ScaleX(280);
Top:= ScaleY(220)
Width:= ScaleX(13);
Height:= ScaleY(13);
Checked:= True;
OnClick:= @GroupOnClickIcon;
end;

lblGroup:= TLabel.Create(WizardForm);
with lblGroup do
begin
Caption:= ExpandConstant('{cm:group}');
Left:= ScaleX(300);
Top:= ScaleY(220)
Width:= ScaleX(150);
Height:= ScaleY(13);
Transparent := True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Parent:= WizardForm.SelectDirPage;
OnClick:= @StartMenuIconOnClick;
end;

with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
WelcomeLabel1.Hide;
WelcomeLabel2.Hide;
SelectDirBitmapImage.Hide;
SelectDirBrowseLabel.Hide;
SelectDirLabel.Hide;
FinishedHeadingLabel.Hide;
FinishedLabel.Hide;
MainPanel.Hide
FilenameLabel.Hide;
StatusLabel.Hide;
SelectStartMenuFolderLabel.Hide;
SelectStartMenuFolderBrowseLabel.Hide;
ReadyLabel.Hide;
LicenseLabel1.Hide;
InfoBeforeClickLabel.Hide;
InfoAfterClickLabel.Hide;
ComponentsDiskSpaceLabel.Hide;
SelectComponentsLabel.Hide;
/////////////////
ClientHeight := ScaleY(412);
ClientWidth := ScaleX(592);
InnerNotebook.Left:= ScaleX(0);
InnerNotebook.Top:= ScaleY(0);
InnerNotebook.Width:= ScaleX(592);
InnerNotebook.Height:= ScaleY(412);
OuterNotebook.Left:= ScaleX(0);
OuterNotebook.Top:= ScaleY(0);
OuterNotebook.Width:= ScaleX(592);
OuterNotebook.Height:= ScaleY(412);
DirEdit.Left:= ScaleX(80);
DirEdit.Top:= ScaleY(170);
GroupEdit.Left:= ScaleX(80);
GroupEdit.Top:= ScaleY(170);
end;
//WelcomePage, создаем надписи на странице
WelcomeLabel1:= TLabel.Create(WizardForm);
with WelcomeLabel1 do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(140), ScaleX(550), ScaleY(70));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 12;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold];
Caption:= ExpandConstant('{cm:Welcome1}');
Parent:=WizardForm.WelcomePage;
end;

WelcomeLabel2:= TLabel.Create(WizardForm);
with WelcomeLabel2 do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(190), ScaleX(550), ScaleY(100));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Caption:= ExpandConstant('{cm:Welcome2}');
Parent:=WizardForm.WelcomePage;
end;
//WelcomePage

//SelectDirPage
SelectDirLabel:= TLabel.Create(WizardForm);
with SelectDirLabel do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(90), ScaleX(550), ScaleY(70));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 12;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold];
Caption:= ExpandConstant('{cm:caption1}');
Parent:=WizardForm.SelectDirPage;
end;

SelectDirLabelBrowse:= TLabel.Create(WizardForm);
with SelectDirLabelBrowse do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(120), ScaleX(550), ScaleY(70));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Caption:= ExpandConstant('{cm:caption2}');
Parent:=WizardForm.SelectDirPage;
end;

NeedSpaceLabel:= TLabel.Create(WizardForm);
with NeedSpaceLabel do begin
AutoSize:=False;
SetBounds(ScaleX(-167), ScaleY(320), ScaleX(550), ScaleY(70));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Caption:= ExpandConstant('{cm:needspace}');
Parent:=WizardForm.SelectDirPage;
end;

FreeSpaceLabel:= TLabel.Create(WizardForm);
with FreeSpaceLabel do begin
AutoSize:=False;
SetBounds(ScaleX(-168), ScaleY(335), ScaleX(550), ScaleY(70));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Caption:= ExpandConstant('{cm:freespace}');
Parent:=WizardForm.SelectDirPage;
end;

WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption;
WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0;
//SelectDirPage

//SelectProgramGroupPage
SelectStartMenuFolderLabel:= TLabel.Create(WizardForm);
with SelectStartMenuFolderLabel do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(110), ScaleX(550), ScaleY(70));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 12;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold];
Caption:= ExpandConstant('{cm:caption3}');
Parent:=WizardForm.SelectProgramGroupPage;
end;

SelectStartMenuFolderBrowseLabel:= TLabel.Create(WizardForm);
with SelectStartMenuFolderBrowseLabel do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(130), ScaleX(550), ScaleY(100));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Caption:= ExpandConstant('{cm:caption4}');
Parent:=WizardForm.SelectProgramGroupPage;
end;

Parentlabel1:= TLabel.Create(WizardForm);
with Parentlabel1 do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(200), ScaleX(550), ScaleY(100));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Caption:= ExpandConstant('{cm:caption5}');
Parent:=WizardForm.SelectProgramGroupPage;
end;
//SelectProgramGroupPage

//installingpage
Label1:= TLabel.Create(WizardForm);
with Label1 do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(105), ScaleX(550), ScaleY(100));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 12;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold];
Caption:= ExpandConstant('{cm:caption6}');
Parent:=WizardForm.InstallingPage;
end;

Label2:= TLabel.Create(WizardForm);
with Label2 do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(125), ScaleX(550), ScaleY(100));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Caption:= ExpandConstant('{cm:caption7}');
Parent:=WizardForm.InstallingPage;
end;

Label3:= TLabel.Create(WizardForm);
with Label3 do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(210), ScaleX(550), ScaleY(100));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Caption:= ExpandConstant('{cm:caption8}');
Parent:=WizardForm.InstallingPage;
end;
//installingpage

//FinishedPage
FinishedLabel:= TLabel.Create(WizardForm);
with FinishedLabel do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(140), ScaleX(550), ScaleY(70));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 12;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold];
Caption:= ExpandConstant('{cm:Finished1}');
Parent:=WizardForm.FinishedPage;
end;

FinishedHeadingLabel:= TLabel.Create(WizardForm);
with FinishedHeadingLabel do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(190), ScaleX(550), ScaleY(100));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Caption:= ExpandConstant('{cm:Finished2}');
Parent:=WizardForm.FinishedPage;
end;
//FinishedPage
end;

Procedure InitializeWizard();
Begin
InitializeWizard1();
InitializeWizard2();
end;

procedure InitializeUninstallProgressForm;
var
BmpFile: TBitmapImage;
UNLabel1, UNLabel2: Tlabel;

begin
FileCopy(ExpandConstant('{app}\1.bmp'), ExpandConstant('{tmp}\1.bmp'), False);
UninstallProgressForm.AutoScroll := False;
UninstallProgressForm.ClientWidth := ScaleX(592);
UninstallProgressForm.ClientHeight := ScaleY(412);
UninstallProgressForm.InnerNotebook.Left := ScaleX(0);
UninstallProgressForm.InnerNotebook.Top := ScaleY(0);
UninstallProgressForm.InnerNotebook.Width := ScaleX(592);
UninstallProgressForm.InnerNotebook.Height := ScaleY(412);
UninstallProgressForm.OuterNotebook.Left := ScaleX(0);
UninstallProgressForm.OuterNotebook.Top := ScaleY(0);
UninstallProgressForm.OuterNotebook.Width := ScaleX(592);
UninstallProgressForm.OuterNotebook.Height := ScaleY(412);
UninstallProgressForm.ProgressBar.Left := ScaleX(90);
UninstallProgressForm.ProgressBar.Top := ScaleY(160);
UninstallProgressForm.ProgressBar.Width := ScaleX(400);
UninstallProgressForm.Font.Color:=clLime;
UninstallProgressForm.CancelButton.Hide;
UninstallProgressForm.Bevel.Hide;
UninstallProgressForm.StatusLabel.Hide;
UninstallProgressForm.MainPanel.Hide;
UninstallProgressForm.WizardSmallBitmapImage.Hide;
BmpFile:= TBitmapImage.Create(UninstallProgressForm.InstallingPage);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.SetBounds(0, 0, 592, 412);
BmpFile.Stretch:= true
BmpFile.Parent:= UninstallProgressForm.InstallingPage;
UninstallProgressForm.CancelButton.Visible:=False;

UNLabel1:= TLabel.Create(UninstallProgressForm);
with UNLabel1 do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(105), ScaleX(550), ScaleY(100));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 12;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold];
Caption:= ExpandConstant('{cm:caption10}');
Parent:=UninstallProgressForm.InstallingPage;
end;

UNLabel2:= TLabel.Create(UninstallProgressForm);
with UNLabel2 do begin
AutoSize:=False;
SetBounds(ScaleX(20), ScaleY(125), ScaleX(550), ScaleY(100));
WordWrap:=True;
Alignment := taCenter;
Transparent:=True;
Font.Name:='Arial';
Font.Size:= 8;
Font.Color:=$FFFFFF;
Caption:= ExpandConstant('{cm:caption11}');
Parent:=UninstallProgressForm.InstallingPage;
end;
end;
[/more]
В нем я использовал стандартный способ распаковки, но при разбитии на два диска в середине установки выбивала ошибка, что-то типо "Не найдено ни одного файла указанного для ISArcExtract"
Автор: Gnom3
Дата сообщения: 20.05.2011 21:07
AntonOVS

Держи, эамениш свои строки распаковки этим:

[more=Код] if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data1.bin'), ExpandConstant('{app}\data\'), false, '', '', '', notPCFonFLY ) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data\data1.srep'), ExpandConstant('{app}\data\data1.pcf'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data\data1.pcf'), ExpandConstant('{app}\data\levels.bnk.dat'), true ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data2.bin'), ExpandConstant('{app}\data\'), false, '', '', '', notPCFonFLY ) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data\data2.srep'), ExpandConstant('{app}\data\data2.pcf'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data\data2.pcf'), ExpandConstant('{app}\data\streaming.bnk.dat'), true ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data3.bin'), ExpandConstant('{app}\data\audio\'), false, '', '', '', notPCFonFLY ) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data\audio\data3.srep'), ExpandConstant('{app}\data\audio\data3.pcf'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data\audio\data3.pcf'), ExpandConstant('{app}\data\audio\data3.7z'), true ) then break;
if not IS7ZipExtract ( 0, 0, ExpandConstant('{app}\data\audio\data3.7z'), ExpandConstant('{app}\data\audio\'), true, '' ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data4.bin'), ExpandConstant('{app}\data\globals\'), false, '', '', '', notPCFonFLY ) then break;

if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'data5.bin' ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data5.bin'), ExpandConstant('{app}\data\language\'), false, '', '', '', notPCFonFLY ) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data\language\data5.srep'), ExpandConstant('{app}\data\language\data5.pcf'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data\language\data5.pcf'), ExpandConstant('{app}\data\language\data5.7z'), true ) then break;
if not IS7ZipExtract ( 0, 0, ExpandConstant('{app}\data\language\data5.7z'), ExpandConstant('{app}\data\language\'), true, '' ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data6.bin'), ExpandConstant('{app}\data\art\'), false, '', '', '', notPCFonFLY ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data7.bin'), ExpandConstant('{app}\data\'), false, '', '', '', notPCFonFLY ) then break;
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data\data7.srep'), ExpandConstant('{app}\data\data7.pcf'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data\data7.pcf'), ExpandConstant('{app}\data\audio_lod.bnk.dat'), true ) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data8.bin'), ExpandConstant('{app}\'), false, '', '', '', notPCFonFLY ) then break;[/more]
Добавил одну строчку в нужном тебе месте, в справке про нее написано.
Автор: AntonOVS
Дата сообщения: 20.05.2011 21:31
Gnom3
Спасибо.
То есть, эта строка:
if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'data5.bin' ) then break;
Означает, что ей нужно найти файл data5.bin на другом диске ?
Автор: Gnom3
Дата сообщения: 20.05.2011 21:38
AntonOVS
Да, в справке есть это, файл не обязательно этот, можно указать любой файл, который есть на втором диске.
Автор: prosaymon
Дата сообщения: 20.05.2011 23:09
Помогите пожалуйста соединить 2 скрипта, сам пробовал не чего не выходит.
http://rghost.ru/7244031
http://rghost.ru/7222541
Автор: Gnom3
Дата сообщения: 21.05.2011 10:28
prosaymon
Держи, заодно причесал тебе его.
Автор: Neronk_2K
Дата сообщения: 21.05.2011 10:47
Народ скажите плз как это исправить?

Автор: Sten23
Дата сообщения: 21.05.2011 10:55
Neronk_2K
Для начала, картинки надо убирать под спойлер [more] [/more.]
А чтобы не было ошибки, раскоментировать вверху кода precomp038
Автор: Gnom3
Дата сообщения: 21.05.2011 10:57
Neronk_2K
Тебе лучше здесь задать свой вопрос.

Добавлено:
Sten23

Цитата:
А чтобы не было ошибки, раскоментировать вверху кода precomp038

Не обязательно, раз уж разводить рффтопик Могут еще не совпадать версии, чтобы дать правильный ответ, нужен скрипт и батник, которым паковали
Автор: PavZver
Дата сообщения: 21.05.2011 12:26
Извиняюсь за тупой вопрос, но как разбить на 2 диска и добавить компоненты в unarc.dll
Как вот тут:
http://s07.radikal.ru/i180/1105/92/5a579f65dd82.png
Автор: Gnom3
Дата сообщения: 21.05.2011 12:31
PavZver
Опять-же - внимательно читая справку - к исдоне удивительно подробная справка написана.
А чего в справке непонятно - можно спросить здесь: ссылка.
Автор: PavZver
Дата сообщения: 21.05.2011 12:34
Gnom3
дело в том что у меня не исдон а unarc.dll - в исдоне ISArc а у меня unarc.dll
я знаю как это делается в исдоне - там все просто, а вот как в unarc.dll незнаю)
В скрипте написано только это:
ArcExtract('{src}\data1.bin', '{app}');
Автор: Gnom3
Дата сообщения: 21.05.2011 12:55
PavZver свою распаковку фриарка сделал? я тогда не очень понимаю, просто.
К компонентам привязать можно так:

Код: Используем функцию function IsComponentSelected(const Components: String): Boolean;
if IsComponentSelected('твой компонент') then begin ArcExtract('{src}\архив, который нужно привязать к компоненту.bin', '{app}') end;
Автор: PavZver
Дата сообщения: 21.05.2011 13:07
Gnom3
спасибо все получилось)
Автор: tema001
Дата сообщения: 21.05.2011 14:26
http://rghost.ru/7294551 Почему не работает деинсталляция при нажатии отмены!?
Автор: Gnom3
Дата сообщения: 21.05.2011 14:43
tema001 потому, что в этом скрипте нигде нет не только запуска инсталлятора, но и процедуры кнопки отмены.
Автор: vasyaetoyaept
Дата сообщения: 21.05.2011 15:00
Neronk_2K
кинь скрипт
Автор: sergey3695
Дата сообщения: 21.05.2011 16:27

Цитата:
Народ скажите плз как это исправить?

Ты или не той версией прикомпа распаковываешь, или забыл указать в "PCFVer:" версию.
Автор: Neronk_2K
Дата сообщения: 21.05.2011 18:25
vasyaetoyaept

Я те дам скрипт, ты мне поможешь исправить ошибку?
Автор: ILIA1992
Дата сообщения: 21.05.2011 20:12
подскажите через что можно запаковывать файлы для получения из 13ГБ в 4-5ГБ репаки
только не фриар и 7z

Автор: Begun999
Дата сообщения: 21.05.2011 20:13
Подскажите в чём проблема????
Создаю iso образ, распаковываются только архивы, которые сжимались фриарком.
Запускаю напрямую setup - всё нормально, игра устанавливается!!!
Автор: vintage 1
Дата сообщения: 21.05.2011 20:44
ILIA1992
Тебе сюда:
Пережатиe/Pекомпрессия/Oптимизация файлов для лучшего сжатия

Автор: vasyaetoyaept
Дата сообщения: 22.05.2011 10:12
Neronk_2K
да
Автор: aklak
Дата сообщения: 22.05.2011 10:52
Ребята, подскажите пожалуйста, а как сделать так чтобы каждый архив был отдельным компонентом и если не было бы определенного архива, то соответственно на странице выбора не был бы виден этот компонент.
Автор: Neronk_2K
Дата сообщения: 22.05.2011 11:28
vasyaetoyaept

Ссылку отправил в ЛС
Автор: ILIA1992
Дата сообщения: 22.05.2011 11:30
Я меняю расширение с arc на bin
при компиляции установщик удаляет те файлы которые я изменил тоесть bin
Как мне это исправить?
Автор: troyan90
Дата сообщения: 22.05.2011 11:43
ILIA1992
значит ты дал им(arc архивам) название типо - setup-1.bin или setup-1a.bin... инстал сам создает такие архивы при DiskSpanning=yes. и естестно он удалит уже существующие.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

Предыдущая тема: поиск


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.