10
votes

.exe n'est pas une application Win32 valide sur Windows XP

J'utilise Visual Studio 2012 Professionnel et crée un installateur à l'aide d'un programme d'installation avancé (3ème partie).

Lorsque j'exécute l'installation sur Windows XP, je reçois le message suivant:

.exe n'est pas une application Win32 valide.

L'exécutable installé fonctionne bien sur les fenêtres 7 et 8.

Comment puis-je obtenir le programme de travailler sur Windows XP?


4 commentaires

C'est probablement la recherche de .NET 4.5 Cadre, qui n'est pas présent sur votre machine Win XP.


@Alexbell peut-être, ou ce pourrait être un problème d'architecture. Était-ce compilé comme x86 ou x64?


Si possible, vérifiez votre application pour utiliser NET Framework 4.0


@Adrian Je suis actuellement en train d'utiliser une architecture du processeur ...! Que devrais-je utiliser au lieu de tout CPU ...?


3 Réponses :


17
votes

à partir de l'invite de commande Visual Studio, exécutez cette commande: xxx

où "setup.exe" est l'exe de configuration créée par votre créateur d'installateur. Je posterai un exemple d'informations que vous voyez cela montre ici: xxx

Le numéro de version du sous-système est important. VS2012 est la première version de Visual Studio qui a commencé à définir cette valeur sur 6.00, le numéro de version de Vista. Versions précédentes, ainsi que VS2012 Lorsque vous cible .NET 4.0 ou antérieure, définira ce numéro de version sur 4.00

Ceci est sinon un acte important à l'avance et une partie de la prise en charge de l'élimination progressive du XP. Windows version 6.00 et UP, Vista, Win7 et Win8 font attention à ce numéro. Ils supposeront que votre programme n'est pas au courant des fonctionnalités ultérieures de Windows et doit avoir plusieurs cales AppCompat activées. Le plus remarquable est AppCompat dans Aero, le thème de bureau qui affiche Windows avec des frontières de graisse faciles à cliquer avec une souris. Windows mentira à propos de ces frontières, vous indiquant que votre fenêtre est plus petite que ce n'est en réalité. Une excellente source de confusion aux programmeurs qui tentent de faire de la gamme Windows les uns avec les autres.

La conséquence de la vue de 6.00 affichée est que votre programme d'installation ne peut plus s'exécuter sur XP. C'est la version 5.02.

Assurez-vous d'abord d'abord que vous faites pas cible .NET version 4.5, il n'est pas disponible pour XP. Utilisez 4.0 à la place. Si vous avez toujours des problèmes, contactez le support du fournisseur et demandez-leur comment contrôler ce numéro dans le fichier Setup.exe que l'outil crée. Une solution de contournement doit exécuter Editbin.exe avec l'option / Subsystem pour modifier le numéro.


1 commentaires

À l'aide de Windows Server 2012, j'ai trouvé que Editbin.exe est introuvable. Dans ma solution, en utilisant iexpress.exe (version system32), je emballe un installation install.msi à l'intérieur d'un setup.exe avec FramewordNet40. Bien que chaque DLL soit compilée avec x86, y compris l'Install.Msi, iExpress définit la machine sous la forme x64 (résultats des valeurs d'en-tête de fichier dans BUTTMBIN.EXE). Ce n'est que lorsque j'ai utilisé iExpress.exe sur une machine Win XP 32 bit a été capable de créer un setup.exe valide.



0
votes

Je suis assez nouveau à Visual Studio, donc je ne suis pas sûr que si l'option ci-dessous est ajoutée Récemment, mais Visual Studio 2013 a une option de compatibilité en arrière pour incorporer Win_xp dans la liste cible. L'image ci-dessous aide:

Configuration Visual Studio


et ensuite lorsque j'exécute la commande bolkbin , j'ai eu les résultats ci-dessous.

Entrez la description de l'image ici


Alors maintenant, l'application, dans des circonstances normales, peut être exécutée dans Windows XP.
J'espère que c'est utile.


1 commentaires

Merci, cela m'a aidé (construire un Tiny C EXE basé sur C). Peut-être que vous pourriez éditer votre réponse pour expliquer le réglage dans le texte, au cas où quelqu'un ne peut pas voir les images.



0
votes

En réalité .net 4.5 Framework génère uniquement Fenêtre 6.0 ou plus Version compatible EXE . Et dans votre cas XP appartient à Windows version 5.0 Therofre, vous obtenez cette erreur. T

La solution simple est à votre problème, cible .NET 4.0 ou moins.

Merci à Hans Passant


0 commentaires