以编程方式将应用内容复制到桌面

时间:2013-04-11 08:26:10

标签: objective-c macos cocoa

我是Objective-C的新手。

如何以编程方式将整个.app包([[NSBundle mainBundle] bundleURL])复制到我的桌面?

这是我的代码,但没有帮助我。

NSString *sourcepath = [[NSBundle mainBundle] bundlePath]; 
NSString *destpath = [NSHomeDirectory() stringByAppendingPathComponent:@"Desktop"];
[[NSFileManager defaultManager] copyItemAtPath:sourcepath toPath:destpath error:nil];

2 个答案:

答案 0 :(得分:1)

您可以使用标准NSFileManager方法

复制目录和文件。来自Apple的文档:

复制项目时,当前进程必须具有读取srcPath上的文件或目录的权限,并写入dstPath的父目录。如果srcPath上的项目是目录,则此方法将复制目录及其所有内容,包括任何隐藏文件。

请注意,如果目标中的项目(文件/目录)已经存在,则必须手动删除目标(文件/目录),否则副本将失败(同样,根据Apple的文档)。

答案 1 :(得分:0)

以下是我解决的问题,这可能会对某人有所帮助。

- (IBAction)createShortcut:(id)sender {

 NSString *sourcepath = [[NSBundle mainBundle] bundlePath];
 NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES);
 NSString *theDesktopPath = [paths objectAtIndex:0];
 NSString *saveFilePath = [theDesktopPath stringByAppendingPathComponent:@"myApp.app"];
 [[NSFileManager defaultManager] copyItemAtPath:sourcepath toPath:saveFilePath error:nil];

}