我使用Visual Studio 2012 Professional并使用高级安装程序(第三方)创建安装程序。
当我在Windows XP上运行已安装的.exe时,收到以下消息:
< appName> .exe不是有效的Win32应用程序。
安装的可执行文件在Windows 7和Windows 8上都能正常运行。
如何让程序在Windows XP上运行?
答案 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。下图有助于:
然后当我运行dumpbin
命令时,我得到了以下结果。
所以现在应用程序在正常情况下可以在Windows XP中运行。
希望这有用。
答案 2 :(得分:0)
实际上.NET 4.5框架仅生成 Window 6.0或更高版本兼容 EXE 。在您的情况下, XP属于Windows 5.0版 therofre,则出现此错误。 T
一个简单的解决方案是针对您的问题,目标是.NET 4.0或更低版本。