最近有一个小项目,有如下的需求:
- 将某几个源码文件夹进行打包,文件夹内有py文件、dll文件、exe文件等各种文件类型
- 打包生成的安装包,在进行安装的时候,应该能够带有参数,对配置文件进行修改配置
- 安装过程中,可以配置系统环境变量
- 能够检测环境,提示安装依赖包
- 整个过程要可以自动化,能够大量部署
综合考虑后,决定以下几个步骤完成:
- 用setup.py将源码文件夹都打包成msi安装包,这样可以使用msiexec进行静默安装
- setup.py可以提示用户安装依赖包,否则安装失败
- 再编写一个py文件,用来静默安装msi安装包,并配置系统环境变量,接受安装参数去修改配置文件的属性
- 最后使用pyinstaller将所有都打包成exe文件
先来编写setup.py文件:
# coding=utf-8
from distutils.core import setup
import os
def get_all_dir(path):
"""
获取指定路径下的所有文件
"""
all_file = []
for dirpath, dirnames, filenames in os.walk(path):
for filename in filenames:
all_file.append(dirpath)
return all_file
if __name__ == '__main__':
all_file = get_all_dir('A') + get_all_dir('B') # 获取相对路径下A和B两个文件夹下的所有文件
setup(name='Example', # 所要安装的软件名
version="1.0", # 版本
description="This is example", # 对所安装软件的描述
author="author", # 作者
author_email='my email', # 邮箱
packages=all_file, # 要打包的文件
package_data={'': ['*.*']}, # 所有文件类型都打包
classifiers=[
'Development Status :: 5 - Production/Stable',
'Operating System :: Microsoft :: Windows',