Как извлечь файлы из inno setup

Обновлено: 07.07.2024

Чтобы сохранить пропускную способность и пространство, а также предотвратить случайное вмешательство, файлы установки для продукта базы данных (назовите его Ajax) были заархивированы (вызовите этот файл "AJAX_Install_Files.ZIP" ). Я хотел бы иметь Inno-Setup "установить" (то есть скопировать) файл AJAX_Install_Files.ZIP в пункт назначения, а затем разархивировать файлы в ту же папку, где находится файл .ZIP. Последующая программа будет запущена Inno Setup, чтобы фактически запустить установку продукт "Ajax".

Я просмотрел документацию, FAQ и KB на веб-сайт Inno Setup, и это не представляется возможным, кроме написания Pascal script (код) - это было бы правильно или есть альтернативные решения?

ОТВЕТЫ

Ответ 1

Вы можете использовать инструмент внешней командной строки для распаковки вашего архива, например, здесь. Поместите его в раздел [Files]:

Затем вызовите его в разделе [Run], например:

(Вероятно, вы захотите взять целевой каталог из переменной script, поэтому необходимо выполнить еще одну работу)

Ответ 2

Вы можете использовать метод Folder.CopyHere для извлечения ZIP.

Обратите внимание, что флаги SHCONTCH_NOPROGRESSBOX и SHCONTCH_RESPONDYESTOALL работают в Windows Vista и новее.

Для примера извлечения только некоторых файлов см.:
Как заставить Inno Setup распаковать один файл?

Ответ 3

Я ответил на очень похожий вопрос , и некоторые из них касаются.

Я бы спросил, зачем вам нужен ZIP файл? Я лично разместил несжатые файлы в настройках. Тогда у меня было бы две записи [category] для приложения и одна для данных. По умолчанию оба проверяются.

Это позволит пользователям установить свежий набор данных, если потребуется, на более позднюю дату.

Если вам действительно нужен ZIP файл и вы хотите сохранить его легко, отправляйте оба ZIP файла и несжатые файлы в одну и ту же настройку.

По умолчанию файлы, которые помещаются в ваш файл setup.exe, сжаты.

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

Ответ 4

Вы можете просто создать тихий самораспаковывающийся архив (SFX), пример, описанный здесь, как создать SFX-архив для вещей, которые вам нужны, и написать код на Pascal, чтобы просто запустить его следующим образом (скрипт для Inno Setup 6.0.2):

Введение

Загрузка компонентов

Для начала нам потребуется утилита Inno Setup Unpacker версии 0.40 (поддерживает все версии InnoSetup до 5.5.4 включительно). Загрузить её можно здесь. Распакуйте архив в любой каталог, например, C:\iunp\.

Также для разбора секции code, которая компилируется в бинарный файл, нам потребуется дизассемблер ROPS, который можно взять здесь. Распаковать его следует в тот же каталог.

Теперь скачаем SRC Repair последней версии по прямой ссылке.

Краткая справка по декомпилятору

В квадратных скобках указываются необязательные параметры. Единственным обязательным является имя файла инсталлятора, который мы будем декомпилировать.

Список допустимых команд утилиты innounp:

Список допустимых параметров утилиты innounp:

Декомпиляция примера

Дизассемблирование файла CompiledCode.bin

  1. Снова откроем командную строку Windows.
  2. Перейдём в каталог, в который распаковали ROPS (C:\iunp\):
  3. Выполним в консоли команду:
  4. В файле C:\iunp\out.asm мы найдём дизассемблированный код.

Заключение

Таким образом, мы получили полное содержимое программы установки, собранной при помощи InnoSetup, включая её полные исходные коды.

28 комментариев к записи

Хорошая статья. Без лишних слов. Прочитал, понял и в течении двух минут закрепил на практике. Благодарю. (Хотя, кажется мне я поздновато её прочёл.)

Скрипты не распаковывает. Они все пустые.

К сожалению, проект уже не развивается и не может распаковывать установочные пакеты, созданные новейшей версией InnoSetup.

