Windows应用程序WinSXS部署问题小结
2012-02-17 21:43
267 查看
在开发机器上跑得好好的程序,一拷贝到别人的机器上,经常无法启动,提示:
“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”
出现这个问题的原因是应用程序使用了Windows的WinSXS机制。程序依赖的某些系统dll(c运行库、MFC),按照不同的系统架构(x86,amd64)发行方式(debug\release)、发布版本(50608\50727等),分文件夹存放在windows/winsxs目录下。如果应用程序需要的某个dll,无法在待安装的机器上找到,就会报出上面的错误。
随安装程序附带所需的dll,或者使用静态链接,可能可以解决这个问题。这里列一些不好修改应用程序时的解决办法。
首先需要取得应用程序的manifest清单文件。这个清单文件记录了程序依赖的系统动态链接库的名称和版本号。如果程序选择不嵌入清单文件,则这个文件就在应用程序目录下,文件名为“应用程序名称.exe.manifest”。否则需要使用mt.exe或者resource hacker从应用程序里解出这个文件。
这个文件其实是个xml文件,里有一些depend段,每个段对应一个dll依赖。根据depend段的描述,从开发机器的winsxs目录拷出相应的dll版本文件夹到目标机器上。注意winsxs目录下有一个Manifest目录,里面有一些dll自己的manifest文件,也需要拷贝到目标机器上。有时某个dll在开发机器上都找不到,可以删除掉对应的depend段试试。
如果做完这些,应用程序在目标机器上还是跑不起来。可以把dll和manifest文件拷贝到应用程序目录下,把manifest改成规范些的名称,例如vc2005的release版c运行库,manifest改名为“Microsoft.VC80.CRT.MANIFEST”再试试。
如果以上办法都不奏效,可以用ProcessMonitor这个工具,监视一下应用程序启动时尝试打开了哪些文件,例如在ProcessMonitor里搜索manifest里dll库的版本号,看看应用程序自己是用什么路径、什么文件名来尝试打开dll的。把manifest文件放到这些路径下,改成对应名称,没准就可以运行了。
“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”
出现这个问题的原因是应用程序使用了Windows的WinSXS机制。程序依赖的某些系统dll(c运行库、MFC),按照不同的系统架构(x86,amd64)发行方式(debug\release)、发布版本(50608\50727等),分文件夹存放在windows/winsxs目录下。如果应用程序需要的某个dll,无法在待安装的机器上找到,就会报出上面的错误。
随安装程序附带所需的dll,或者使用静态链接,可能可以解决这个问题。这里列一些不好修改应用程序时的解决办法。
首先需要取得应用程序的manifest清单文件。这个清单文件记录了程序依赖的系统动态链接库的名称和版本号。如果程序选择不嵌入清单文件,则这个文件就在应用程序目录下,文件名为“应用程序名称.exe.manifest”。否则需要使用mt.exe或者resource hacker从应用程序里解出这个文件。
这个文件其实是个xml文件,里有一些depend段,每个段对应一个dll依赖。根据depend段的描述,从开发机器的winsxs目录拷出相应的dll版本文件夹到目标机器上。注意winsxs目录下有一个Manifest目录,里面有一些dll自己的manifest文件,也需要拷贝到目标机器上。有时某个dll在开发机器上都找不到,可以删除掉对应的depend段试试。
如果做完这些,应用程序在目标机器上还是跑不起来。可以把dll和manifest文件拷贝到应用程序目录下,把manifest改成规范些的名称,例如vc2005的release版c运行库,manifest改名为“Microsoft.VC80.CRT.MANIFEST”再试试。
如果以上办法都不奏效,可以用ProcessMonitor这个工具,监视一下应用程序启动时尝试打开了哪些文件,例如在ProcessMonitor里搜索manifest里dll库的版本号,看看应用程序自己是用什么路径、什么文件名来尝试打开dll的。把manifest文件放到这些路径下,改成对应名称,没准就可以运行了。
相关文章推荐
- windows应用程序(winform窗体程序)安装部署中自定义操作出现的问题
- 32位asp.net应用程序在64位Windows上运行时的问题一例
- windows server2012部署Cognos问题小结
- django 部署遇到的一些小问题和经验小结
- windows 8的应用程序协议问题
- Weblogic服务器上部署J2EE应用程序小结
- windows 7 安装 PetShop 4.0 问题小结
- [Windows应用程序]不同页面的数据同步问题
- windows应用程序开发系列四:宽字符问题详解
- 教你如何清理Windows 7 winsxs变大的问题
- .NET 2003 Windows 应用程序部署
- 【续集】在 IIS 中部署 ASP.NET 5 应用程序遭遇的问题
- 在Windows平台用visual studio编译的可执行文件部署时报:应用程序无法正常启动0xc000007b(跟DirectX9无关的原因)
- Qt 5.x 应用程序 Windows 部署方法
- windows 2008 R2 组策略部署打印机问题
- 应用程序配置不正确,程序无法启动的问题小结
- Git在Windows下搭建本地远程仓库及一些问题小结
- 排查在 Azure 中新建 Windows VM 时遇到的部署问题
- 在HP-Unix上部署J2EE应用程序的小结
- 关于在部署KMS过程中的一些问题和总结(windows 7)