最近打包公司的一个项目为安装包, 因为里面牵涉的库太多太复杂, 而且还有牵涉到有关win系统不同版本下的版本库的问题,着实让人恶心,现将过程中遇到的问题简单的记录下。
打包我用inno setup , 感觉用起来挺简单的, 新建工程后 ,按照提示一步步来, 设置打包过程中包的名称、版本、包含目录什么的, 这个网上的教程一大把, 我只讲我遇到的问题。在添加文件夹和文件到打包文件后, ctrl + f9编译得到安装文件, 执行安装文件后, 发现安装到本地的目录和开发环境中的项目目录不一致, 之前通过inno setup添加的文件夹在安装包的本地安装目录下都没有了, 后来我卡了下inno setup 当前打包的iss文件, 在文件夹添加那一行有个“{app}” , 尝试下将“{app}” 改成"{app}\要添加的文件夹名字" , 之后所有的文件后面都这么处理, ctrl + f9重新编译后, 安装安装包, 在安装目录下, 文件夹总算都在了。
运行后发现在有些机器上会提示软件缺少dll , 所以刚开始只能dll一个个加入到软件打包目录下, 这不是办法, 于是找来了depends 和processMonitor ,前者可以列出exe、 dll文件所有的依赖包, 后者可以检测到正在运行的exe加载dll等其他依赖资源的过程, 大多版本的depends在win7系统下运行良好, 在win10系统下可能会卡死,这样的话你得找个支持win10的depends版本, 运行depends打开exe或者dll可能会卡, 你需要等待,后面大多都会列出目标文件所有的依赖库文件。
processMonitor使用起来也还好, 你需要设置filter过滤条件才能找到你想要的数据, 有些exe加载dll有问题的话, result那列会提示NAME NOT FOUND 或者PATH NOT FOUND, 挑出来找到后复制到exe对应的打包目录下面即可,比较懒,不写了。