配置:Windows server 2008 x64。
软件是跨平台的c ++ 64bit。
之前的安装程序默认要求用户安装到
c:\ Program Files(x86)\ company \ version
对于上一个版本,我使用路径覆盖更改了安装程序以安装到
c:\ Program Files \ company \ version
对我们进行测试的人表示,对c:\ Program Files \ sub进程的新安装无法启动。覆盖安装到c:\ Program Files(x86)\ xxx一切正常。转到cmd.exe并从C:\ Program Files \ xxx运行会出现“yyy.exe不是有效的Win32应用程序”错误。同样,这不是c:\ Program Files(x86)的问题。
客户也安装到默认位置并获得相同的错误。
我的build / dev机器没有显示任何这些错误。它运行的服务器2008(和visual studio express)的演示版本永远不会更新,也永远不会重新启动。
在程序文件中添加“x86”有什么特别之处吗?
注:
这在我的开发机器上也不是问题,也是服务器2008 x86_64。
dumbin / headers清楚地表明这些程序是64位。
此时没有答案。 解决方法是只安装到Program Files(x86)或其他地方并完成它。将放入用户不应安装到Program Files的常见问题解答(如果内核发生核,他们会查看常见问题解答)。
这可能是安装程序的问题,它可能是“quack.exe”的经典案例,但应用于“程序文件”。我一般都讨厌窗户,这是有充分理由的。
答案 0 :(得分:4)
Program Files(x86)目录是安装32位程序的地方。当32位应用程序运行时,%ProgramFiles%环境变量为set到C:\ Program Files(x86)\(默认情况下;这实际上可能位于不同的驱动器上)。
您是否完全确定此程序是否正在编译为64位?
答案 1 :(得分:1)
也许exe在某个特定配置中以某种方式找到32位的dll?例如。当sb设法用32位dll弄乱他的64位目录时。
请记住,启动时也不会加载loadlibrared dll。
答案 2 :(得分:0)
我认为这与应用程序的清单有关。你以某种方式改变了吗?当我在编译器之间来回切换时,我得到了同样的错误。 vc9(vs2008)创建了一个清单,我们在.net 2003上编译时通常不会使用它。