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

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

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

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

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

Ответ 1

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

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

  • 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

На основе Suite (может быть неясно, как установить результирующие файлы):

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

Ответ 3

Начните с:

setup.exe /?

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

Ответ 4

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

Ответ 5

В бесплатной и открытой исходной программе 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.