Windows 10上的IExpress.exe生成的EXE与Windows XP不兼容

时间:2016-03-24 12:26:50

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

this issue类似。

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

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

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

在Windows 8.1,8或7上使用IExpress,它可以正常工作。

任何人都可以解决问题或提供解决方案吗?

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

1 个答案:

答案 0 :(得分:3)

是另一个提示,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目录中,这太冒险了。保持分开。

理所当然的另一种方法是在自己的机器或VM上保留XP的可启动副本。无论如何,您还需要它来解决特定于XP的客户问题。付出仍然不得不向客户支持XP的麻烦,他们倾向于更快地做明智和必要的事情。无法帮助你。