文章目录

  • 关于 Move to Applications folder
  • 核心代码

关于 Move to Applications folder

很多应用下载开启后,经常可以看到提示


推想一下,sparkle 的原理,是将新应用下载保存到 library 之后,移动替换掉原来App 的位置。 那么这里的移动应该也是有辅助程序?
GitHub 搜索 Move to Applications folder ,可以找到几个开源代码:

https://github.com/Eric-Bro/EBApplication
https://github.com/RISCfuture/TMMoveToApplicationsFolder


根据 TMMoveToApplicationsFolde 提供的文件写了个简单的demo,适合伸手党:
https://download.csdn.net/download/lovechris00/10901065

  • 不需要写辅助程序,复制App 文件到 Applications 文件夹;
  • 移动后启动applications 里面 app,并终结自己。
  • 关闭沙盒后运行没问题;开启沙盒则会提示:
“MoveAppFolderDemo” couldn’t be copied because you don’t have permission to access “Applications”.

file access 没有对 Applications 权限设置。

  • 如果 Applications 文件夹已存在内容,则会提示
“MoveAppFolderDemo” couldn’t be copied to “Applications” because an item with the same name already exists.

你也可以在移动之前删除文件。


核心代码

判断当前应用是否在 Applications 文件夹

- (BOOL) applicationIsInApplicationsFolder {NSArray *appPath = [[self currentPath] pathComponents];NSString *docName = [appPath objectAtIndex:([appPath count] - 2)];return ([docName isEqualToString:@"Applications"]);
}

移动应用程序

- (void) moveApplication {NSError *error = NULL;BOOL result = [[NSFileManager defaultManager] copyItemAtPath:[self currentPath] toPath:[self newPath] error:&error];if (result) {NSArray *files = @[[[self currentPath] lastPathComponent]];NSInteger tag = 0;NSString *path = [[self currentPath] stringByDeletingLastPathComponent];[[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation source:path destination:@"" files:files tag:&tag];[self relaunch];}else [self displayMoveError:error];}

重启

- (void) relaunch {[[NSWorkspace sharedWorkspace] openFile:[self newPath]];[[NSApplication sharedApplication] terminate:self];
}- (NSString *) newPath {if (!newPath) {NSString *bundleName = [[self currentPath] lastPathComponent];newPath = [@"/Applications" stringByAppendingPathComponent:bundleName];}return newPath;
}

伊织 2020-03-26

macOS 开发 - Move to Applications folder相关推荐

  1. macos 开发工具_10个面向高级用户和开发人员的必备macOS工具

    macos 开发工具 重点 (Top highlight) Macs are expensive machines primarily used by power users and develope ...

  2. macOS开发 -Packages的使用

    软件准备 可以安装下面几种软件,本次以 Packages 为例,下载 Packages 即可. (推荐)下载 Packages 地址:http://s.sudre.free.fr/Software/P ...

  3. python ai应用开发_AI应用开发实战 - 从零开始搭建macOS开发环境

    AI应用开发实战 - 从零开始搭建macOS开发环境 联系我们 OpenmindChina@microsoft.com 零.前提条件 一台能联网的电脑,使用macOS操作系统 请确保鼠标.键盘.显示器 ...

  4. AI应用开发实战系列之二:从零开始搭建macOS开发环境

    AI应用开发实战 - 从零开始搭建macOS开发环境 本视频配套的视频教程请访问:https://www.bilibili.com/video/av24368929/ 零.前提条件 一台能联网的电脑, ...

  5. macOS开发中用TagLib获取、修改音频文件信息

    macOS开发中用TagLib获取.修改音频文件信息 1.概述 TagLib是KDE开源项目的一个很有用的C++函数库,它可以用于读取各种格式的音频文件的ID3信息,如歌名.歌手.专辑.采样率等,同时 ...

  6. MacOS 开发 — App多开

    MacOS 开发 - App多开 MacOS 开发 - App多开 写入代码: 这个NSMenuItem的快捷键是command + N ,所以我们按下这个快捷键就能看到此App又开启了一个 NSTa ...

  7. MacOS开发-用命令行压缩文件

    MacOS开发-用命令行压缩文件 在Mac OS X中,你可以通过右键上下文菜单中的"压缩xxx"选项制作压缩文件,但是,该方式创建的压缩文件和通过命令行zip创建的压缩文件不同. ...

  8. MacOS 开发 — 读取文件/视频 信息

    macOS 开发 - 读取文件/视频 信息 在开发过程中我们或许需要,在文件未打开的情况下读取文件信息.或者在视频加载前读取视频编码格式,以及视频的尺寸等等.以下提供三种Object-c macOS下 ...

  9. MacOS开发-带有动画的窗口内容切换

    MacOS开发-带有动画的窗口内容切换 1.切换窗口内容效果 根据需求,窗口内容需要切换,且要求带有动画效果.实现效果如下图所示: 2.实现 思路:程序只有一个window,通过在window的con ...

  10. macOS 开发 - 入门笔记

    文章目录 一些技巧 macOS 开发常用技术/框架 官方文档/教程 其它书籍教程等 OC 语言 Swift 语言 SwiftUI 框架 macOS 开发学习资源 视频教程 书籍 博客 Opensour ...

最新文章

  1. 算法很重要,但是,并非所有,并不是每个人的选择
  2. 联发科首发台积电4nm,新旗舰多核跑分与苹果A15不相上下,网友:MTK也要Yes了?...
  3. 倒计时 2 天 | 解锁生鲜电商的战“疫”秘密
  4. UNREFERENCED_PARAMETER的作用
  5. 儿童手表怎么删除联系人_双11儿童手表选购指南:全天候24小时定位,做孩子的贴身保镖...
  6. linux将db2账户添加到组_超实用的shell脚本--Linux安全加固设置,值得收藏
  7. CentOS7入门_安装并配置mysql5.7.18
  8. 控制工程基础Chapter2 Mathematical models of systems
  9. 泊松分布和指数分布,包你学会
  10. [转]多媒体范例: 如何使用CSS来格式化TLF文本
  11. linux双网卡配置两个ip,centos双线双ip配置,Windows双网卡双ip配置
  12. Gos —— 获取物理内存容量
  13. 寒假每日一题——拖拉机
  14. 我的上司叫“专横”,驾驭他小case,情商修炼术
  15. 虚电路和数据报网络——网络层
  16. 改革春风吹满地(杭电2036)
  17. 遇见最美的你:Flash
  18. MATLAB中的step()函数
  19. 导包:org.hamcrest.Matchers.equalTo报错解决方法
  20. JNI中Fatal signal 11 (SIGSEGV), code 1的错误.

热门文章

  1. python怎么算列表的平方_总算明了python如何求平方
  2. 我九点钟上计算机课用英语怎么说,人教版四年级英语下册 第5次课 Unit 2 What time is it 时间的表达方式...
  3. Ubuntu18.04 笔记本电脑使用USB摄像头替代自带摄像头 安装摄像头驱动usb_cam的方法
  4. 智能汽车HMI“火了”
  5. 编译原理-18-语法分析实验代码示例
  6. C/C++音乐播放(亲测有效)
  7. Matlab中的plotyy用法总结
  8. STM32之俄罗斯方块
  9. python人脸识别训练模型_AI的强大!用Python实现一个简单的人脸识别--中享思途...
  10. 2021 ACA世界大赛中国赛区王者诞生