代码之家  ›  专栏  ›  技术社区  ›  natevw

如何强制MacOS安装程序包重命名应用程序?

  •  0
  • natevw  · 技术社区  · 6 年前

    我已经部署了一个.pkg,它在/applications和一些支持产品中安装了一个应用程序。不过,现在应用程序已被重命名。

    当一个新的 应用程序的现有用户安装最新版本,我希望它以新名称安装。

    例如,一些用户已经安装了 com.example.myapp 捆绑在“/applications/old name.app”。但现在它需要安装/移动到“/applications/new name.app”。最坏的情况下,它应该同时保留旧的和新的。

    现在的情况正好相反:它安装了 新的 应用程序位于 古老的 姓名。我在安装日志中看到:

    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 回复  |  直到 6 年前