Извлечь MSI из EXE

Я хочу извлечь MSI из EXE-файла установки для публикации по сети.

Например, используя Universal Extractor, но он не работает для среды выполнения Java.

8 ответов

Решение

7-Zip должен сделать свое дело.

С его помощью вы можете извлечь все файлы внутри EXE-файла (таким образом, также MSI-файл).

Хотя вы можете сделать это с 7-Zip, лучшим способом является административная установка, как указал Stein Åsmul.

Для проектов на основе InstallShield MSI я нашел следующее:

setup.exe /s /x /b"C:\FolderInWhichMSIWillBeExtracted" /v"/qn"

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

Командная строка в основном говорит setup.exe, чтобы попытаться удалить продукт (/x) и сделать это молча (/s). При этом следует извлечь MSI в определенное место (/b).

Команда /v передает аргументы установщику Windows, в данном случае аргумент /qn. Аргумент /qn отключает любой вывод графического интерфейса установщика.

ОБНОВЛЕНИЕ: краткое представление различных инструментов развертывания, используемых для создания установщиков: Как создать установщик Windows (подробные ссылки).

И более простое представление списка наиболее используемых инструментов разработки на данный момент (2018) для более быстрого чтения и обзора.

И для безопасного хранения: создайте MSI из извлеченных установочных файлов.

Просто отказ от ответственности: A setup.exe Файл может содержать встроенный MSI, это может быть установщик устаревшего стиля (не MSI) или это может быть просто обычный исполняемый файл без каких-либо средств извлечения. "Обсуждение" ниже сначала описывает использование образов администратора для файлов MSI и как извлечь файлы MSI из файлов setup.exe. Затем он предоставляет некоторые ссылки для обработки других типов файлов setup.exe. Также смотрите раздел комментариев.

ОБНОВЛЕНИЕ: несколько разделов были добавлены непосредственно ниже, перед описанием извлечения файла MSI с использованием административной установки. Наиболее значительным является извлечение информации о распаковке пакетов WiX setup.exe (новый ребенок в блоке). Помните, что "последним средством" для поиска извлеченных установочных файлов является запуск установщика, а затем поиск извлеченных файлов во временной папке (удерживая клавишу Windows, нажмите R, введите %temp% или же %tmp% и нажмите Enter) - сначала попробуйте другие варианты - по соображениям надежности.

Извиняюсь за "обобщенный беспорядок" со всей этой тяжелой взаимосвязью. Я верю, что вы найдете то, что вам нужно, если вы покопаетесь в ссылках, но содержание действительно должно быть убрано и организовано лучше.

Общие ссылки:

Извлечь содержание:

Ссылки поставщика:


WiX Toolkit & Burn Bundles (файлы setup.exe)

Техническое примечание: инструментарий WiX теперь обеспечивает setup.exe файлы, созданные с помощью инструмента начальной загрузки Burn что вам нужен собственный инструментарий dark.exe декомпилятор для извлечения. Запись используется для создания файлов setup.exe, которые могут устанавливать несколько встроенных файлов MSI или исполняемых файлов в указанной последовательности. Вот пример команды извлечения:

dark.exe -x outputfolder MySetup.exe

Прежде чем вы сможете запустить такое извлечение, необходимо выполнить некоторые предварительные шаги:

  1. Загрузите и установите инструментарий WiX (ссылка на предыдущий ответ с некоторой дополнительной контекстной информацией по WiX, а также ссылка для скачивания).
  2. После установки WiX просто откройте command prompt, CD в папку, где setup.exe проживает. Затем укажите вышеуказанную команду и нажмите Enter
  3. Выходная папка будет содержать несколько подпапок, содержащих извлеченные файлы MSI и EXE, а также манифесты и файл ресурсов для графического интерфейса записи (если таковые были, конечно, в файле setup.exe).
  4. Теперь вы можете, в свою очередь, извлечь содержимое извлеченных MSI-файлов (или EXE-файлов). Для MSI это означало бы запуск установки администратора - как описано ниже.

Есть встроенная поддержка MSI для извлечения файлов (установка администратора)

MSI или Windows Installer имеет встроенную поддержку для этого - извлечение файлов из файла MSI. Это называется административной установкой. Он в основном предназначен для создания точки сетевой установки, из которой установка может быть запущена на многих целевых компьютерах. Это гарантирует, что исходные файлы всегда доступны для любых операций восстановления.

Обратите внимание, что запуск административной установки по сравнению с использованием zip-инструмента для извлечения файлов очень отличается! Последний не будет корректировать макет мультимедиа таблицы мультимедиа так, чтобы пакет был настроен на использование внешних исходных файлов, что является правильным способом. Всегда предпочитайте запускать фактическую установку администратора поверх любых хакерских извлечений из zip. Что касается сжатия, на самом деле есть три различных алгоритма сжатия, используемых для файлов cab в формате файлов MSI: MSZip, LZX и Storing (без сжатия). Все они обрабатываются правильно путем установки администратора.

