Программно извлечь содержимое InstallShield setup.exe

Я пытаюсь извлечь содержимое файла InstallShield setup.exe. (Мой план состоит в том, чтобы использовать его в инструменте бэк-офиса, поэтому это должно быть сделано программно без какого-либо взаимодействия с пользователем.)

Это возможно?
(Первоначальное исследование, похоже, указывает на то, что оно провалится.)

Если возможно иметь общее решение, для всех последних версий InstallShield это будет лучше всего.
В противном случае, если решение работает только для некоторых версий InstallShield, это будет шагом вперед. (Вероятно, можно было бы определить, какая версия InstallShield a setup.exe это глядя на ресурсы версии exe-файла.

Я обнаружил, что некоторые версии InstallShield поддерживают /b или же /extract_all, Однако нет никакого хорошего способа узнать, просто запустить exe-файл и надеяться, что он будет извлекаться и завершаться по порядку, а не отображать диалоги GUI, не кажется хорошим решением. Поэтому я ищу более стабильный путь.
Идеи приветствуются.

5 ответов

Решение

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

На основе MSI (может не привести к пригодному для использования образу для установки InstallScript MSI):

  • setup.exe /a /s /v"/qn TARGETDIR=\"choose-a-location\""

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

  • setup.exe /a"choose-another-location" /s /v"/qn TARGETDIR=\"choose-a-location\""

На основе InstallScript:

  • setup.exe /s /extract_all

Набор на основе (может быть не очевидно, как установить получившиеся файлы):

  • setup.exe /silent /stage_only ISRootStagePath="choose-a-location"

http://www.compdigitec.com/labs/files/isxunpack.exe

Использование: isxunpack.exe yourinstallshield.exe

Он будет извлечен в той же папке.

На линуксе есть unshield, который работал хорошо для меня (даже если графический интерфейс пользователя включает в себя пользовательские средства сдерживания, такие как запросы лицензионного ключа). Он включен в репозитории всех основных дистрибутивов (arch, suse, на основе debian и fedora), а его источник доступен по адресу https://github.com/twogood/unshield

Начните с:

setup.exe /?

И вы должны увидеть всплывающее диалоговое окно с некоторыми параметрами.

Бесплатная программа с открытым исходным кодом, называемая cabextract, будет перечислять и извлекать содержимое не только.cab-файлов, но и архивов Macrovision:

% cabextract /tmp/QLWREL.EXE
Extracting cabinet: /tmp/QLWREL.EXE
  extracting ikernel.dll
  extracting IsProBENT.tlb
  ....
  extracting IScript.dll
  extracting iKernel.rgs

All done, no errors.
Другие вопросы по тегам