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

Rah*_*ule 9 vb.net windows-xp visual-studio-2012

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

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

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

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

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

Han*_*ant 16

从Visual Studio命令提示符,运行此命令:

 Dumpbin.exe /headers c:\where\you\put\it\setup.exe
Run Code Online (Sandbox Code Playgroud)

"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
            ...
Run Code Online (Sandbox Code Playgroud)

子系统版本号很重要.VS2012是Visual Studio的第一个版本,它开始将此值设置为6.00(Vista的版本号).以旧版本以及针对.NET 4.0或更早版本的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以更改数字.