The case of Trac installation won’t run
2010-02-07 16:50 atempcode 阅读(408) 评论(0) 编辑 收藏 举报在刚创建的虚拟机上安装 Trac-0.11.6.win32.exe, 发生错误:
看到这熟悉的不知所云的错误信息就知道, 肯定是缺了哪个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 已经是静态链接了.