如何强制macOS安装程序pkg重命名应用程序?

时间:2018-11-30 19:34:22

标签: xcode macos installer pkgbuild productbuild

我已经部署了一个.pkg,它将一个应用程序安装到/ Applications以及一些支持产品中。但是,现在该应用已重命名。

该应用程序的新现有用户安装最新版本时,我希望以新名称进行安装。

例如一些用户已经安装并在“ / Applications / Old Name.app”中拥有com.example.myapp捆绑包。但现在需要将其安装/移动到“ / Applications / New Name.app”。最糟糕的是,它应该同时保留旧的和新的。

现在发生的事情恰好相反:它以 old 名称安装 new 应用程序。我在安装日志中看到了

  

installd [1950]:PackageKit:将Applications / New Name.app重定位到Applications / Old Name.app

因此,macOS正在检测到是同一应用程序,但认为用户已将其“重定位”为旧名称并保留在那里。我如何鼓励它坚持使用新名称?

我正在结合使用pkgbuild / productbuild和一个构建阶段脚本,例如:

TARGET_SRCROOT="${PROJECT_DIR}/Deployment Package"
# NOTE: the BUILT_PRODUCTS_DIR is a bit different during archive, but close enough relative to other derived data…
PKG_DESTINATION="${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.pkg"
SUBCOMPONENTS_DIR="${TEMP_FILES_DIR}/${PRODUCT_NAME} [deployment components]"
SUBCOMPONENT_PKG="${SUBCOMPONENTS_DIR}/deployment-components.pkg"

mkdir -p "$SUBCOMPONENTS_DIR"
pkgbuild \
--root "$INSTALL_ROOT" \
--identifier "${PRODUCT_BUNDLE_IDENTIFIER}-components" \
--version "$MARKETING_BUNDLE_VERSION" \
--scripts "${TARGET_SRCROOT}/scripts" \
"$SUBCOMPONENT_PKG"

productbuild \
--identifier "$PRODUCT_BUNDLE_IDENTIFIER" \
--version "$MARKETING_BUNDLE_VERSION" \
--distribution "${TARGET_SRCROOT}/distribution.xml" \
--package-path "$SUBCOMPONENTS_DIR" \
"$PKG_DESTINATION"

因此,具体地说,我能够轻松自定义自己的distribution.xml,并具有常用的安装前/安装后脚本。

0 个答案:

没有答案