我在OS x上使用pkgbuild和productbuild工具创建了一个应用程序安装程序。我创建的包将我的应用程序安装到/application文件夹。现在,如果我使用NSFileManager(使用另一个my app)将这个应用程序移动到另一个位置,我的包会将它重新安装到新位置,但不是它打算安装的/application。
这看起来像一些文件路径缓存,我能以某种方式"冲洗现金",所以我的pkg将安装应用程序到正确的位置吗?
我在小牛队和埃尔卡皮坦队注意到了这一点。我相信优胜美地也是如此。
如果我将这个应用程序移动到另一个位置
OS X不喜欢同一应用程序的多个相同副本。这个问题是由于应用程序注册时,他们看到的发射服务。
当应用程序被复制到/Applications中,或者第一次运行时,应用程序的详细信息将注册到Launch Services中。当用户通过双击bundle运行应用程序时,Launch Services会查看已注册的应用程序并决定实际运行的应用程序。
OS X安装程序与启动服务协同工作,所以当一个包要从一个包中复制时,它首先检查是否已注册并存在相同的应用程序;如果应用程序有,则不会发生复制。这可以在/var/log/Install .log
的安装日志中查看。拥有同一个应用程序的多个副本会让人感到困惑,我建议你不要这样做。如果你想把一个bundle放到一边重新安装,把它移到废纸篓,这将从启动服务中删除它的注册。