问题标签 [launch-services]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
17104 浏览

macos - 通过命令行设置默认网络浏览器?

我试图弄清楚如何通过命令行在 OS X 上设置默认网络浏览器。我找到了这个论坛帖子,但他们正在制定的解决方案是使用特定应用程序打开特定 URL。我正在寻找一种设置默认浏览器系统范围的方法。GitHub 上有一个名为Objektiv的简洁应用程序,它完全符合我的要求,但它是一个应用程序。显然,有一个 Cocoa 方法来设置 NSWorkSpace 默认浏览器。

com.apple.LaunchServices为此需要更改首选项文件,也许更多。

如何通过命令行设置不同的默认浏览器?

感谢帮助。

0 投票
1 回答
394 浏览

objective-c - 搜索具有相同捆绑 ID 的多个应用程序

我正在尝试使用特定捆绑 ID 搜索安装在我的 Mac 上的应用程序。我设法使用LSFindApplicationForInfo这个问题中找到的方法来做到这一点。

我面临的问题是我无法弄清楚如何搜索具有相同捆绑 ID 的已安装应用程序。例如,如果我安装了两个版本com.domain.coolapp,如何同时列出这两个版本?除了使用 .app 搜索 .app 文件外,我似乎找不到任何解决方案lsregister

如文档中所述,这是不可能的LSFindApplicationForInfo

如果找到多个与指定特征匹配的应用程序,Launch Services 会选择一个,其方式与查找用于打开项目的首选应用程序时相同。

0 投票
1 回答
390 浏览

delphi - 如何将 LaunchServices 框架(mac os)添加到 Delphi xe4?

我尝试使用 LaunchServices 框架。不幸的是,某些功能仍然不可用。例如,函数 kLSSharedFileListFavoriteItems 已成功导入。但是,我无法加载函数 LSSharedFileListCreate。代码:

因此,_LSSharedFileListCreate 与 _kLSSharedFileListFavoriteItems 不同,它始终为零,后者具有正确的地址。也许,“LSSharedFileListCreate”包含在另一个库中?任何想法?谢谢。

0 投票
1 回答
4320 浏览

objective-c - 与大多数其他 OS X 应用程序相比,我究竟应该将什么传递给 -[NSApp activateIgnoringOtherApps:] 以让我的应用程序“自然”启动?

当我学会如何自己启动 NSApplications 时,我使用的代码(基于此处此处)确实

这会在启动时强制应用程序位于最前面。

我想知道大多数其他应用程序是做什么的。我希望能够直接从二进制文件和应用程序包中运行程序,并且我没有使用 Xcode 来构建它(原始构建)。所以我宁愿这个行为自然,可以这么说。

文档确实说 Finder 问题NO,但是......为什么是 Finder?这不是从流程内部而不是外部运行的方法吗?(我无法控制选择。)那么 Dock 和其他可能的入口点呢?

我什至拆解了 10.8NSApplicationMain()以查看它做了什么,但据我所知,从 32 位版本中可以看出,除非这个“轻启动”的东西发出这个选择器,否则这个选择器永远不会被调用。

这个问题有答案吗?谢谢......如果这令人困惑,对不起; 我试图尽可能清楚地表达出来。

0 投票
0 回答
326 浏览

python - 在 OSX 上首次打开应用程序时禁用显示的对话框

我正在使用 python 2.7 在 osx 10.9 上制作应用程序。但是当它第一次启动时,警告就来了。

您是第一次打开应用程序 MYAPP。您确定要打开此应用程序吗?

那么,如何避免这个警告。我是否需要对app 的 info.plist进行一些更改。

我已经完成了这个问答,但没有提到关于应用程序方面的更改。

不希望用户使用任何类型的命令来手动运行或进行更改。用户可以"com.apple.LaunchServices LSQuarantine -bool NO"为所有或"xattr -rd com.apple.quarantine Application.app"特定应用程序禁用。

我还使用开发者 ID签署了该应用程序。

那么,如何禁用此对话框弹出。

0 投票
0 回答
1890 浏览

macos - OSX Yosemite:启动服务具有应用程序的构建路径而不是运行路径

我认为这是优胜美地特有的问题,因为我在小牛队(或在那之前的山狮队)没有任何问题......

我有一个我编写的应用程序,它注册了一个帮助应用程序,以便在启动时使用 SMLoginItemSetEnabled 运行。我在这里没有任何问题;这很好用。