Распаковывает, только может с кодировкой начудить. Часть строк в UTF-8, часть в win-1251, так что после распаковки и доработки напильником действительно открывается корректно в InnoSetup GUI.

Зависит от того, в какой версии InnoSetup был собран оригинальный установщик: ANSI или Unicode.

Самая актуальная версия InnoSetup 6 поддерживает только юникод.

Проканает только на старых версиях инно.
На 5.0+ стандартный криптор и почти все используют сторонние dll по дефолту.

Хоть и статья 2014 но у меня вопрос как это дело после разбора собрать? У меня после дизассемблирования файла CompiledCode.bin инно не хочет принимать код выкидывает ошибку хоть я не очень понимаю куда его вставлять (вставлял туда и где весь другой код) но установщик был собран на старой версии 4.2.6 а на ней я вообще не понимаю как это дело все собрать так что пытался на 5.5.9. Просто хотел разобрать/собрать но не получилось 🙁

@Александр
CompiledCode.bin разбирается в псевдокод, его нельзя скомпилировать заново.

То есть для обычного пользователя это не реально? 🙁 А что нужно сделать с ним что бы скомпилировать заново? Или это делается так что бы посмотреть что и как?

@Александр
Нет, собрать такой дизассемблированный CompiledCode.bin из псевдокода не представляется возможным.

Dmitry :

А не проще открыть инсталятор через 7-Zip?

Далеко не все форматы установочных пакетов InnoSetup можно открыть в 7-Zip. Можете попробовать например описанный в статье пример с SRC Repair. Открыть его в 7-Zip даже последней версии невозможно.

Dmitry :

т.е. для вас сообщаю что некоторые exe файлы можно открывать через zip архиваторы. (Насчет рара не знаю не пробовал)

Разумеется если это по сути SFX-архивы.

Dmitry :

А так же можно изменять инфу о приложении по скольку это все хранится (по крайней мере у меня) в отдельных файликах.

Это хранится в ресурсе. Конечно же можно изменять при помощи редактора ресурсов.

Dmitry :

И предупреждение. Некоторые разработчики знают о такой функции архиваторов и потому как они на exe файл как на архив ставят пароль. Просто так предупредил об этом.

Если на сам контейнер установлен пароль, то InnoSetup будет запрашивать его перед установкой, т.к. содержимое внутри зашифровано стойким алгоритмом AES-128. Описанная в статье утилита декомпилятор отлично умеет распаковывать и зашифрованные установочные пакеты если передать ей пароль в качестве параметра.

Автоматические распаковщики инсталляторов

Назначение программ для распаковки инсталляторов понятно. В настоящее время инсталляторы сами представляют собой достаточно сложные программы, вносящие изменения в систему или реестр, создающие ярлыки, записывающие файлы в различные папки. Но иногда инсталляторы выполняют нежелательные действия, например, пытаются без ведома пользователя установить различные тулбары или рекламные модули, отправляют разработчику информацию о факте установки, не дают выполнить установку без ввода пароля или серийного номера, и прочие гадости. В этом случае нам требуется извлечь из дистрибутива все содержащиеся в нем файлы, не запуская сам инсталлятор. Кроме файлов из некоторых инсталляторов можно извлечь так называемые скрипты установки, в которых прописывается последовательность действий, из них можно узнать какие ключи реестра меняются, какие файлы и куда записываются и т.п. Также извлеченные из инсталляторов скрипты можно в дальнейшем использовать для создания перепакованных вариантов программ, например, уже включающие в себя файлы с отломанной регистрацией. Еще некоторые особо одаренные аффтары проверяют целостность ранее установленной программы и не дают устанавливать обновления на модифицированные инсталляции, в основном такие милые приколы встречаются на играх. Так что умение бороться с инсталляторами всегда пригодится.

