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

时间:2014-09-05 11:50:56

标签: c++ linux macos

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

在Linux中我可以使用.desktop文件

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

3 个答案:

答案 0 :(得分:1)

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

enter image description here

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

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

但是,就功能而言,两者都可以作为将桌面上的链接放置到另一个位置的项目的方式。

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

  

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

答案 1 :(得分:0)

如果您想制作别名,请查看Alias Manager reference,或者如果您定位的是10.8或更高版本,则可以改为使用CFURLCreateBookmarkData

修改

事实上,您甚至可以使用POSIX symlink来创建快捷方式。首先尝试,如果足够,请不要使用更复杂的别名管理器或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);

答案 2 :(得分:0)

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