0

我在 OS X 上使用 pkgbuild 和 productbuild 工具创建了一个应用程序安装程序。我创建的包将我的应用程序安装到 /Application 文件夹。现在,如果我使用 NSFileManager(使用另一个我的应用程序)将此应用程序移动到另一个位置,我的包会将其重新安装到新位置,但 /Application 将安装它。

这看起来像是一些文件路径缓存,我可以以某种方式“刷新现金”,以便我的 pkg 将应用程序安装到正确的位置吗?

我在 Mavericks 和 El Capitan 上注意到了这一点。我相信优胜美地也是如此。

4

1 回答 1

1

如果我将此应用程序移动到另一个位置

OS X 不喜欢同一应用程序的多个相同副本。问题是由于Launch Services看到应用程序时的注册。

当应用程序被复制到 /Applications 或第一次运行时,应用程序详细信息将注册到 Launch Services。当用户通过双击应用程序包来运行应用程序时,Launch Services 会查看已注册的应用程序并决定实际运行的应用程序。

OS X 安装程序与启动服务协同工作,因此当要从包中复制捆绑包时,它首先检查是否已注册并存在相同的应用程序;如果应用程序有,则不会发生复制。这可以在 /var/log/install.log 中的安装日志中查看

拥有同一个应用程序的多个副本会让人感到困惑,我建议您不要这样做。如果您想放弃捆绑包并重新安装,请将其移至回收站,这将从启动服务中删除其注册。

于 2015-10-26T09:05:39.380 回答