我已经部署了一个.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,并具有常用的安装前/安装后脚本。