1

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

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

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

2 回答 2

1

您可以使用标准NSFileManager方法

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

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

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

于 2013-04-11T09:32:28.263 回答
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];

}
于 2013-04-11T13:23:11.843 回答