如何像交付软件一样交付测试工具?这份SoloX一键安装器实战指南给了满分答案
点击蓝字
关注我们
接上篇《移动端测试提效:把SoloX打包成一键安装器,团队直接拿走用》,本篇我们将继续学习:
第五部分:执行打包
5.1 使用 spec 文件打包
确保你在项目根目录下,并且虚拟环境已激活:
pyinstaller SoloX安装器.spec
打包过程输出:

5.2 打包输出目录结构
打包完成后,会生成以下目录:
solox-installer/├── build/ # 构建临时文件(可删除)│ └── SoloX安装器/├── dist/ # 最终输出目录│ └── SoloX安装器.exe # 可执行文件

5.3 验证打包结果
在`dist`目录下找到`SoloX安装器.exe`,双击运行测试,此时会:
1.弹出命令行窗口
自动执行 4 个步骤:
[1/4] 检查 Python → 没有就提示下载安装
[2/4] 检查 ADB → 自动配置(已打包在 exe 里)
[3/4] 安装 SoloX → 用 pip 从网上下载安装
[4/4] 启动 SoloX → 运行性能测试服务

2.最终结果:

我们可以:打开浏览器访问 http://172.25.16.1:50003 使用 SoloX

5.4 创建自动化打包脚本(可选)
为了简化打包流程,可以创建 `build_exe.py`:
"""自动化打包脚本"""import osimport subprocessimport shutildef clean_build():"""清理旧的构建文件"""dirs_to_clean = ['build', 'dist']for dir_name in dirs_to_clean:if os.path.exists(dir_name):print(f"清理 {dir_name} 目录...")shutil.rmtree(dir_name)def check_dependencies():"""检查依赖文件"""ifnot os.path.exists('release/adb'):print("警告: 未找到 release/adb 文件夹")print("请确保 ADB 工具已放置在正确位置")response = input("是否继续打包? (y/n): ")if response.lower() != 'y':return Falsereturn Truedef build():"""执行打包"""print("开始打包 SoloX 安装器...")cmd = ['pyinstaller', 'SoloX安装器.spec']try:subprocess.run(cmd, check=True)print("\n✓ 打包成功!")print(f"输出文件: dist/SoloX安装器.exe")return Trueexcept subprocess.CalledProcessError:print("\n✗ 打包失败")return Falsedef main():print("=" * 50)print("SoloX 安装器打包工具")print("=" * 50)# 检查依赖ifnot check_dependencies():return# 询问是否清理response = input("\n是否清理旧的构建文件? (y/n): ")if response.lower() == 'y':clean_build()# 执行打包if build():print("\n打包完成!可以在 dist 目录找到生成的 exe 文件")else:print("\n打包失败,请检查错误信息")if __name__ == "__main__":main()
使用方法:
python build_exe.py

