【问题标题】:How to forget a MacOS bundle to prevent invalid installation如何忘记 MacOS 捆绑包以防止无效安装
【发布时间】:2020-06-19 09:08:04
【问题描述】:

背景

我正在开发一些 Mac OS 守护程序。有时我将它作为我的存储库中的应用程序启动以测试一些东西。到目前为止,一切都很好。我能够创建可以被其他人使用的安装包,完全没有问题。

问题

当我使用安装包时,有时守护程序不会复制到所需的路径。在安装日志中我可以看到流动的语句:

....
installer: Installation Check: Passed
installer: Volume Check: Passed
installer: Bundle com.mybudle.id will be relocated to /Users/itsMe/repos/MySourceCodeRepo/Debug/MyDaemonApplication.app

基本上,安装程序注意到在某个目录中存在具有相同捆绑包 ID 的捆绑包,因此它决定跳过其在所需位置的安装。 现在由于启动我的服务的xml使用安装包中定义的位置,服务启动失败。

问题

有什么方法可以通知系统忘记我的私人版本捆绑包,而不删除它? 我需要一种方法来防止安装程序跳过安装某些包,因为它找到了其他版本。

【问题讨论】:

    标签: macos launch-daemon macos-installer


    【解决方案1】:

    好的。我找到了对问题的很好解释:

    https://apple.stackexchange.com/questions/219123/pkgbuild-created-package-does-not-install-correctly

    为了修复它,我生成了这样的myapp_istaller.plist

    pkgbuild --analyze --root "./my_product_root/" myapp_istaller.plist
    

    然后我在该文件中更改了 BundleIsRelocatable§ tofalse` 的值。 最后,我在创建包时提供了这个 plist 文件:

        pkgbuild --root ${PKG_SUBDIR} \
             --component-plist ./myapp_istaller.plist \
             --identifier ${PKG_IDENTIFIER} \
             --version ${APP_VERSION_FULL} \
             --ownership recommended \
             --scripts scripts \
             pkg1/output.pkg
    

    问题解决了。 Bundle 仅安装在安装包定义的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多