10

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

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

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

安装的可执行文件在 Windows 7 和 8 上都可以正常工作。

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

4

3 回答 3

17

在 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 来更改数字。

于 2013-05-09T10:51:54.327 回答
0

我对 Visual Studio 很陌生,所以我不确定最近是否添加了以下选项,但 Visual Studio 2013 有一个向后兼容选项,可以将 Win_XP 合并到目标列表中。下图有帮助:

Visual Studio 配置


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

在此处输入图像描述


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

于 2015-06-26T07:30:43.747 回答
0

实际上 .NET 4.5 框架只生成Window 6.0 或更高版本兼容的 EXE。在您的情况下,XP 属于 Windows 5.0版,您会收到此错误。吨

解决您的问题的简单方法是,目标是 .NET 4.0 或更低版本。

感谢汉斯·帕桑特

于 2018-10-03T04:46:14.460 回答