Xcode 是";“验证”;及;分发;直接分发Mac应用程序所需的步骤?

Xcode 是";“验证”;及;分发;直接分发Mac应用程序所需的步骤?,xcode,sparkle,Xcode,Sparkle,我正在努力使用xCode 5自动化发布Mac应用程序的过程。该应用程序仅在Mac app Store之外分发(直接分发)。我知道我可以添加一个在构建阶段执行的运行脚本,以自动化该过程。我目前正在使用Craig Williams的ruby脚本进行appcast自动化。脚本如下: 我的问题是:验证和分发步骤是否必要?如果代码签名完成,我可以简单地运行自动化脚本并使用脚本生成的.zip文件,还是必须完成下面概述的步骤,然后使用脚本处理“导出的”应用程序 我目前的程序如下: 从xCode的产品菜单中选择

我正在努力使用xCode 5自动化发布Mac应用程序的过程。该应用程序仅在Mac app Store之外分发(直接分发)。我知道我可以添加一个在构建阶段执行的运行脚本,以自动化该过程。我目前正在使用Craig Williams的ruby脚本进行appcast自动化。脚本如下:

我的问题是:验证和分发步骤是否必要?如果代码签名完成,我可以简单地运行自动化脚本并使用脚本生成的.zip文件,还是必须完成下面概述的步骤,然后使用脚本处理“导出的”应用程序

我目前的程序如下:

  • 从xCode的产品菜单中选择“归档”
  • 打开管理器并按“验证”按钮
  • 按“分发”并选择“导出开发人员ID签名” 应用程序”,然后按“下一步”
  • 选择我的开发者ID代码签名证书
  • 按“导出”保存MyApp.app文件

  • 一旦有了“Exported”.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"
    
    2) 第二次运行脚本执行一个Ruby脚本,该脚本通过Sparkle创建应用程序的.zip文件和appcast分发的.xml文件。原始脚本来自这里:

    我自定义了脚本,将解压后的应用程序复制到另一个文件夹中,该文件夹稍后用于自动创建.dmg文件

    第二次运行脚本很简单:

    script_file="appcast_automation.rb"
    $SRCROOT/$PRODUCT_NAME/${script_file}
    
    3) 第三次运行脚本创建一个.dmg文件,其中包含自定义图标、背景、版本、许可协议等。。。我使用DropDMG的命令行工具()创建.dmg文件。我已经将
    wm_许可证
    wm_布局
    目录添加到Xcode项目中,这样脚本就可以访问它们,并使用git对它们进行版本控制

    此运行脚本设置为“仅在安装时运行脚本”

    Xcode中的运行脚本和自动化文件列表如下所示:

    因此,只要在Xcode中选择“Archive”,我就会得到一个.zip文件和.xml文件,用于通过Sparkle进行自动更新,以及一个.dmg文件用于首次(新)下载。最终的结果是

    所有内容都经过代码签名,随时可以部署。剩下要做的唯一一件事就是将文件上传到服务器,这可以是自动化的,但我更喜欢手动完成这一部分

    如果时间允许,如果我被允许,我将在github存储库中发布我修改后的appcast_automation.rb副本,并从这里添加链接


    希望这对其他人有帮助

    嘿!谢谢你的步骤,看起来棒极了。最后,您是否在某处发布了您的
    appcast\u automation.rb
    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