mac os开发记录2

想着用qt写一个安装程序的程序,实现的功能上把应用程序的文件拷贝到某一个系统文件夹。

首先遇到的问题就是,目标文件夹是不可访问的,用QFile::Copy是不生效的。

gpt了一下,提升程序权限的方式有几种:

macOS 提升应用执行权限的方案 - 字节时代

AuthorizationExecuteWithPrivileges 已弃用

我选择了用apple script的方式:

cpp 复制代码
QString script = QString(
        "do shell script \"%1\" with administrator privileges with prompt \"提示语\""
    ).arg(shellScript);

    std::printf("%s\n",std::string(script.toLocal8Bit()).c_str());
    QProcess process;
    process.start("osascript", QStringList() << "-e" << script);
    process.waitForFinished();

其中,shellScript是你要执行的sh命令,比如拷贝文件:

cpp 复制代码
QString shellScript = "cp '/User/user/Desktop/1.txt' '/Application/xxx/1.txt'";

这里要拷贝一个桌面的文件到/Application文件夹,而桌面文件是不能访问的,用osascript命令拷贝,它也不会询问是否允许访问桌面文件夹,所以上面的命令执行不成功。

一般来说,安装程序,要安装的数据都在安装程序的bundle里面,因此不会出现上面的情况,如果一定要有上面的情况,可以先用QFile::Copy拷贝到bundle里,然后再拷贝到系统文件夹。用QFile::Copy拷贝时,会询问是否允许访问桌面文件夹。

相关推荐
智者知已应修善业5 分钟前
【51单片机从奇数始再转偶数逐一点亮并循环】2023-9-8
c++·经验分享·笔记·算法·51单片机
努力努力再努力wz14 分钟前
【MySQL进阶系列】拒绝冗余SQL:带你透彻理解视图的底层逻辑
android·c语言·数据结构·数据库·c++·sql·mysql
老蒋每日coding30 分钟前
Node.js 安装指南(Mac 版本)
macos·node.js
AI玫瑰助手32 分钟前
Python入门:Windows/macOS/Linux系统安装Python教程
windows·python·macos
智算菩萨34 分钟前
OpenAI Codex 国内使用完全指南:Windows/macOS/Linux 三平台详细安装配置教程(现在最新的有gpt-5.3-codex和gpt-5.4)
linux·windows·gpt·macos·ai·ai编程·codex
AAI机器之心37 分钟前
在 macOS 上本地部署 Ollama + LLaMA3(附教程)
人工智能·macos·langchain·llm·知识库·大模型部署
HSTK38 分钟前
Mac上配置PlatformIO
macos
Yupureki41 分钟前
《Linux网络编程》4.应用层HTTP协议
linux·服务器·c语言·网络·c++·http
Brilliantwxx1 小时前
【C++】认识vector(概念+题目OJ)
开发语言·c++·笔记·算法
上弦月-编程1 小时前
C语言链表详解,新手也能看懂! ——从入门到精通的完整教程
java·c语言·c++