首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >macOS / Cocoa:用户在磁盘上移动后,如何获取正在运行的应用的主包的路径?

macOS / Cocoa:用户在磁盘上移动后,如何获取正在运行的应用的主包的路径?
EN

Stack Overflow用户
提问于 2018-08-15 07:13:00
回答 1查看 1K关注 0票数 1

在macOS应用程序中,如果需要获取应用程序或其捆绑包中的任何资源的路径,当然可以使用NSBundlemainBundle静态方法

代码语言:javascript
复制
NSBundle *bundle = [NSBundle mainBundle];
NSString *appPath = [bundle bundlePath];
NSString *resourceFolderPath = [bundle resourcePath];
... etc ...

但是,如果用户在应用程序运行时将应用程序包移动到磁盘上的不同位置,则此方法将不起作用。以上所有函数仍将返回用户移动包之前的包的旧路径。

无论用户是否已将其移动到磁盘上,如何获取包的当前路径或包中任何资源的路径?

到目前为止,我已经尝试使用NSRunningApplication获取它的当前位置,如下所示:

代码语言:javascript
复制
NSRunningApplication *thisApp = [NSRunningApplication runningApplicationWithProcessIdentifier:getpid()];
NSLog(@"bundle URL: %@", [thisApp bundleURL]);

也返回包的旧路径的...but!

EN

回答 1

Stack Overflow用户

发布于 2018-08-15 07:38:50

虽然macOS不关心您是否在文档打开时移动文档,但它会关心您是否移动应用程序。这是一个在macOS开发中的long-recognized issue

而不是试图对抗它,应用程序开发人员倾向于不关心,或询问用户是否想要在启动时将应用程序移动到应用程序目录(因为这是应用程序最常见的移动目的地)。LetsMove是一个演示如何做到这一点的项目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51850899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档