SMLoginItemSetEnabled 通过获取包标识符(例如“com.MyCompany.MyApp”)、通过启动服务找到该包的路径并在启动时运行它来工作。

问题是当我“归档”我的项目时,归档构建输出会自动注册为启动服务中的包路径。在 Yosemite 上,即使我将该包复制到 /Applications 并运行它,Launch Services 仍将指向构建路径。因为我的应用程序是沙盒的,OSX 将拒绝在启动期间运行帮助程序。

例如:

尽管我已将包复制到 /Applications 并且我目前正在从该位置运行它,但启动服务仍指向构建路径。

在 Mavericks 和 Mountain Lion 中,如果我上次运行应用程序时通过 xcode 中的“播放”按钮处于调试模式,我遇到了类似的问题,因为启动服务将具有指向调试构建目录的路径。但是,一旦我构建存档并将其复制到 /Applications 并从那里运行它,一切都很好。似乎 Yosemite 只会在 bundle 的版本发生变化时更新 Launch Services 数据库,而这不会仅仅通过将 bundle 从一个地方复制到另一个地方来实现。

有没有人有任何想法?有没有办法强制启动服务更新包的路径,无论是在代码中还是通过命令行?

0 投票
1 回答
922 浏览

c++ - LSOpenApplication 已弃用?

根据页面,功能LSOpenApplicationOS X v10.10. 建议的替代方法是使用-[NSWorkSpace launchApplicationAtURL]。不幸的是,我正在用 C++ 编写一个用户代理,它必须启动一个用 Cocoa 编写的 GUI 应用程序。这意味着我无法访问 Cocoa 功能(包括上述替代方法)。

我可以使用哪些其他功能来帮助我执行此操作,但未标记为已弃用?

提前致谢。

0 投票
1 回答
4613 浏览

macos - Mac OS X 文件关联有效,但文件图标未更改

我使用 Qt 5.3.2 开发了一个 Mac 应用程序。此应用程序处理具有特定扩展名的文件(比如说.xyz)。

我创建了一个名为 XYZ.icns 的图标文件并将其添加到我的应用程序包资源文件夹 ( MyApp.app/Contents/Resources/XYZ.icns)。

我还修改了包的 Info.plist 文件以设置文件关联。我添加了这个条目:

结果:文件关联有效(双击文件确实打开了我的应用程序)但是,图标没有被替换(仍然显示空白文档图标)。

有什么我错过的吗?我查看了其他应用程序的示例,似乎没有什么比我所做的更多。

编辑:我做了更多的测试。我使用以下命令转储了 Launch 服务数据:

结果,我可以在文件中找到包含图标信息的文件类型声明:

EDIT2:一段时间后,它终于可以自己工作了。一夜之间,安装了一个操作系统更新,我还不得不关闭计算机(启动服务可能自己刷新了一些东西)。我会将我的问题更新为:如何确保启动服务在安装或修改应用程序时刷新关联的文件图标?

0 投票
0 回答
623 浏览

qt - OS X Yosemite 文件关联工作,但不是文件图标

我的问题与此条目非常相似:Mac OS X file association works, but file icon not changed

我正在使用 Qt 5.3 开发一个应用程序来处理特定扩展名的文件(比如.xyz)。我只有 OS X Yosemite 用于测试,并且我设法使文件关联正常工作(双击文件时应用程序打开),但图标(比如xyz.icnsapplication.app 资源文件夹中的图标)没有改变(仍然默认的白纸,从桌面和 Finder 中可见)。这里是与文件关联相关的 info.plist 内容:

我刷新了启动服务,这似乎为那些在我的情况下解决问题的人解决了问题,并且我实际上在lsregister转储中只看到了我的应用程序的一个条目:

我也重新启动但没有新结果。我想知道我错过了什么......任何线索?谢谢 !

0 投票
2 回答
380 浏览

macos - 将 os x 中的 `edit` 二进制文件修改为不同的编辑器

在命令行上,我可以输入edit <folder/file name>,它会在 TextWrangler 中打开,我已经很久没有使用过了。我不确定edit二进制文件是如何到达那里的——我使用 oh-my-zsh,可能相关。我想更改subledit(更好地输入)并发现它已经存在。

我卸载了 TextWrangler,现在我得到了错误

我一直在寻找如何修改 LaunchServices 数据库并重建它,但我仍然收到错误消息。跑步which edit给了我/usr/local/bin/editfwiw。

是什么控制了这种关联,如何将其切换到 Sublime Text?