我正在使用 Visual Studio 2012 Professional 并使用高级安装程序(第 3 方)创建安装程序。
当我在 Windows XP 上运行已安装的 .exe 时,我收到以下消息:
<appName>.exe 不是有效的 Win32 应用程序。
安装的可执行文件在 Windows 7 和 8 上都可以正常工作。
如何让程序在 Windows XP 上运行?
我正在使用 Visual Studio 2012 Professional 并使用高级安装程序(第 3 方)创建安装程序。
当我在 Windows XP 上运行已安装的 .exe 时,我收到以下消息:
<appName>.exe 不是有效的 Win32 应用程序。
安装的可执行文件在 Windows 7 和 8 上都可以正常工作。
如何让程序在 Windows XP 上运行?
在 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 是第一个开始将此值设置为 6.00(Vista 的版本号)的 Visual Studio 版本。以前的版本,以及面向 .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 来更改数字。
我对 Visual Studio 很陌生,所以我不确定最近是否添加了以下选项,但 Visual Studio 2013 有一个向后兼容选项,可以将 Win_XP 合并到目标列表中。下图有帮助:
然后当我运行dumpbin
命令时,我得到了以下结果。
所以现在的应用程序,在正常情况下,可以在 Windows XP 中运行。
希望这会有所帮助。
实际上 .NET 4.5 框架只生成Window 6.0 或更高版本兼容的 EXE。在您的情况下,XP 属于 Windows 5.0版,您会收到此错误。吨
解决您的问题的简单方法是,目标是 .NET 4.0 或更低版本。