Самым мощным и удобным инструментом для автоматической распаковки инсталляторов является программа Universal Extractor. Она представляет собой оболочку для других распаковщиков, всего поддерживается несколько десятков различных форматов, в том числе таких популярных, как распаковка Inno Setup, InstallShield, Wise Installer и других. Поддерживается русский язык, интеграция в контекстное меню Проводника Windows, продвинутые пользователи могут сохранить и посмотреть лог работы внешних модулей распаковки. На момент написания статьи хостинг с дистрибутивами и исходниками Universal Extractor недоступен, поэтому выложу Universal Extractor здесь.

Universal Extractor 1.6.1

Многие инсталляторы представляют собой обычный архивный файл, к которому дописан модуль для его распаковки, то есть SFX-архив (Self-extracting архив). Поскольку распространенных алгоритмов компрессии не так много, в некоторых случаях для распаковки инсталляторов можно воспользоваться обычными архиваторами, например, WinRAR или бесплатным 7zip.

Теперь переходим к специализированным распаковщиками, ориентированным на конкретный тип инсталляторов. Наиболее мощный и популярный инструмент для создания инсталляторов - бесплатный Inno Setup, он обладает скриптовым языком, позволяющим делать практически неограниченные по опциям дистрибутивы.

innounp, распаковщик инсталляторов Inno Setup версий от 2.0.8 до 5.3.11. Inno Setup Unpacker - консольная утилита, поэтому для удобства работы сделано несколько графических оболочек, например, IS Unpacker Explorer (русскую версию можно найти на сайте MSILab) или InnoSetup And NSIS Unpacker Shell (требует 7zip и innounp).

InnoSetup And NSIS Unpacker Shell 1.4

Вспомогательная утилита InnoCry предназначена для обхода паролей на инсталляторах, созданных Inno Setup. Запускаете сперва инсталлятор, в котором требуется ввод пароля, параллельно запускаете InnoCry. Затем InnoCry несколькими способами пытается пропатчить в памяти исполняемый код инсталлятора, чтобы он не требовал ввода пароля. В последней версии также появилась опция активации заблокированных кнопок.

InnoCry 1.2.7

InnoExtractor сделан на базе архиватора 7zip. Позволяет просматривать и извлекать содержимое инсталляторов Inno Setup. Большой плюс в том, что InnoExtractor постоянно совершенствуется и поддерживает как старые, так и новейшие версии этого инсталлятора.

InnoExtractor 4.8.0.156

Для распаковки инсталляторов, созданных при помощи Nullsoft Scriptable Install System или сокращенно NSIS, удобнее всего пользоваться бесплатным архиватором 7zip. Он без труда открывает такие инсталляторы для просмотра и позволяет извлекать из них нужные файлы.

E_WISE 2002.03.29 - консольная утилита для извлечения файлов из WISE-инсталляторов. Поддерживаются практически все версии Wise-инсталляторов, в комплекте есть версии распаковщика для DOS, Windows и Linux, а также документация на английском и немецком языках.

E_WISE 2002.03.29

E_WISE 2002.07.01 (Update)

HWUN (Heuristic Wise UNpacker) также предназначен для распаковки инсталляторов WISE, но в отличие от предыдущей программы использует эвристические алгоритмы для поиска необходимых сигнатур и данных, так что есть большая вероятность, что он будет работать и с более новыми версиями инсталляторов.

Setup Factory Unpacker - консольный распаковщик инсталляторов Setup Factory версии 5 и 6. Как признается сам автор, имеют место быть глюки и баги, так что пригодится больше для коллекции.

Setup Factory Unpacker


Скриншот программы InstallShield (by one exe-file) Unpacker

InstallShield (by one exe-file) Unpacker - автоматический консольный распаковщик двух из трех известных типов инсталляторов, созданных программой InstallShield. Это одиночный cab-файл, упакованный в msi-контейнер, а также набор из установочных файлов и cab-архива, также помещенный внутрь msi-файла (Microsoft Installer). Третий тип, использующий шифрование, этим распаковщиком не поддерживается.

InstallShield (by one exe-file) Unpacker 0.99

Less MSIerables также используется для извлечения файлов из MSI-контейнеров, но имеет графический интерфейс и может встраиваться в Проводник Windows. Кроме извлечения файлов показывает всю дополнительную информацию, содержащуюся в инсталляторе.

