gpt4 book ai didi

macos - 快速查找名称中包含特定短语的应用程序的完整路径

转载 作者:行者123 更新时间:2023-12-03 17:39:54 25 4
gpt4 key购买 nike

我正在开发一个小应用程序,充当第 3 方应用程序的插件。为了使其正常工作,我需要从第 3 方应用程序(此处的“其他应用程序”)访问已保存的文件。在较新的版本中,另一个应用程序将其保留在 ~/Application Support/Test App/Saved Files/中。

使用如下内容很容易到达:

NSString *savedFiles = [NSHomeDirectory() stringByAppendingPathComponent:@"~/Application Support/Test App/Saved Files"];

但我也想让它与旧版本兼容,并且它们不使用应用程序支持文件夹。旧版本位于用户应用程序文件夹中的文件夹中,例如以下结构:〜/应用程序/测试应用程序/测试应用程序.app〜/应用程序/测试应用程序/保存的文件/

我可以使用与上面相同的方法来查找保存文件的位置。但该应用程序并不总是安装在此处,或者文件夹名称在不同语言中可能会有所不同。这就是问题所在。

到目前为止,我认为以下是获取路径的选项:

  1. 要求用户使用文件选择器导航到该文件在我的应用程序中。
  2. 询问用户“Test App.app”在哪里,并获取通过“../Saved Files/”相对于该路径。
  3. 应用程序可以通过系统获取之前运行的应用程序的路径吗?
  4. 应用程序可以使用聚光灯快速找到位置吗?
  5. 还有其他方法可以自动、可靠且快速地完成此操作吗?

1 和 2 不是首选,因为这需要用户“工作”才能为应用程序提供路径。大家觉得怎么样?还有其他方法可以自动化此操作吗?哪个最快?

最佳答案

您可以尝试向 LaunchServices 询问应用程序的位置,因为其 bundle 标识符为 LSFindApplicationForInfo调用:

CFURLRef urlRef = NULL;
LSFindApplicationForInfo(kLSUnknownCreator, (CFStringRef)@"com.example.some-app", NULL, NULL, &urlRef);
NSLog(@"URL: %@", (__bridge id)urlRef);

这假设您提到的两个变体之间的包标识符相同。如果确实只是名称相同,您可以按名称查询:

CFURLRef urlRef = NULL;
LSFindApplicationForInfo(kLSUnknownCreator, NULL, (CFStringRef)@"Test App.app", NULL, &urlRef);
NSLog(@"URL: %@", (__bridge id)urlRef);

关于macos - 快速查找名称中包含特定短语的应用程序的完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20690141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com