
问题是这样的:后台有小伙伴问,平时公司电脑是Mac,可不可以把【Chrome下载助手】移植到Mac电脑?
小编原本以为,既然在Windows上运行得好好的,代码逻辑和GUI界面都已经写好了,那移植到Mac不就是“换个平台打包”的事儿吗?开始移植后就被啪啪打脸了 😂
首先小编把源码在Mac电脑上打开,右击运行一下脚本,结果——白屏

询问AI后发现,tkinter这个模块在Mac上的兼容性并不友好。于是开始动手改

改完后界面是出来了,但……所有控件都被拉成了“大长条”,丑得我无法直视。这明显是布局管理器在Mac上对控件尺寸的处理逻辑不同导致的。再改一版!

这一版本,看起来终于“像那么回事”了

就在我觉得还可以的时候又发现,「下载ChromeDriver」页面的输入框又不见了🥹

输入框的问题非常复杂,测试过很多写法都不行,最后只能放弃tkinter改用Mac原生的对话框

就在我以为胜利在望时,新的坑又来了。
测试时又发现,输入ChromeDriver版本号后,链接不跳转。。。。。累了😩,毁灭吧!
排除了很多可能性后,发现是进程问题,又又又改了一版本
不过幸运的是的:虽然界面和逻辑调得我头大,但打包过程却异常顺利
小编这里选择了Mac原生支持最好的py2app(主要是小编被折磨够了,选择兼容和稳定性最优的吧)
当然我们以前使用的PyInstaller一样可以完成,而且跨Mac,Windows,linux三个平台都OK的
py2app执行安装模块命令
pip install py2app
创建并编写setup.py配置文件,其实和PyInstaller的spec文件类似
from setuptools import setup
# 打包入口Python文件(必须为列表形式)
APP = ['meihua_mac.py']
# 打包的额外数据文件(此程序无外部数据,为空)
DATA_FILES = []
# 打包的具体配置
OPTIONS = {
'argv_emulation': False, # 标准GUI应用,不处理命令行参数
'packages': ['requests', 'bs4'], # 包含的Python包
'plist': {
'CFBundleName': 'Chrome下载工具', # 程序名字
'CFBundleDisplayName': 'Chrome下载工具', # 在Dock、菜单栏、启动台显示程序的名字
'CFBundleVersion': '1.0.0', # 版本
'CFBundleIdentifier': 'com.dafei.chromedownloader', # 反向DNS格式:com.公司名.应用名
'NSHumanReadableCopyright': '© 2024 Chrome下载工具 BY DaFei', # 在"关于"窗口中显示的版权信息
},
'iconfile': None, # 程序图标
}
# 初始化函数
setup(
app=APP, # 指定主应用脚本
data_files=DATA_FILES, # 额外数据文件
options={'py2app': OPTIONS}, # py2app的配置选项
setup_requires=['py2app'], # 构建依赖
)
运行命令直接生成app程序(此程序可以直接在本机打开使用)
python3 setup.py py2app
但要让其他人可打开使用,需要打包成dmg格式
命令如下:
mkdir -p dmg_build && cp -r dist/Chrome下载工具.app dmg_build/ && ln -s /Applications dmg_build/Applications && hdiutil create -volname "Chrome下载工具" -srcfolder dmg_build -ov -format UDZO Chrome下载工具.dmg && rm -rf dmg_build
命令详细解释
开始
↓
mkdir -p dmg_build(创建临时目录)
↓
cp -r dist/app dmg_build/(复制应用)
↓
ln -s /Applications dmg_build/Applications(创建快捷方式)
↓
hdiutil create ...(打包成DMG)
↓
rm -rf dmg_build(清理临时文件)
↓
结束(得到Chrome下载工具.dmg)
成功生成dmg文件

我们双击打开dmg文件,拖动「Chrome下载工具」到「Applications」中即可

等待几秒钟,在Mac启动台中就可以找到我们的「Chrome下载工具」了

打开程序,还是熟悉的界面和功能啦~

咱就是说:跨平台开发,真的不容易啊。但话说回来,一旦跨过去了,我们的软件就能覆盖更广的用户群,支持更多的平台运行,也算是不白费个人开发者的心吧
还是老规矩,后台回复 “chrome下载助手” 就可以获取Windows和Mac双版本啦~
当然仍然是坚持初心:完全免费,无广告哈
PS:不会真有人问我能不能打包Linux版吧……不会吧?😂(也不是不行,但让我先缓两天……)
开发不易,点赞鼓励一下吧 👏