Less MSIerables 1.0.8

Orca MSI Editor 3.1.4000.1830

JSWare MSI Unpacker - одна из новых разработок. Позволяет просматривать и извлекать файлы, а также смотреть какие настройки инсталлятор вносит в реестр при установке. Всячески рекомендую к использованию.

JSWare MSI Unpacker

Остался последний вопрос: а как определить, с помощью какой программы был собран тот или иной инсталлятор? Ответить на этот вопрос помогут программы для анализа исполняемых файлов. Например, PEiD четко определяет инсталляторы как "Inno Installer 5.1.2 [Overlay]" или "Nullsoft PiMP Stub [Nullsoft PiMP SFX]", так что проблем с идентификацией и выбором нужного инструментария быть не должно.

InnoExtractor скриншот № 1

InnoExtractor - это мощное приложение, которое помогает распаковывать инсталяторы Inno Setup, использующие технологию InnoUnp.
С помощью программы можно исследовать внутреннюю структуру и содержание программы установки. Также есть возможность извлекать файлы и данные в локальную папку или на портативные устройства без запуска программы установки.

Основные возможности и особенности программы:

  • Простой и удобный графический интерфейс.
  • Открытые инсталяторов в приложении только путем перетаскивания исполняемых файлов из Windows Explorer.
  • Возможность ознакомления с внутренним содержанием из программы установки.
  • Извлечение файлов и встроенных сценариев в локальную папку, ZIP-пакет или самораспаковывающиеся модули.
  • Декомпиляция файла "CompiledCode.bin" установщика для получения кода сборки, соответствующего разделу "Code" сценария.
  • Открытие внутренних файлов установщика в одном приложении.
  • Выполнение поиска файлов по ключевому слову.
  • Панель ввода, которая позволяет ввести правильный пароль для извлечения зашифрованных инсталяторов.
  • История недавно открытых установщиков.
  • Поддержка всех версий Inno Setup и InnoUnp.
  • Полная поддержка Unicode.
  • Улучшения в работе программы
  • Исправлены ошибки

WinRAR - мега популярный архиватор, умеющий обрабатывать практически любые форматы архивов.

7-Zip - абсолютно бесплатный функциональный архиватор с высокой степенью сжатия и.

WinZip - мощная программа для работы как с Zip-файлами, так и с архивами других форматов.

HaoZip - бесплатный архиватор, способный заменить привычный WinRAR. Позволяет легко сжимать.

PeaZip - бесплатный архиватор поддерживающий самые распространенные форматы архивов: 7Z, ACE.

Universal Extractor - простая программа для извлечения данных из инсталляторов приложений.

Отзывы о программе InnoExtractor

Рома про InnoExtractor 5.3.0.190 [02-03-2019]

Спасибо отличная программа
3 | 2 | Ответить

Иван про InnoExtractor 5.2.1.185 [14-02-2016]

Здорово ! наконец то есть чем открывать инсталяторы всякие ) смог достать песенку )
2 | 2 | Ответить

Anvide про InnoExtractor 5.1.3.169 [21-12-2014]

Ребята, спасибо за нужную программу. Сам как разработчик, уважаю людей, которые не жалеют сил и времени на разработку программ. Респект Вам, и всего наилучшего
3 | 3 | Ответить

Universal Extractor DreamLair v2.1.1


Universal Extractor - уникальная программа, предназначенная для извлечения данных из самых разнообразных
архивов, инсталляторов и других файлов.
Universal Extractor DreamLair - форк (модификация), в которой значительно расширен список поддерживаемых
архивов и инсталляторов, исправлен и откорректирован процесс распаковки, добавлено много других изменений и
улучшений.

