mac os开发记录2

news/2024/10/21 11:39:03/

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

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

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

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

AuthorizationExecuteWithPrivileges 已弃用

我选择了用apple script的方式:

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命令,比如拷贝文件:

QString shellScript = "cp '/User/user/Desktop/1.txt' '/Application/xxx/1.txt'";

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

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


http://www.ppmy.cn/news/1507019.html

相关文章

【学习笔记】多进程信号量控制

目录 1、CreateSemaphore 2、ReleaseSemaphore 3、CreateEvent 4、SetEvent 5、WaitForSingleObject 程序案例1&#xff1a; 程序案例2&#xff1a; 1、CreateSemaphore 创建一个计数信号量对象&#xff0c;成功时返回信号量对象的句柄&#xff1b;失败时返回NULL&…

QtQuick 布局管理-基于锚的布局

基于锚的布局 每一个项目都可以认为有一组无形的锚线&#xff1a; lefthoizontalCenterrighttopverticalCenterbaselinebottom 其中baseline是一条假想的线&#xff0c;文本坐落在这条线上。 对于没有文本的项目&#xff0c;baseline与top相同。 见Qt帮助&#xff1a;Posi…

C# Winform 多窗体切换方式一

一、简介 在 Winform 开发中&#xff0c;多窗体的切换是一个常见的需求&#xff0c;比如登录成功后&#xff0c;切换至主界面&#xff0c;在网上查阅相关的资料&#xff0c;你会发现很多都是用 form2.Show(); this.Hide(); 这种方式&#xff0c;这种方式也存在一些问题&#…

有限与无限游戏

1. 概念 有限的游戏以取胜为目的&#xff0c;具有确定的开始和结束&#xff0c;拥有特定的赢家&#xff0c;规则的存在就是为了保证游戏会结束。 无限的游戏却旨在让游戏永远进行下去&#xff0c;它没有确定的开始和结束&#xff0c;也没有赢家&#xff0c;它的目的在于将更多…

实现挂机会议

png py文件 import os import pyautogui import time from typing import Callable, Tuple from datetime import datetime import cv2#通过图像模板匹配在屏幕上找到指定区域并操作 def imgAutoClick(tempFile: str, whatDo: Callable[[Tuple[int, int, int, int]], None], …

Java 并发编程:ReentrantLock 锁与 AQS

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 030 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

【OpenCV C++20 学习笔记】霍夫圆形变换-Hough Circle Transform

霍夫圆形变换 原理API实例 原理 霍夫圆形变换和霍夫直线变换的原理类似&#xff1a; 在霍夫直线变换中&#xff0c;笛卡尔坐标系中的直线被变换成了霍夫空间中的 ( r , θ ) (r, \theta) (r,θ)。在霍夫圆形变换中&#xff0c;笛卡尔坐标系中的圆被变换乘霍夫空间中的 C : ( …

Java二十三种设计模式-策略模式(13/23)

策略模式&#xff1a;灵活算法的替换与扩展 引言 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了算法族&#xff0c;分别封装起来&#xff0c;让它们之间可以互相替换&#xff0c;此模式让算法的变化独立于使用算法的客户。 基础…