Audacity跨平台打包与部署指南:AppImage、Inno Setup与macOS代码签名全解析
2026/9/17 6:00:31 网站建设 项目流程

Audacity跨平台打包与部署指南:AppImage、Inno Setup与macOS代码签名全解析

【免费下载链接】audacityAudio Editor项目地址: https://gitcode.com/GitHub_Trending/au/audacity

Audacity 是一款开源的数字音频编辑软件(Audio Editor)。对于想二次开发或自行构建发行版的用户来说,跨平台打包与部署是最关键的一环:Linux 用 AppImage 免安装分发、Windows 用 Inno Setup 制作安装向导、macOS 则必须完成代码签名与公证。本指南带你走通这三条打包链路,快速产出可发布的 Audacity 安装包。

📦 为什么要关注 Audacity 的打包流程?

Audacity 的代码库同时维护了两套 UI 体系(经典 wxWidgets 与新的 Qt/QML 架构),但发行包的构建逻辑高度统一:由 CMake 的 CPack 机制统一调度,各平台脚本只负责"最后一公里"。

理解打包流程的好处是:你可以按需裁剪语言包、模块目录(如Package\languages\*Package\modules\*),甚至替换安装向导的欢迎页文案,而不用碰任何音频核心代码。

🐧 Linux 打包:一键生成 Audacity AppImage

AppImage 是"拖入即可运行"的 Linux 免安装格式,是 Audacity 面向 Linux 用户的主力分发方式。

核心脚本在哪里?

文件作用
create_appimage.shAppImage 打包主脚本
package_appimage.cmakeCMake 侧入口,由 CPack 触发
check_dependencies.sh运行时依赖自检工具,随包附带
findlib.c打包期查找系统动态库的小工具

一键打包的 4 个关键步骤

create_appimage.sh的自动化程度很高,脚本会依次完成:

  1. 自动下载打包工具:拉取appimagetoollinuxdeploy(含 GTK 插件),无需手动安装任何第三方工具;
  2. 创建符号链接:生成usr目录、audacity.desktop.DirIcon,保证桌面集成正常;
  3. 捆绑依赖库:通过linuxdeploy --appdir ... --plugin gtk把共享库收进 AppDir,并刻意移除 Qt5 等不需要的库(unwanted_files列表);
  4. 构建最终镜像:调用appimagetool打包,若设置了AUDACITY_UPDATE_INFO环境变量,还会启用 AppImage 增量更新(附带.zsync文件)。

💡 亮点设计:脚本把libjacklibportaudio等易冲突的库放入fallback/目录,运行时由 AppRun 检测用户系统是否已有可用版本——系统版本优先,打包版本兜底,大幅降低了不同发行版的崩溃率。

CMake 侧只需开启 CPack,package_appimage.cmake 会自动把AppRun启动脚本、URL 处理器钩子(apprun-hooks/install-url-handler.sh)等配置好,再调用上述脚本,失败时直接报FATAL_ERROR,非常适合放进 CI。

🪟 Windows 打包:Inno Setup 安装向导全解析

Windows 发行版采用Inno Setup (Unicode)编译安装向导,脚本模板为 audacity.iss.in,由 BuildInnoSetupInstaller.cmake 驱动构建。

脚本里最值得看的几个配置

  • 版本自动解析:通过ParseVersion(AppExe, ...)audacity.exe读取版本号,安装器命名audacity-win-x.y.z无需手工维护;
  • 向导外观定制WizardImageFile指向 audacity_InnoWizardImage.bmp,欢迎页文案来自 audacity_InnoWizard_InfoBefore.rtf.in;
  • 可选任务(Tasks):用户可选择创建桌面图标重置首选项resetPrefs,默认不勾选);
  • 首跑配置:把 FirstTimeModel.ini 预置为FirstTime.ini,并通过 INI 段写入用户所选语言,实现"安装时即选好界面语言";
  • 文件清单:依次收录Package\*.exe*.dll、语言包、nyquist脚本与modules模块目录,全部使用ignoreversion标志保证覆盖安装稳定;
  • 签名位@SIGN_TOOL@占位符由 CI 注入,正式版会对安装器做代码签名。

📌 升级安装时,[UninstallRun]段会先执行旧版unins*.*静默卸载,避免残留冲突;DirExistsWarning=no则保证覆盖安装时不弹目录已存在警告。

🍎 macOS 部署:代码签名、公证与 DMG 三步走

macOS 是要求最严格的平台:未经签名公证的应用会被 Gatekeeper 拦截。官方流程完整记录在 signing.txt 中。

开发者需要准备的三样东西

  1. Apple Developer ID及 "Developer ID Application" 证书;
  2. 在开发者账号中为应用 IDorg.audacityteam.audacity创建专用密码,并写入 macOS 钥匙串(命名必须为AUDACITY_PASSWORD);
  3. 在用户主目录创建.audacity_signing配置文件,声明NOTARIZE_USERNAMENOTARIZE_PASSWORD@keychain:AUDACITY_PASSWORD形式)与CODESIGN_APP_IDENTITY

配好之后,在 CMake 构建目录下执行官方脚本即可一次完成签名 → 公证 → 装订(staple)→ 生成 DMG

../mac/scripts/build_dist.sh ../mac bin/Release

DMG 分发包内的安装界面背景图来自 Audacity-DMG-background.png,与 install 说明、包装脚本共同构成 macOS 发行产物。

为什么 entitlements 文件很关键?

Audacity.entitlements 声明了签名时的权限边界:

  • com.apple.security.device.audio-input:允许访问麦克风,这是录音功能的硬性前提
  • allow-dyld-environment-variablesdisable-library-validation:兼容动态加载的音频插件与 Nyquist 运行时;
  • allow-unsigned-executable-memory:支持脚本/插桩类功能。

⚠️ 公证会进行两次(应用包一次、DMG 一次),过程较慢属正常现象;若失败,终端会输出一个 URL,按提示查看具体原因。

✅ 新手速查:三条链路的产出物对比

平台工具链主要脚本最终产物
Linuxappimagetool + linuxdeploycreate_appimage.shAudacity-*.AppImage(+.zsync增量文件)
WindowsInno Setup 6 (u)audacity.iss.inaudacity-win-x.y.z.exe安装向导
macOScodesign + notarytoolsigning.txt 流程签名公证后的Audacity.dmg

给新手的建议路径:先按 BUILDING.md 完成一次完整的 CMake 构建,再依次尝试 Linux AppImage(门槛最低,无需任何开发者账号)、Windows 安装器(免费即可编译)、macOS 签名(需 Apple 开发者账号)。把 ci_build.cmake 中各平台的 CI 配置对照阅读,你能看到官方流水线是如何把这三条链路串成一条自动化通道的。

掌握 Audacity 的跨平台打包与部署之后,你就具备了为任何 C++/Qt 桌面项目产出专业发行包的能力——AppImage、Inno Setup 与代码签名这三件套,正是桌面应用分发领域最经典的技术组合。

【免费下载链接】audacityAudio Editor项目地址: https://gitcode.com/GitHub_Trending/au/audacity

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询