Уникальные особенности DreamLair-релиза, которых нет в других модификациях программы:
- архиватор zpaq 6.26
- KGB Archiver 2.0.0.2.2
- препроцессор srep 3.92
- архиватор FreeArc 11.11.2013
- возможность распаковки файлов pcf
- возможность распаковки файлов srep
- распаковка консольных архивов uda
- возможность распаковки изображений gif
- скорректирована распаковка IShield 5-18
- precomp 0.37, 0.38, 0.40, 0.42 и 0.43
- поддержка precomp, delta, srep, 7-Zip во FreeArc
- оставлены только языковые файлы Eng-Ukr-Cz-Pol-Rus
- все файлы распаковщиков в составе сборке авторские
- инсталлятор UniExtractor без хитропопых паролей
- подкорректирован интерфейс, убраны звуковые сигналы
- убрано автообновление и подмена сторонними файлами
- инсталлятор можно просто распаковать, и получится портабл
- 7d2c2b00016bd7f6b08f69566ca35af7 *UEDreamLair_2.1.1.exe

Unique features of Release:
- updated zpaq 6.26
- KGB Archiver 2.0.0.2.2
- Preprocessor srep 3.92
- Arhiver FreeArc 11.11.2013
- added opportunity unpack files pcf
- added opportunity unpack files srep
- added opportunity unpack console uda
- added opportunity unpack images gif
- corrected unpack Install Shield 5-18
- added Precomp 0.37, 0.38, 0.40, 0.42, 0.43
- support precomp, delta, srep, 7-Zip in FreeArc
- languages - only English and Ukr-Cz-Pol-Rus
- files of unpackers replaced with original ones
- installer UniExtractor now without sly passwords
- slightly corrected program interface, removes sounds
- you can just unpack installer and get portable version
- 7d2c2b00016bd7f6b08f69566ca35af7 *UEDreamLair_2.1.1.exe

2014.01.05
Новое в версии 2.1.1
- исправлена распаковка precomp;
- удалён лишний файл;
- добавлен Readme-файл.

При желании вы можете инсталлировать Universal Extractor, и она встроется в контекстное меню файлов. А можете
просто распаковать архив-инсталлятор с программой и использовать портабельную версию.

Universal Extractor v1.9.22.209 (by gora)


Universal Extractor - Программа, служащая для извлечения данных из установщиков, msi-инсталляторов и архивов практически любых типов.
Полный список поддерживаемых форматов можно посмотреть на странице программы. Имеет русский интерфейс.

• Ключи можно комбинировать:
UExtract.exe -ai01234 -gm2 установит все ярлыки

При этом будет произведена простая распаковка программы в папку и Вы получите портативную версию. Ни каких записей в ОС, ярлыков, пунктов в контекстном меню, создано не будет.


Поддержка кроссплатформенности: имеется

Для уменьшения размера аддона документация удалена (но может быть добавлена без пересборки 7z SFX архива), и все файлы распакованы UPX-ом.

Universal Extractor v1.9.21.209b (by Gora/Vandit)


• Created by Gora [R.I.P]
• modified by Vandit

Supported Languages:
ar,bg,br,cz,de,en,es,fi,fr,hr,hu,it,nl,pl,ru,sk,sv,tr,uk,vn

arameters for unattended installation
/VERYSILENT /LANG=Spanish
Supported languages
Dutch,English,French,German,Italian,Russian,Spanis h
Additional tasks
/TASKS="desktopicon,pin

Universal Extractor v1.6.1.2029 (by dev2null) (mod by korosya)


Universal Extractor - программа позволяет извлекать файлы не только из популярных архивов, но также из инсталляционных пакетов INNO, NSIS, WISE, MS, INSTALLSHIELD и некоторых других.

-----------------------------------
Типа псевдопортабель сборки от koros. Добавлять/удалять в контекстное меню батником ue_setup_ru.cmd (на осях с вкл. UAC запускать от админа). Часть программ в сборке и сам UniExtract.exe пересобраны по моему вкусу (в UniExtract только заменена иконка, а то родная не очень нравится, остальные в основном для уменьшения размера).

* 01.05.2018: обновлены 7-Zip, MHTUnp.wcx и TrIDDefs.TRD.

