我正在努力使用 xCode 5 自动化发布 Mac 应用程序的过程。该应用程序仅在 Mac App Store 之外分发(直接分发)。我知道我可以添加一个要在构建阶段执行的运行脚本来自动化该过程。我目前正在使用 Craig Williams 的 ruby 脚本来实现应用广播自动化。脚本位于: https: //github.com/CraigWilliams/appcastautomation/blob/SnowLeopard/appcast_automation.rb
我的问题是:验证和分发步骤是否必要?如果代码签名已完成,我是否可以简单地运行自动化脚本并使用脚本生成的 .zip 文件,还是必须执行下面列出的步骤,然后使用脚本处理“导出的”应用程序?
我目前的流程如下:
获得“导出的”.app 文件后,我将通过终端手动运行脚本来创建 Sparkle appcast 所需的 .zip 文件。我希望跳过 xCode 导出过程作为自动化分发的第一步。
是的,可以完全自动化应用程序发布过程,而无需通过 Xcode 的组织器来“验证”和“分发”应用程序以进行直接分发。它需要将多个运行脚本构建阶段添加到 XCode 中的目标。这就是我最终所做的......
1) 第一步是对所有框架和应用程序包进行代码签名,以便当 appcast 自动化脚本运行时,压缩的应用程序已经进行了代码签名。这样就无需通过 Organizer 导出应用程序。在所有“复制”构建阶段之后立即添加此运行脚本。
IDENTITY="Developer ID Application: My Great Company."
FRAMEWORK_LOC="${BUILT_PRODUCTS_DIR}"/"${FRAMEWORKS_FOLDER_PATH}"
codesign --verbose --force --sign "$IDENTITY" "$FRAMEWORK_LOC/Growl.framework/Versions/A"
codesign --verbose --force --sign "$IDENTITY" "$FRAMEWORK_LOC/Sparkle.framework/Versions/A"
codesign --verbose --force --sign "$IDENTITY" "$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME"
Run Code Online (Sandbox Code Playgroud)
2) 第二个运行脚本执行一个 Ruby 脚本,该脚本创建应用程序的 .zip 文件和用于通过 Sparkle 分发 appcast 的 .xml 文件。原始脚本来自这里:https://github.com/CraigWilliams/appcastautomation/blob/SnowLeopard/appcast_automation.rb
我自定义了脚本,将解压缩的应用程序复制到另一个文件夹,稍后用于自动创建 .dmg 文件。
第二个运行脚本很简单:
script_file="appcast_automation.rb"
$SRCROOT/$PRODUCT_NAME/${script_file}
Run Code Online (Sandbox Code Playgroud)
3)第三个运行脚本创建一个.dmg文件,其中包含自定义图标,背景,版本,许可协议等...我使用DropDMG的命令行工具(http://c-command.com/dropdmg/)来创建.dmg 文件。我已将wm_license和wm_layout目录添加到 Xcode 项目中,以便脚本可以访问它们,并且使用 git 对它们进行版本控制。
此运行脚本设置为“仅在安装时运行脚本”。
VERSIONNUM=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${PROJECT_DIR}/${INFOPLIST_FILE}")
layout_folder="${PROJECT_DIR}/${PROJECT_NAME}/wm_layout"
license_folder="${PROJECT_DIR}/${PROJECT_NAME}/wm_license"
dmg_folder="/Users/username/Desktop/WindowMizer/${PROJECT_NAME}_$VERSIONNUM/${PROJECT_NAME}"
dropdmg --custom-icon --license-folder=$license_folder --layout-folder=$layout_folder $dmg_folder
Run Code Online (Sandbox Code Playgroud)
Xcode 中的运行脚本和自动化文件列表如下所示:

因此,只需在 Xcode 中选择“存档”,我最终会得到:用于通过 Sparkle 自动更新的 .zip 文件和 .xml 文件,以及用于首次(新)下载的 .dmg 文件。最终的结果是这样的……

一切都经过代码签名并准备好部署。剩下要做的唯一一件事就是将文件上传到服务器,这可以自动化,但我更喜欢手动完成该部分。
如果时间允许并且允许的话,我会将修改后的副本发布appcast_automation.rb到 github 存储库中,并从此处添加指向它的链接。
希望这对其他人有帮助!
| 归档时间: |
|
| 查看次数: |
1715 次 |
| 最近记录: |