【问题标题】:IExpress.exe on Windows 10 is producing an EXE incompatible with Windows XPWindows 10 上的 IExpress.exe 正在生成与 Windows XP 不兼容的 EXE
【发布时间】:2016-07-12 01:03:02
【问题描述】:

类似于this issue

多年来,我一直在使用 IExpress(Windows 随附)将我的引导程序 EXE 和 .NET 应用程序 MSI 打包成一个自解压安装程序文件。 (我的应用是32位的,所以我使用了%windir%/SysWOW64中的iexpress.exe版本)

我最近从 Windows 8.1 迁移到了 Windows 10。

在不更改任何代码的情况下,在 Windows 10 上使用 IExpress 会导致 EXE 无法在 Windows XP 上运行(获取“[FileName].exe 不是有效的 Win32 应用程序”).

在 Windows 8.1、8 或 7 上使用 IExpress,效果很好。

任何人都可以阐明或提供解决方案吗?

(我尝试将 iexpress.exe 从 Windows 8(文件版本 11.0.9600.17416)复制到 Windows 10 并使用它,但同样的事情发生了。)

【问题讨论】:

  • 我无法在我的 Windows 10 机器上重现该问题(从 Windows 10 的 %windir%\SysWOW64 构建)。你有一个可复制的 exe 或有帮助的东西吗?

标签: .net windows-xp windows-10 compatibility iexpress


【解决方案1】:

是的,另一个提醒,XP 真的结束了。当我在 IExpress 生成的 EXE 文件上运行 dumpbin.exe /headers 时,我看到:

  OPTIONAL HEADER VALUES
       ....
       10.00 operating system version
       10.00 image version
        6.00 subsystem version
       ....

子系统版本号是第一个show-stopper,6.00是Vista的版本号。这是可修复的,您可以运行Editbin.exe 使用 /SUBSYSTEM 选项更改它,XP 是 5.01

操作系统和映像版本是更大的问题,无法使用 Editbin.exe 解决。实际上不确定 XP 对其价值给予了多少关注,获得 10.00 是非常新的。我没有XP的机器了,试试吧。

复制旧版本的 IExpress.exe 是不够的。它使用 c:\windows\syswow64\makecab.exe 来实际完成工作。我看到一些粗略的证据表明它是 EXE 标头内容的实际来源。不要一味地把那个EXE复制到windows目录下,那样太冒险了。保持分开。

解决此问题的明智方法是保留 XP 的可引导副本,无论是在自己的机器上还是在 VM 上。无论如何,您都需要它来解决特定于 XP 的客户问题。支付仍然必须支持 XP 给客户的麻烦,他们往往会更快地做明智和必要的事情。帮不了你。

【讨论】:

  • 感谢您的信息 - 我从来不知道 dumpbin.exe。不幸的是,强制更改子系统版本不起作用 - 我收到消息“无法在动态链接库 msvcrt.dll 中找到过程入口点 _except_handler4_common”。并且试图减轻该错误会导致更多问题。我想我将不得不继续在 Windows 8 上构建 iexpress.exe 步骤,并考虑取消对我的应用程序未来版本的 XP 支持(无论如何我都热衷于这样做,因为 XP 支持正在阻止我回到 .NET 4.0)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 2019-12-08
相关资源
最近更新 更多