代码改变世界

The case of Trac installation won’t run

2010-02-07 16:50  atempcode  阅读(392)  评论(0编辑  收藏  举报

在刚创建的虚拟机上安装 Trac-0.11.6.win32.exe, 发生错误:

trac1

看到这熟悉的不知所云的错误信息就知道, 肯定是缺了哪个DLL. 用Depends一看,果然不出所料, 这个安装程序依赖于msvcr90.dll, version 9.0.30729.4148.

稍微看了一下Python里distutils的打包原理, 它打包出的Windows安装程序实际上是由3部分组成: bdist_wininst stub, 配置文件和所需Python文件的压缩包. bdist_wininst stub 是一个win32程序, 负责解压出后面两部分, 然后执行安装. 在制作安装包时, 有脚本或者把配置文件和压缩包加到bdist_wininst stub 的末尾. 以前在一个项目里也做过类似的事情, 不过要安装的文件我们是放到resource section, 而不是文件的末尾.

要解决这个问题就很简单了, 把bdist_wininst stub 改成运行时静态链接, 编译后重新打包就可以了. PS 在Python2.6.2 后bdist_wininst stub 已经是静态链接了.