* 16.04.2018: обновлена сборка до 1.6.1.2029 (16/04/2018) от автора:
1. Исправлена ошибка (для rar-архивов - неправильное определение с помощью TrID и распаковка запароленных)(спасибо rinat84).

Universal Extractor v1.6.1.1032 (by korosya)


Universal Extractor - программа позволяет извлекать файлы не только из популярных архивов, но также из инсталляционных пакетов INNO, NSIS, WISE, MS, INSTALLSHIELD и некоторых других.

Universal Extractor v1.6.1.2032 AU (by korosya)


Universal Extractor - программа для извлечения файлов практически из любых типов архивов и инсталляционных пакетов, например из пакетов INNO, NSIS, WISE, MS, INSTALLSHIELD и многих других.

UniEx DreamLair v20.6 (by LonerD)


UniEx DreamLair - Форк by LonerD форка by koros aka ya158
Переделывалось под себя, и с предложения korosya выкладывается на всеобщее обозрение. Только портабельная версия, установщика нет. Активного развития не обещается. Весь исходный код прилагается.

;
Universal Extractor DreamLair 21

- 7-Zip ZS 21.02 - v1.5.0 - Release 1
- Less MSIerables (lessmsi) v1.8.1
- Exeinfo PE v0.0.6.5
- Pea v1.00 updated
- Xpdf v4.03 updated
- userdb.txt updated
- TrIDDefs.TRD updated
- AFPIUnpack removed
- RPA Extract added

;
Universal Extractor DreamLair 20.6
Based on mod by koros aka ya158 v1.6.1.2035

- UPX updated v3.96
- pea updated v0.72
- userdb.txt updated
- TrIDDefs.TRD updated
- jsMSIx updated v1.19
- innounp updated v0.48
- lessmsi updated v1.6.91
- Xpdf tools updated v4.02
- Exeinfo PE updated v0.0.6.0
- EnigmaVBUnpacker updated v0.58
- UNUHARC06 replaced with UHARC06
- WiX Toolset updated v3.11.2.4516
- lessmsi moved to separate directory
- Renamed Stix_w32.exe (original name)
- Renamed and updated MHTUnpack.wcx 2.2
- Original 7-Zip replaced with 7-Zip ZS
- Added many file types supported by 7-Zip
- Added GIFWCX plugin for GIF files support
- Added precomp 0.4.7 and pcf files support
- Removed dbxplug.wcx (replaced with 7-Zip)
- Updated Detect It Easy 2.04 (thanx rinat84)
- InstallExplorer replaced with original version
- All decompressed files replaced with originals
- Removed bootimg.exe (probably it was unworkable)
- Small interface changes and improvements

MD5: 0de61fce3c41e9bd1d4c17e898a751f3 *UniEx.7z (UniEx DreamLair v20.6)
MD5: 2a5d32035844ee8d06cb90d1d1c2f568 *UniEx.7z (UniEx DreamLair v21)

Universal Extractor v1.6.1 R11 (by Lupo)


Universal Extractor - It allows you to extract files from many types of archive files, including ZIP, RAR, ARJ, LZH, MSI, EXE created using various installer packages such as Wise, Inno Setup, NSIS etc. It is great for testing apps for portability because you can extract files directly from installer packages without having to go through the installation process.

Universal Extractor v2.0.0 RC1 (by Bioruebe)


Universal Extractor 2 - is an unofficial updated and extended version of the original UniExtract by Jared Breland. It brings several hundred changes including community-wanted ones such as a batch mode, auto-updater and scan-only-functionality.

New features:
- Batch mode
- Silent mode, not showing any prompts
- Scan only mode to determine file types without extracting
- Integrated updater
- 100+ new supported file types
- Audio and video extraction for multimedia files
- Cascading context menu
- Support for password list for common archives
- Improved optional status box with progress indicator
- New detection methods + more detailed output and error messages
- Support for some extractors not shipping with UniExtract as plugins
- Resource usage/speed improvements, lots of fixes
- Auto-using 64 bit versions of extractors if supported by OS

Читайте также: