尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Git XL 打包实战:PyInstaller + Inno Setup 打造一键安装程序

Git XL 打包实战:PyInstaller + Inno Setup 打造一键安装程序 Git XL 打包实战PyInstaller Inno Setup 打造一键安装程序【免费下载链接】git-xlGit extension: Makes git-diff work for VBA in Excel workbooks (xls* file types)项目地址: https://gitcode.com/gh_mirrors/gi/git-xlGit XL 是一款开源的 Git 扩展工具它能让git diff直接读懂 Excel 工作簿xls、xlsx、xlsb 等里的 VBA 代码。对于不想让用户安装 Python 的桌面工具来说如何打包成 Windows 一键安装程序是发布的关键一步。本文以 Git XL 为例完整讲解 PyInstaller Inno Setup 的两级打包实战流程并拆解其安装脚本里的几个实用技巧新手照着做就能跑通。 先认识一下 Git XL默认情况下Git 把 Excel 文件当作二进制diff 只会显示 Binary files differ对代码评审毫无帮助。Git XL 直接从工作簿文件中解析 VBA 宏代码无需打开 Excel生成逐行对比的 diff 输出核心实现只有两个 Python 模块src/cli.py——git xl install / uninstall / version等主命令与 Git 配置安装逻辑src/diff.py—— 基于 oletools 的VBA_Parser提取宏模块并生成统一格式 diff正因为它是 Python 写的发布时就必须把Python 源码变成双击就能装的安装程序。 两级打包架构一览Git XL 的 Windows 打包分为清晰的两步产物层层递进阶段工具输入输出第一步PyInstallersrc/cli.py、src/diff.pygit-xl-x64.exe、git-xl-diff-x64.exe第二步Inno Setup两个 exe LICENSE.mdgit-xl-windows-版本号.exe一键安装程序最终用户拿到的只有一个安装程序全程不需要 Python 环境。 第一步准备 Python 构建环境在开始打包前只需三件事在 Windows 上安装 Python 3官方文档BUILDING.md强烈建议使用虚拟环境在项目根目录执行pip install -r requirements.txt安装依赖依赖只有三个colorama终端彩色输出、oletoolsExcel VBA 解析、pyinstaller4.10打包工具版本号被固定以保证构建可复现 第二步用 PyInstaller 生成独立 exe按照BUILDING.md的指引在仓库根目录运行.\scripts\windows\build.bat打包脚本会用 PyInstaller 的 single-file 模式把 Python 解释器和全部依赖一起冻结进可执行文件产出两个 exegit-xl-x64.exe—— 安装/卸载/查看版本的主命令对应src/cli.pygit-xl-diff-x64.exe—— 供 Git 调用的 Excel diff 引擎对应src/diff.py两个程序在src/cli.py中通过sys.frozen判断自身是否已被打包打包后调用同目录的git-xl-diff.exe开发模式下则回退为用当前 Python 解释器执行diff.py开发体验和发布行为互不干扰。版本号如何注入 exePyInstaller 的--version-file参数引用了scripts/windows/git-xl-version-info.py其中VSVersionInfo结构体定义了 Windows 可执行文件属性里看到的文件版本、产品名、版权等元数据保证 exe 在资源管理器中显示规范的版本信息。 第三步用 Inno Setup 制作一键安装程序安装程序的全部逻辑集中在scripts/windows/inno-setup-git-xl-installer.iss编译前需先完成第二步脚本开头用#ifnexist检查两个 exe 是否存在缺失会直接报错避免编出残缺安装包。这个脚本里有 5 个值得借鉴的技巧版本号自动提取通过GetFileVersion读取 exe 内嵌的版本号安装包名称自动带版本号无需手工维护。智能安装目录自定义GetDefaultDirName函数——管理员登录默认装到 Program Files普通用户默认装到用户目录配合PrivilegesRequirednone实现免管理员安装。环境变量自动配置把安装目录追加进系统PATHNeedsAddPath函数先查重避免重复追加并写入GIT_XL_PATH变量装完即用。装完自动初始化安装结束后静默执行git-xl.exe install自动完成 Git 扩展注册细节见下文失败才弹窗提示用户手动执行。卸载即清理InitializeUninstall钩子在卸载时先执行git-xl.exe uninstall把写进 Git 全局配置的内容全部还原不留垃圾配置。 巧思CI 友好的版本管理脚本scripts/windows/update-version-info.py负责让整个构建链的版本号保持一致从 CI 环境变量读取 tag 名、构建编号和 commit 哈希重新生成scripts/windows/git-xl-version-info.py的VSVersionInfo内容四位文件版本号 tag 三段 构建编号用正则同步替换src/cli.py中的VERSION与GIT_COMMIT常量效果是exe 文件属性、安装程序名称、git xl version终端输出三处版本号永远一致发布流程零手工。✨ 一键安装后用户得到了什么Inno Setup 装完后自动运行的git xl install会一次性完成扩展注册写入diff.xl.command配置、向全局.gitattributes添加*.xls* diffxl规则、向.gitignore添加~$*临时文件过滤。此后任何包含 VBA 的工作簿git diff都能输出这样的可读结果src/tests/Book1.xlsb即测试用的 Excel 样例文件diff --xl a/Book1.xlsb b/Book1.xlsb --- a/Book1.xlsb/VBA/Module/Module1 b/Book1.xlsb/VBA/Module/Module1 -1,4 1,4 Option Explicit Public Function Version() As String - Version v1.0 Version v1.1 End Function也支持在单个仓库内局部启用git xl install --local配置只写入该仓库而不影响全局。✅ 打包避坑清单先 exe 后安装包顺序颠倒时 Inno Setup 会因#ifnexist检查立即报错这是刻意的保护。PATH 延迟生效用户安装后需新开终端环境变量才生效README 文档中已作说明。固定工具版本pyinstaller4.10被钉死在requirements.txt中避免不同环境打包行为漂移。 相关文件速查文件作用requirements.txtPython 依赖清单含 PyInstallerBUILDING.mdWindows 构建步骤说明src/cli.pygit xl 主命令、安装/卸载逻辑src/diff.pyExcel VBA diff 核心引擎scripts/windows/inno-setup-git-xl-installer.issInno Setup 安装程序完整配置scripts/windows/update-version-info.pyCI 版本号生成脚本scripts/windows/git-xl-version-info.pyexe 版本信息VSVersionInfoLICENSE.md许可证被安装程序引用为 License 页 总结一下Python 桌面工具打包的黄金组合就是PyInstaller 解决免 Python 运行Inno Setup 解决免命令行安装。Git XL 在此基础上还演示了版本号自动注入、免管理员安装、装后自动配置与卸载自动清理等工程化细节是学习开源项目发布打包的优质范本。【免费下载链接】git-xlGit extension: Makes git-diff work for VBA in Excel workbooks (xls* file types)项目地址: https://gitcode.com/gh_mirrors/gi/git-xl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表