Извлечь MSI из EXE - PullRequest
       93

Извлечь MSI из EXE

49 голосов
/ 10 октября 2009

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

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

Ответы [ 8 ]

88 голосов
/ 04 июня 2014

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

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

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

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

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

41 голосов
/ 28 июля 2014

Быстрый список : существует ряд распространенных типов файлов setup.exe. Вот некоторые из них в «шорт-листе». Более подробная информация здесь (внизу).

Извлечение Setup.exe: (различные варианты)

setup.exe /a
setup.exe /s /extract_all
setup.exe /s /extract_all:[path]
setup.exe /stage_only
setup.exe /extract "C:\My work"
setup.exe /x
setup.exe /x [path]
setup.exe /s /x /b"C:\FolderInWhichMSIWillBeExtracted" /v"/qn"

dark.exe -x outputfolder setup.exe

dark.exe - это двоичный файл WiX - установите WiX для извлечения setupX-файла WiX (на данный момент). Подробнее (раздел 4).

Всегда есть:

setup.exe /?

MSI Извлечение: msiexec.exe / File.msi Извлечение:

 msiexec /a File.msi
 msiexec /a File.msi TARGETDIR=C:\MyInstallPoint /qn

Множество инструментов настройки : невозможно охватить все возможные типы setup.exe файлов. Они могут содержать все виды различных параметров командной строки. Существует так много возможных инструментов, которые можно использовать . (non-MSI, MSI, admin-tools, multi-platform и т. Д.).

NSIS / Inno: Общие, бесплатные инструменты, такие как Inno Setup, похоже, затрудняют извлечение ( неофициальный распаковщик , не опробованный мной, работает под управлением virustotal.com). Принимая во внимание, что NSIS, похоже, использует обычные архивы, которые стандартное архивное программное обеспечение (7-zip et al) может открывать и извлекать.

Общие хитрости : Один из приемов - запустить setup.exe и посмотреть на 1) system's temp folder for extracted files. Другой трюк заключается в использовании 2) 7-Zip, WinRAR, WinZip или аналогичных инструменты архива, чтобы видеть, могут ли они читать формат. Некоторые утверждают, что успех 3) opening the setup.exe in Visual Studio. Не техника Я использую. 4) And there is obviously application repackaging - сохранение изменений, внесенных в компьютер после запуска установки, и очистить его - требуется специальный инструмент (большинство бесплатных приходят и уходят, Advanced Installer Architect и AdminStudio большие игроки).


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

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

и для сохранности:


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

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

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

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

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

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


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-файла, перед установкой вы должны запустить административную установку пакета. Это то, как компания с надлежащим развертыванием в управляемой сети будет делать что-то, и она будет удалять файлы cab и создавать точку сетевой установки с небольшим файлом MSI и файлами помимо него.


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

Рекомендуется прочитать больше об установках admin, поскольку это полезная концепция, и я написал сообщение о stackoverflow: Какова цель административной установки, инициированной с помощью 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
    

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 (еще не тестировали этот продукт) - могут открыть их.

18 голосов
/ 10 октября 2009

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

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

Хотя вы можете сделать это с помощью 7-Zip, лучшим способом является административная установка, указанная Штейн Осмул .

15 голосов
/ 18 декабря 2012

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

C:\> installer.exe /extract

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

7 голосов
/ 09 июля 2010

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

setup.exe /A

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

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

6 голосов
/ 23 августа 2012

Единственный способ сделать это - запустить 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
3 голосов
/ 18 августа 2013

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

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

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

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

0 голосов
/ 23 марта 2016

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

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

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

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

...