web-dev-qa-db-fra.com

Extraire par programme le contenu de InstallShield setup.exe

J'essaie d'extraire le contenu du fichier d'un fichier setup.exe InstallShield. (Mon plan est de l'utiliser dans un outil de back-office, donc cela doit être fait par programme sans aucune interaction avec l'utilisateur.)

Est-ce possible?
(Les recherches initiales semblent indiquer que cela échouera.)

S'il est possible d'avoir une solution générique, pour toutes les versions récentes d'InstallShield, ce serait mieux.
Sinon, si une solution ne fonctionne que pour certaines versions d'InstallShield, ce serait une étape sur le chemin. (Il serait probablement possible de déduire quelle version InstallShield un setup.exe est en regardant les ressources de version du fichier exe.

I a constaté que certaines versions d'InstallShield prennent en charge /b ou /extract_all. Cependant, il n'y a pas de bon moyen de le savoir, il suffit de lancer l'exe et d'espérer qu'il s'extrait et se termine de manière ordonnée plutôt qu'afficher les boîtes de dialogue de l'interface graphique ne semble pas être une bonne solution. Je recherche donc une voie plus stable.
Idées bienvenues.

22
leiflundgren

Il n'y a pas de moyen pris en charge pour ce faire, mais n'aurez-vous pas à examiner les fichiers liés à chaque programme d'installation pour savoir comment les installer réellement après les avoir extraits? En supposant que vous puissiez passer du temps à déterminer quelle ligne de commande s'applique, voici quelques paramètres candidats qui vous permettent normalement d'extraire une installation.

Basé sur MSI (peut ne pas produire une image utilisable pour une installation InstallScript MSI):

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

    ou, pour extraire également les prérequis (pour les versions où cela fonctionne),

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

Basé sur InstallScript:

  • setup.exe /s /extract_all

Basé sur la suite (il peut ne pas être évident de savoir comment installer les fichiers résultants):

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

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

Utilisation: isxunpack.exe yourinstallshield.exe

Il sera extrait dans le même dossier.

11
Motes

Sous Linux, il y a unshield, qui a bien fonctionné pour moi (même si l'interface graphique comprend des moyens de dissuasion personnalisés comme les invites de clé de licence). Il est inclus dans les référentiels de toutes les principales distributions (basées sur Arch, suse, Debian et Fedora) et sa source est disponible sur https://github.com/twogood/unshield

5
stefanct

Commencer avec:

setup.exe /?

Et vous devriez voir une fenêtre de dialogue avec quelques options affichées.

4
Garen

Le programme gratuit et open-source appelé cabextract listera et extraira le contenu non seulement des fichiers .cab, mais aussi des archives de 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.
1
Mikhail T.