pkgbuild 和移动的应用程序

pkgbuild and moved application

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

这看起来像是一些文件路径缓存,我能否以某种方式"flush the cash"让我的 pkg 将应用程序安装到正确的位置?

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

if I move this application to another location

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

首次将应用程序复制到 /Applications 或 运行 时,应用程序详细信息会在 Launch Services 中注册。当用户 运行 通过双击应用程序包来启动应用程序时,Launch Services 会查看已注册的应用程序并决定实际获得什么 运行。

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

中的安装日志中查看

拥有同一应用程序的多个副本可能会造成混淆,我建议您不要这样做。如果您想搁置一个包并重新安装,请将其移至废纸篓,这将从 Launch Services 中删除其注册。