第六部分:常见问题与解决方案
6.1 问题:找不到模块
错误信息:
ModuleNotFoundError: No module named 'xxx'
解决方案:
在 spec 文件中添加隐藏导入:
a = Analysis(...hiddenimports=['urllib.request', 'pathlib'],...)
6.2 问题:打包后文件过大
原因:
PyInstaller 会打包所有依赖,包括不需要的模块。
解决方案:
1. 使用虚拟环境,只安装必要的包
2. 在 spec 文件中排除不需要的模块:
a = Analysis(...excludes=['tkinter', 'matplotlib', 'numpy'],...)
3. 启用 UPX 压缩:
exe = EXE(...upx=True,...)
6.3 问题:ADB 文件未打包
症状:
运行 exe 时提示找不到 ADB。
排查步骤:
1. 检查 spec 文件中的 datas 配置是否正确
2. 确认 release/adb 目录存在且包含必要文件
3. 重新打包并检查 build 日志
验证方法:
解压 exe 文件(使用 7-Zip 等工具),检查是否包含 adb 文件夹。
6.4 问题:sys.executable 指向错误
症状:
打包后程序调用 pip 时出现死循环或错误。
解决方案:
使用本文提供的 `get_system_python()` 函数,而不是直接使用 `sys.executable`。
6.5 问题:杀毒软件误报
原因:
PyInstaller 打包的程序可能被杀毒软件误判为病毒。
解决方案:
1. 使用代码签名证书对 exe 进行签名
2. 向杀毒软件厂商提交白名单申请
3. 在 spec 文件中添加版本信息:
exe = EXE(...version='version_info.txt',...)
创建 `version_info.txt`:
VSVersionInfo(ffi=FixedFileInfo(filevers=(1, 0, 0, 0),prodvers=(1, 0, 0, 0),mask=0x3f,flags=0x0,OS=0x40004,fileType=0x1,subtype=0x0,date=(0, 0)),kids=[StringFileInfo([StringTable(u'040904B0',[StringStruct(u'CompanyName', u'Your Company'),StringStruct(u'FileDescription', u'SoloX Installer'),StringStruct(u'FileVersion', u'1.0.0.0'),StringStruct(u'ProductName', u'SoloX Installer'),StringStruct(u'ProductVersion', u'1.0.0.0')])]),VarFileInfo([VarStruct(u'Translation', [1033, 1200])])])
6.6 问题:打包后启动慢
原因:
单文件模式需要解压到临时目录。
解决方案:
1. 改用多文件模式(onedir)
2. 减少打包的文件数量
3. 使用 SSD 硬盘
第七部分:优化与进阶
7.1 添加图标
为 exe 文件添加自定义图标:
exe = EXE(...icon='icon.ico', # 图标文件路径...)
图标要求:
● 格式:.ico
● 推荐尺寸:256×256 或 128×128
7.2 隐藏控制台窗口
如果你的程序有 GUI 界面,可以隐藏控制台:
exe = EXE(...console=False, # 隐藏控制台...)
注意:隐藏控制台后,print 输出将不可见,需要使用日志文件或 GUI 显示信息。
7.3 添加启动画面
对于启动较慢的程序,可以添加启动画面:
exe = EXE(...splash='splash.png', # 启动画面图片...)
7.4 多平台打包
PyInstaller 不支持交叉编译,需要在目标平台上打包:
● Windows exe:在 Windows 上打包
● macOS app:在 macOS 上打包
● Linux 可执行文件:在 Linux 上打包
跨平台代码示例:
import sysimport platformdef get_platform_specific_path():if sys.platform == 'win32':return'C:\\Program Files\\MyApp'elif sys.platform == 'darwin':return'/Applications/MyApp'else:return'/usr/local/bin/myapp'
7.5 自动更新机制
为安装器添加版本检查和自动更新功能:
import requestsdef check_update():"""检查是否有新版本"""current_version = "1.0.0"update_url = "https://api.example.com/version"try:response = requests.get(update_url, timeout=5)latest_version = response.json()['version']if latest_version > current_version:print(f"发现新版本: {latest_version}")return Trueexcept Exception as e:print(f"检查更新失败: {e}")return False
第八部分:发布与分发
8.1 测试清单
在发布前,请完成以下测试:
● [ ] 在干净的 Windows 系统上测试(无 Python 环境)
● [ ] 测试所有功能是否正常
● [ ] 检查 ADB 工具是否可用
● [ ] 测试异常情况处理(如网络断开)
● [ ] 检查文件大小是否合理
● [ ] 使用杀毒软件扫描
8.2 创建发布包
创建一个完整的发布包:
SoloX-Installer-v1.0/├── SoloX安装器.exe├── 使用说明.txt└── README.md
使用说明.txt 示例:
========================================SoloX 一键安装器 v1.0========================================【功能说明】本程序将自动完成以下操作:1. 检测并安装 Python 环境2. 配置 ADB 调试工具3. 安装 SoloX 性能测试工具4. 启动 SoloX 服务【使用方法】1. 双击运行"SoloX安装器.exe"2. 按照提示完成安装3. 等待 SoloX 服务启动4. 在浏览器中访问 http://localhost:50003【系统要求】- 操作系统:Windows 10/11 (64位)- 磁盘空间:至少 500MB- 网络连接:需要联网下载依赖【常见问题】Q: 安装失败怎么办?A: 请检查网络连接,或尝试使用管理员权限运行Q: 如何卸载?A: 运行命令:pip uninstall solox
8.3 压缩与分发
使用 7-Zip 或 WinRAR 压缩发布包:
# 创建 ZIP 压缩包7z a SoloX-Installer-v1.0.zip SoloX-Installer-v1.0/
8.4 发布渠道
推荐的发布渠道:
1. GitHub Releases
● 创建 Release
● 上传 exe 文件和说明文档
● 添加版本说明
2. 网盘分享
● 百度网盘
● 阿里云盘
● 蓝奏云
3. 官方网站
● 提供下载链接
● 添加使用教程
第九部分:完整工作流程总结
9.1 开发阶段
# 1. 创建项目目录mkdir solox-installercd solox-installer# 2. 创建虚拟环境python -m venv venvvenv\Scripts\activate# 3. 安装依赖pip install pyinstaller# 4. 编写代码# 创建 solox_installer.py# 5. 准备外部文件# 下载 ADB 工具到 release/adb/# 6. 测试程序python solox_installer.py
9.2 打包阶段
# 1. 生成 spec 文件pyi-makespec solox_installer.py# 2. 修改 spec 文件# 添加 datas=[('release/adb', 'adb')]# 3. 执行打包pyinstaller SoloX安装器.spec# 4. 测试 execd distSoloX安装器.exe
9.3 发布阶段
# 1. 创建发布目录mkdir release_packagecopy dist\SoloX安装器.exe release_package\copy 使用说明.txt release_package\# 2. 压缩打包7z a SoloX-Installer-v1.0.zip release_package\# 3. 上传发布# 上传到 GitHub Releases 或其他平台
第十部分:实战技巧与最佳实践
10.1 开发技巧
1. 使用虚拟环境
● 避免打包不必要的依赖
● 保持环境干净
2. 模块化设计
● 将功能拆分成独立函数
● 便于测试和维护
3. 日志记录
import logginglogging.basicConfig(filename='installer.log',level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s')
4. 配置文件
● 使用 JSON 或 INI 文件存储配置
● 便于修改而无需重新打包
10.2 打包优化
1. 减小文件体积
# 排除不需要的模块excludes=['tkinter', 'test', 'unittest']# 启用 UPX 压缩upx=True
2. 加快启动速度
● 使用多文件模式(onedir)
● 延迟导入大型模块
3. 提高兼容性
● 在较旧的 Windows 版本上打包
● 避免使用最新的 Python 特性
10.3 安全建议
1. 代码混淆
● PyInstaller 打包的程序可以被反编译
● 敏感信息不要硬编码在代码中
2. 权限控制
● 尽量不要求管理员权限
● 使用用户目录存储数据
3. 网络安全
● 使用 HTTPS 下载文件
● 验证下载文件的完整性
……
本文节选自第八十八期《51测试天地》
原创文章
《移动端性能测试工具分发实战:用PyInstaller打造SoloX一键安装器》
文章后续为大家详细讲解了:
用户体验优化、进一步学习资料等。
想继续阅读全文
或查看更多《51测试天地》的原创文章
请点击下方 阅读原文或扫描二维码 查看

声明:本文为51Testing软件测试网 blues_C 用户投稿内容,该用户投稿时已经承诺独立承担涉及知识产权的相关法律责任,并且已经向51Testing承诺此文并无抄袭内容。发布本文的用途仅仅为学习交流,不做任何商用,未经授权请勿转载,否则作者和51Testing有权追究责任。如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:editor@51testing.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

夜雨聆风