.exe不是Windows XP上的有效Win32应用程序

时间:2013-05-09 06:34:54

标签: vb.net visual-studio-2012 windows-xp

我使用Visual Studio 2012 Professional并使用高级安装程序(第三方)创建安装程序。

当我在Windows XP上运行已安装的.exe时,收到以下消息:

  

< appName> .exe不是有效的Win32应用程序。

安装的可执行文件在Windows 7和Windows 8上都能正常运行。

如何让程序在Windows XP上运行?

3 个答案:

答案 0 :(得分:16)

从Visual Studio命令提示符中,运行以下命令:

 Dumpbin.exe /headers c:\where\you\put\it\setup.exe

其中“setup.exe”是安装程序创建者创建的安装程序EXE。我将发布您认为重要的信息示例:

OPTIONAL HEADER VALUES
             10B magic # (PE32)
            ...
            4.00 operating system version
            0.00 image version
            6.00 subsystem version              // <=== here!!
               0 Win32 version
            ...

子系统版本号很重要。 VS2012是Visual Studio的第一个版本,它开始将此值设置为6.00(Vista的版本号)。以.NET24或更早版本为目标的早期版本以及VS2012将此版本号设置为4.00

这是另一项重要举措,也是逐步取消对XP的支持的一部分。 Windows 6.00及更高版本,Vista,Win7和Win8都注意这个数字。他们会假设您的程序不知道以后的Windows功能,并且需要打开几个appcompat填充程序。最值得注意的是Aero中的appcompat,桌面主题显示带有胖边框的窗口,用鼠标轻松点击。 Windows将围绕这些边界,告诉你窗口比实际小。对于试图使窗口相互对齐的程序员来说,这是一个很大的困惑。

显示6.00显示的结果是您的安装程序无法再在XP上运行。它是5.02版本。

因此,请确保首先执行目标.NET版本4.5,它不适用于XP。请改用4.0。如果仍有问题,请联系供应商的支持人员,并询问他们如何在该工具创建的setup.exe文件中控制该编号。解决方法是使用/ SUBSYSTEM选项运行Editbin.exe以更改数字。

答案 1 :(得分:0)

我是Visual Studio的新手,所以我不确定是否添加了以下选项 最近但Visual Studio 2013具有向后兼容性选项以进行合并 目标列表中的Win_XP。下图有助于:

Visual Studio Configuration


然后当我运行dumpbin命令时,我得到了以下结果。

enter image description here


所以现在应用程序在正常情况下可以在Windows XP中运行。
希望这有用。

答案 2 :(得分:0)

实际上.NET 4.5框架仅生成 Window 6.0或更高版本兼容 EXE 。在您的情况下, XP属于Windows 5.0版 therofre,则出现此错误。 T

一个简单的解决方案是针对您的问题,目标是.NET 4.0或更低版本。

Thanks to Hans Passant