macOS 开发 - Move to Applications folder
文章目录
- 关于 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相关推荐
- macos 开发工具_10个面向高级用户和开发人员的必备macOS工具
macos 开发工具 重点 (Top highlight) Macs are expensive machines primarily used by power users and develope ...
- macOS开发 -Packages的使用
软件准备 可以安装下面几种软件,本次以 Packages 为例,下载 Packages 即可. (推荐)下载 Packages 地址:http://s.sudre.free.fr/Software/P ...
- python ai应用开发_AI应用开发实战 - 从零开始搭建macOS开发环境
AI应用开发实战 - 从零开始搭建macOS开发环境 联系我们 OpenmindChina@microsoft.com 零.前提条件 一台能联网的电脑,使用macOS操作系统 请确保鼠标.键盘.显示器 ...
- AI应用开发实战系列之二:从零开始搭建macOS开发环境
AI应用开发实战 - 从零开始搭建macOS开发环境 本视频配套的视频教程请访问:https://www.bilibili.com/video/av24368929/ 零.前提条件 一台能联网的电脑, ...
- macOS开发中用TagLib获取、修改音频文件信息
macOS开发中用TagLib获取.修改音频文件信息 1.概述 TagLib是KDE开源项目的一个很有用的C++函数库,它可以用于读取各种格式的音频文件的ID3信息,如歌名.歌手.专辑.采样率等,同时 ...
- MacOS 开发 — App多开
MacOS 开发 - App多开 MacOS 开发 - App多开 写入代码: 这个NSMenuItem的快捷键是command + N ,所以我们按下这个快捷键就能看到此App又开启了一个 NSTa ...
- MacOS开发-用命令行压缩文件
MacOS开发-用命令行压缩文件 在Mac OS X中,你可以通过右键上下文菜单中的"压缩xxx"选项制作压缩文件,但是,该方式创建的压缩文件和通过命令行zip创建的压缩文件不同. ...
- MacOS 开发 — 读取文件/视频 信息
macOS 开发 - 读取文件/视频 信息 在开发过程中我们或许需要,在文件未打开的情况下读取文件信息.或者在视频加载前读取视频编码格式,以及视频的尺寸等等.以下提供三种Object-c macOS下 ...
- MacOS开发-带有动画的窗口内容切换
MacOS开发-带有动画的窗口内容切换 1.切换窗口内容效果 根据需求,窗口内容需要切换,且要求带有动画效果.实现效果如下图所示: 2.实现 思路:程序只有一个window,通过在window的con ...
- macOS 开发 - 入门笔记
文章目录 一些技巧 macOS 开发常用技术/框架 官方文档/教程 其它书籍教程等 OC 语言 Swift 语言 SwiftUI 框架 macOS 开发学习资源 视频教程 书籍 博客 Opensour ...
最新文章
- 算法很重要,但是,并非所有,并不是每个人的选择
- 联发科首发台积电4nm,新旗舰多核跑分与苹果A15不相上下,网友:MTK也要Yes了?...
- 倒计时 2 天 | 解锁生鲜电商的战“疫”秘密
- UNREFERENCED_PARAMETER的作用
- 儿童手表怎么删除联系人_双11儿童手表选购指南:全天候24小时定位,做孩子的贴身保镖...
- linux将db2账户添加到组_超实用的shell脚本--Linux安全加固设置,值得收藏
- CentOS7入门_安装并配置mysql5.7.18
- 控制工程基础Chapter2 Mathematical models of systems
- 泊松分布和指数分布,包你学会
- [转]多媒体范例: 如何使用CSS来格式化TLF文本
- linux双网卡配置两个ip,centos双线双ip配置,Windows双网卡双ip配置
- Gos —— 获取物理内存容量
- 寒假每日一题——拖拉机
- 我的上司叫“专横”,驾驭他小case,情商修炼术
- 虚电路和数据报网络——网络层
- 改革春风吹满地(杭电2036)
- 遇见最美的你:Flash
- MATLAB中的step()函数
- 导包:org.hamcrest.Matchers.equalTo报错解决方法
- JNI中Fatal signal 11 (SIGSEGV), code 1的错误.
热门文章
- python怎么算列表的平方_总算明了python如何求平方
- 我九点钟上计算机课用英语怎么说,人教版四年级英语下册 第5次课 Unit 2 What time is it 时间的表达方式...
- Ubuntu18.04 笔记本电脑使用USB摄像头替代自带摄像头 安装摄像头驱动usb_cam的方法
- 智能汽车HMI“火了”
- 编译原理-18-语法分析实验代码示例
- C/C++音乐播放(亲测有效)
- Matlab中的plotyy用法总结
- STM32之俄罗斯方块
- python人脸识别训练模型_AI的强大!用Python实现一个简单的人脸识别--中享思途...
- 2021 ACA世界大赛中国赛区王者诞生