Важно: установщик Windows кэширует установленные файлы MSI в системе для восстановления, изменения и удаления сценариев. Начиная с Windows 7 (MSI версии 5), файлы MSI теперь кэшируются в полном размере, чтобы избежать разрыва подписи файла, которая препятствует появлению запроса UAC при запуске установки (известная проблема Vista). Это может привести к значительному увеличению потребления дискового пространства (несколько гигабайт для некоторых систем). Чтобы предотвратить кэширование огромного MSI-файла, перед установкой вы должны запустить установку пакета admin. Это то, как компания с правильным развертыванием в управляемой сети будет делать что-то, и она будет удалять файлы cab и создавать точку сетевой установки с небольшим файлом MSI и файлами, помимо него.


Admin-установки имеют много применений

Рекомендуется прочитать больше об административных установках, так как это полезная концепция, и я написал пост о stackru: какова цель административной установки, инициированной с помощью msiexec / a?,

По сути, установка администратора важна для:

  • Извлечение и проверка файлов установщика
    • Чтобы получить представление о том, что на самом деле устанавливается и где
    • Чтобы гарантировать, что файлы выглядят надежными и безопасными (без вирусов - вредоносные программы и вирусы все еще могут скрываться внутри файла MSI)
  • Развертывание с помощью программного обеспечения для управления системами (например, SCCM)
  • Переупаковка корпоративных приложений
  • Ремонт, модификация и самовосстановление
  • Ямочный ремонт и обновления
  • Объявление MSI (помимо прочего, это включает в себя функцию " запуска из источника ", где вы можете запускать напрямую из общего сетевого ресурса и устанавливать только ярлыки и данные реестра)
  • Ряд других мелких деталей

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


Админ-установка, практические инструкции

Вы можете выполнить установку с правами администратора несколькими различными способами в зависимости от того, как поставляется установщик. По сути, он либо поставляется в виде файла MSI, либо упакован в файл setup.exe.

Запустите эти команды из командной строки с повышенными привилегиями и следуйте инструкциям в графическом интерфейсе для интерактивных командных строк:

  • MSI файлы:

    msiexec /a File.msi
    

    это для запуска с графическим интерфейсом, вы можете сделать это тоже молча:

    msiexec /a File.msi TARGETDIR=C:\MyInstallPoint /qn
    
  • файлы setup.exe:

    setup.exe /a
    

Файл setup.exe также может быть установкой устаревшего стиля (не MSI) или ужасным типом файла Installscript MSI - широко известным ошибочным типом проекта Installshield с гибридным нестандартным форматом MSI. По сути, это MSI с пользовательским, более продвинутым графическим интерфейсом, но он также полон ошибок.

Для устаревших файлов setup.exe / a ничего не сделает, но вы можете попробовать ключ /extract_all:[путь], как описано в этом PDF-файле. Это хорошая ссылка для установки без вывода сообщений и других вещей. Другой ресурс - это список параметров командной строки Installshield setup.exe.

Файлы исправлений MSI (*.MSP) могут быть применены к образу администратора для правильного извлечения его файлов. 7Zip также сможет извлечь файлы, но они не будут правильно отформатированы.

Наконец - последнее средство - если никакой другой способ не работает, вы можете получить извлеченные установочные файлы, очистив временную папку в вашей системе, запустив файл setup.exe в интерактивном режиме и дождавшись появления первого диалогового окна. В большинстве случаев установщик извлекает кучу файлов во временную папку. Иногда файлы обычные, иногда в формате CAB, но Winzip, 7Zip или даже Universal Extractor (еще не тестировали этот продукт) - могут открыть их.

Я предполагаю, что этот вопрос в основном касался InstallShield с учетом тегов, но в случае, если кто-то придет сюда с той же проблемой для пакетов на основе WiX (и, возможно, других), просто вызовите установщик с помощью /extract, например так:

C:\> installer.exe /extract

Это поместит MSI в папку рядом с установщиком.

Начиная с параметра:

setup.exe /A

просит сохранить включенные файлы (в том числе MSI).

Это может зависеть от программного обеспечения, которое создало setup.exe,

Единственный способ сделать это - запустить exe и собрать MSI. Вы должны позаботиться о том, чтобы при преобразовании MSI с помощью MST они могли потеряться.

Я использую эту командную строку:

SET TMP=c:\msipath

MD "%TMP%"

SET TEMP=%TMP%

start /d "c:\install" install.exe /L1033

PING 1.1.1.1 -n 1 -w 10000 >NUL

for /R "%TMP%" %%f in (*.msi) do copy "%%f" "%TMP%"

taskkill /F /IM msiexec.exe /T

Запустите установщик, но не нажимайте кнопку " Установить>". затем

cd "%AppData%\..\LocalLow\Sun\Java"

и найдите файл MSI в одном из подкаталогов (например, jre1.7.0_25).

Обратите внимание, что Data1.cab из этого подкаталога также потребуется.

Нет необходимости использовать какой-либо инструмент! Мы можем следовать по простому пути.

Я не знаю, какой инструмент создал вашу самораспаковывающуюся программу установки, поэтому мне придется дать общий ответ.

Большинство программ такого типа извлекают файл пакета (.msi) в каталог TEMP. Такое поведение является поведением по умолчанию InstallShield Developer.

Без дополнительной информации я бы порекомендовал вам просто запустить установку, и после того, как отобразится первое диалоговое окно MSI, вы можете проверить свой каталог TEMP на предмет вновь созданного подкаталога или файла MSI. Перед отменой / остановкой программы установки просто скопируйте этот файл MSI из папки TEMP. После этого вы можете отменить установку.

Другие вопросы по тегам