在 MAC OS X 上创建桌面快捷方式(如 .desktop 在 linux 中)

Posted

技术标签:

【中文标题】在 MAC OS X 上创建桌面快捷方式(如 .desktop 在 linux 中)【英文标题】:Create Desktop shortcut on MAC OS X ( like .desktop in linux ) 【发布时间】:2014-09-05 11:50:55 【问题描述】:

如何仅使用 C++ 在 MAC OSX 中创建桌面快捷方式。

在 linux 中我可以使用 .desktop 文件来完成

[Desktop Entry]  
Version=1.0  
Name=Eclipse  
Exec=/usr/local/bin/eclipse

【问题讨论】:

桌面快捷方式在 Mac OS X 上并不是真正的东西......我从不在桌面上创建快捷方式。应用程序快捷方式可以放在 Dock(或 Launchpad)中,并且已经有 Documents 和 Downloads 的文件夹堆栈。 但是,如果你真的想在桌面上创建一个快捷方式,你需要创建一个别名 接近投票不正确,OP 询问如何使用 C++ 进行投票,这使其成为 *** 的主题。 投票结束的人没有阅读问题! 我提供了在 OS X 10.8 或更高版本中创建别名的代码。如果您需要针对 10.7 或更早版本,可以使用this answer。 【参考方案1】:

正如@dreamlax 所提到的,这是您将要创建的别名;至少,这是当您右键单击某个项目时 UI 提供的内容:-

如果您使用终端并在桌面上创建一个项目的符号链接,您会看到它创建了一个相似“别名”。因此,您可以通过调用ln function 创建指向源项的符号链接,这可能与symlink 函数调用相同。

请注意,使用 UI 创建的别名与 ln 创建的别名并不完全相同,正如您在链接到 pkg(安装程序)文件时所看到的那样。如果您在两者上使用“file”命令。使用 ln,创建的链接被标识为“xar archive - version 1”,而 UI 别名创建的文件是“别名:数据”。

但是,就功能而言,两者都应该作为在桌面上放置指向另一个位置的项目的链接的一种方式。

最后,在决定 ln 是否适合您的情况之前,请注意 POSIX ln 和别名之间的this distinction:-

[alias] 类似于 Unix 符号链接,但区别在于即使目标文件移动到同一个磁盘上的另一个位置也能正常工作

【讨论】:

【参考方案2】:

如果您想创建别名,请查看 Alias Manager reference,或者如果您的目标是 10.8 或更高版本,则可以改用 CFURLCreateBookmarkData

编辑

事实上,您甚至可以只使用 POSIX symlink 来创建快捷方式。先尝试一下,如果足够了,就不要再使用更复杂的 Alias Manager 或 CFURLCreateBookmarkData

编辑 2

这是创建书签所需的 C 代码(如果您从命令行编译,则需要在编译器的命令行标志中指定 -framework CoreFoundation,否则将 CoreFoundation 框架添加到您的项目中Xcode)。

CFErrorRef error = NULL;
CFURLRef aliasFile = CFURLCreateWithString(NULL, CFSTR("file:///Users/msl/Desktop/Terminal%20Alias"), NULL);
CFURLRef targetFile = CFURLCreateWithString(NULL, CFSTR("file:///Applications/Utilities/Terminal.app"), NULL);
CFDataRef bookmark = CFURLCreateBookmarkData(NULL, targetFile, kCFURLBookmarkCreationSuitableForBookmarkFile, NULL, NULL, &error);

if (bookmark == NULL)

    // something went wrong, check what "error" variable says


Boolean success = CFURLWriteBookmarkDataToFile(bookmark, aliasFile, kCFURLBookmarkCreationSuitableForBookmarkFile, &error);
if (!success)

    // something went wrong, check what "error" variable says


// make sure to clean up
if (bookmark) CFRelease(bookmark);
if (aliasFile) CFRelease(aliasFile);
if (targetFile) CFRelease(targetFile);

【讨论】:

我正在开发 10.9,所以我将尝试使用 CFURLCreateBookmarkData 看不出CFURLCreateBookmarkData跟这有什么关系? 好吧,我可能必须将参数传递给应用程序,所以符号链接可能不是一个好的选择 @***foe:here's the Objective-C equivalent for creating a bookmark。基本上,您使用CFURLCreateBookmarkData 创建书签数据,其中包含要链接到的目标,然后使用CFURLWriteBookmarkDataToFile 将书签数据写入文件以创建实际别名。 好的,我明白了;我只遇到过这种方法 WRT 在沙盒应用程序中保存安全范围的书签。【参考方案3】:

按住 Shift 键,将应用程序拖到目标位置。例如:桌面。

【讨论】:

以上是关于在 MAC OS X 上创建桌面快捷方式(如 .desktop 在 linux 中)的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac OS X 上构建 Linux 内核

如何使用python在mac上创建url快捷方式?

以编程方式在 Mac OS X 上创建 PPTP ***

Idea for Mac 快捷键(快捷键选择:Mac OS X 10.5+)

如何为 Mac OS X 创建苹果邮件插件 [关闭]

linux如何创建桌面快捷方式