7
votes

Tous les outils disponibles pour emballer des exécutables 32bits / 64 bits ensemble?

J'aime vraiment la manière dont les utilitaires Sysinternals (E.G. Process Explorer) gérer la compatibilité 64 bits. Il semble que l'exécutable 32 bits ait la version 64 bits intégrée et l'extrait si nécessaire.

Je voudrais un outil qui l'automatise - c'est-à-dire de prendre des exécutables de 32 bits et de 64 bits, les emporte en quelque sorte et insère le code de stub pour lancer le bon exécutable selon lequel la plate-forme est exécutée.

Avant de commencer à rouler le mien, quelqu'un sait-il de quelque chose comme celui-ci qui existe déjà?


1 commentaires

Personne n'a été capable d'identifier un outil d'emballage qui le fera, alors j'ai accepté la réponse que j'ai trouvée la plus utile.


5 Réponses :


4
votes

Ceci semble avoir déjà été couvert (bien que ce soit assez peu profond de détail) dans ...

rouleau Versions de 64 bits et 32 ​​bits d'une application dans le même binaire?


1 commentaires

Déranger - n'a pas trouvé ce post quand j'ai cherché. Pourtant, cela ne répond pas vraiment à ma question - modifié mon titre pour le rendre plus clair.



2
votes

Pas un outil, mais il semble assez facile d'intégrer vos exécutables dans un projet VC ++ en tant que ressources et exécutez-la après vérification de l'environnement OS.

Utilisez la fonction ISWOW64Process pour détecter 32 ou 64 bits, et voici une belle écriture, y compris le code source sur la manière d'intégrer les exécutables: http://www.codeproject.com/kb/winsdk/binarinresources.aspx .


0 commentaires

2
votes

Bien que cela soit possible, je considérerais cela une mauvaise pratique car la plupart de ces applications (E.G. Process Explorer) extrait ce fichier dans le répertoire de travail. Si vous aimez mettre des programmes dans le dossier "Fichiers de programme", cela s'afframe avec ce répertoire en lecture seule.

Pour moi, il semble tout simplement plus facile d'avoir deux programmes séparés et de créer un raccourci juste au fichier X86. Si cette version détecte 64 bits, il doit simplement lancer un fichier X64.

Si vous avez vraiment une bonne raison de combiner ces deux deux, que cela l'aime comme une ressource ressemble à un chemin correct.


0 commentaires

2
votes

Mark Russinovich de Sysinternals La gloire décrit leur méthode Ici . Ils incorporent une image X64 dans une image X86. Malheureusement, au-dessus de la publication de blog n'est pas réellement en détail, mais mentionne que leur technique est basée sur un article très ancien trouvé ici .


0 commentaires

0
votes

Voici un guide pour compiler un AutoIt script qui fait le travail, bien que vous ne contrôlez aucun contrôle sur la fonctionnalité du lanceur d'emballage et de stub.

Je reproduisez le script AutoIt ici au cas où le lien disparaît: P>

; Check if we’re on 64-bit OS…
If EnvGet(“PROCESSOR_ARCHITEW6432″)=”” Then
    ; No we’re not – run x86 version…
    FileInstall(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x86.exe”)
    RunWait(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x86.exe”)
    FileDelete(@TempDir & “\ETrustCheck_x86.exe”)
Else
    ; Yes we are – run x64 version..
    FileInstall(“D:\Support\ETrustCheck_x64.exe”,@TempDir & “\ETrustCheck_x64.exe”)
    RunWait(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x64.exe”)
    FileDelete(@TempDir & “\ETrustCheck_x64.exe”)
EndIf

; The END


0 commentaires