可可应用程序的卸载程序

2023-12-27

我使用 PackageMaker 作为我的应用程序的安装程序(这不仅仅是一个简单的捆绑包)。 我想知道如何创建卸载程序、在哪里安装它以及如何向用户提供启动它的方式。

在此先感谢您的帮助,


在为某些 MAC 操作系统应用程序实现卸载程序时,我们想到了一个想法。正如 SerpicoLugNut 所说:

说真的 - 98% 的 Mac 应用程序不提供卸载程序,如果大多数人想要卸载该应用程序,他们只会将应用程序拖到垃圾箱中

我们决定可以监视垃圾箱,如果您的应用程序出现在垃圾箱中,我们可以询问用户是否要卸载它。

幸运的是,MAC 操作系统提供了开箱即用的功能来实现这一点。您只需将以下 .plist 放入 /Library/LaunchAgents 中:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.your.app</string>
<key>WatchPaths</key>
<array>
    <string>~/.Trash</string>
</array>
<key>ProgramArguments</key>
<array>
    <string>osascript</string>
    <string>/path/to/your/app/Check Trash.applescript</string>
</array>
<key>KeepAlive</key>
<false/>

在这个例子中,一个Check Trash.applescript一旦用户的垃圾箱被修改,就会运行。此脚本应检查您的应用程序是否在垃圾箱中,并询问用户是否要继续卸载。当然,这可以是任意脚本,甚至可以是二进制可执行文件,而不仅仅是苹果脚本。欲了解更多信息,请查看launchd.plist 的手册页 https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可可应用程序的卸载程序 的相关文章

  • 谁在 Mac OS X 上监听给定的 TCP 端口?

    在Linux上 我可以使用netstat pntl grep PORT or fuser n tcp PORT找出哪个进程 PID 正在侦听指定的 TCP 端口 如何在 Mac OS X 上获得相同的信息 在 macOS 上Big Sur然
  • 准确地从屏幕上的像素获取颜色并转换其颜色空间

    我需要从屏幕上的像素获取颜色并转换其颜色空间 我遇到的问题是 将值与数字色度计应用程序进行比较时 颜色值不相同 create a 1x1 image at the mouse position if let image CGImage CG
  • 安装 libjpeg v8 到 /opt/local

    如何在 OSX 上将 libjpeg 8 安装到 opt local 我问的原因是我想用以下方法制作大脑活动的小电影MNE C 库 http www nmr mgh harvard edu martinos userInfo data MN
  • 在开发过程中自动允许访问 MacOS 辅助功能 API

    我正在开发一个使用辅助功能 API 的应用程序 每次我进行更改和重建时 我都必须删除该应用程序并将其重新添加到下面的 安全和隐私 可访问性 视图中 一段时间后这会变得非常烦人 有没有什么方法可以在开发时禁用此安全检查 或者即使应用程序本身正
  • Swift 和 inout 参数中闭包的变量捕获

    我注意到 当 Swift 中的闭包捕获变量时 闭包实际上可以修改该值 这对我来说似乎很疯狂 也是一种获得可怕错误的绝佳方法 特别是当同一个 var 被多个闭包捕获时 var capture Hello captured func g thi
  • 当前收据无效或不匹配的 ds 人员 ID

    我正在尝试测试 MacOS 的应用内购买 输入测试用户凭据后 App Store 抱怨 当前收据无效或 ds 人员 ID 不匹配 并且购买失败 我尝试了很多方法来解决这个问题 获取 App Store 收据 http www kotanco
  • 在java中查找OSX的版本

    我需要测试 java 中 osx 的版本是否 Try System getProperty os name and or System getProperty os version 它返回字符串 HERE https docs oracle
  • 在 OS X 中,如何检测当前活动应用程序何时发生变化?

    尝试为 OS X 编写一个应用程序 该应用程序根据当前的应用程序触发行为 它不需要与它交互 它只需要知道何时更改以及更改内容 任何人都可以推荐哪些 API 可用于此目的吗 我的猜测是辅助服务中的某些内容 因为这是大多数应用程序 例如 Bet
  • Xcode 服务器 ibtool 构建失败

    我一直在研究使用 Xcode Server 进行 CI 我已经解决了一些问题 但现在有一个问题困扰着我 构建似乎工作正常 但在测试阶段挂起 并在日志底部生成以下内容 2015 11 25 14 44 45 650 xcodebuild 58
  • 在提交到 Mac App Store 的应用程序中调用 openssl 是否可以接受?

    我有点不清楚调用提交到 App Store 的应用程序之外的进程的规则是什么 我读到 如果您想使用 Cocoa 和 OSX 库之外的其他库 框架 您必须将其包含在您的应用程序中 例如 如果使用 QT Python 或 Ruby 编写应用程序
  • Mac OS High Sierra 下无法打开 pty

    我的问题的本质是 用户程序如何在 Mac OS High Sierra 上打开 pty 例如 dev ptyp0 设备名称的标准 open 似乎不起作用 尽管它的保护是 crw rw rw 上下文是在 Mac OS 下运行 Emacs 在
  • OS X:发送邮件到本地主机

    出于测试目的 我想将邮件发送到我的本地主机用户帐户而不是我的网络服务器 我不确定如何使用 mail app 执行此操作 任何帮助 将不胜感激 同义反复 OSX 确实有一个内置的 MTA SMTP 服务器 要打开它 您可以键入 sudo la
  • 如何以编程方式添加 NSMenu?

    我没有使用storyboard和xib 只使用了代码 我想以编程方式添加 编辑 菜单 我的问题是 1 如何显示 编辑 菜单 评论问题1 需要输入什么代码 2 Swift 提供了复制和粘贴等操作吗 class TestManager NSOb
  • 让 TensorFlow 在 ARM Mac 上使用 GPU

    我已经安装了TensorFlow在 M1 上 ARM Mac 根据这些说明 https github com apple tensorflow macos issues 153 一切正常 然而 模型训练正在进行CPU 如何将培训切换到GPU
  • CIImage内存未释放

    我正在尝试拍摄一系列图像 混合当时的 X 图像并生成新图像 这是我必须完成此任务的代码 static func blendImages blendFrames Int blendMode CIImage BlendMode imagePat
  • Python中的MariaDB连接器无法连接到远程服务器

    我使用与远程 Mariadb 服务器的连接已有几个月了 今天 无法再通过 macOS 上的 python mariadb 模块和 mariadb 连接器建立连接 基本安装如下 brew install mariadb connector c
  • 未加载库:@rpath/libopenblasp-r0.2.19.dylib

    我应该如何解决这个问题 Monas MacBook Pro 02 02 mona python Python 3 6 1 Anaconda custom x86 64 default May 11 2017 13 04 09 GCC 4 2
  • Maven:无法在 OS X 上找到 java.lang 问题

    当我尝试时遇到以下问题mvn clean install显然它无法找到运行时 jar 但我需要做什么 错误日志 ERROR COMPILATION ERROR INFO ERROR Failure executing javac but c
  • 如何使用 Objective-C 加载 dylib 或 .a(静态库)文件?

    C 代码 Windows Assembly assembly Assembly LoadFrom AssemblyPath System Type objTypes assembly GetTypes Type libType null 我
  • 获取选定行 NSTableView 的值

    我如何获取 NSTableView 中选定行的值 通过使用selectedRow see here https developer apple com documentation appkit nstableview 1535010 sel

随机推荐

  • Zend Zend_File_Transfer_Adapter_Http重命名问题

    我有一个关于在 Zend 中上传文件后重命名文件的问题 我不知道将重命名过滤器放在哪里 这就是我所拥有的 我尝试过移动东西 但我迷路了 目前 它确实将文件上传到我的照片文件夹 但没有重命名 谢谢你的帮助 if this gt request
  • iOS 上 UIVIew 和 CALayer 关于背景图片的关系

    试图理解UIView和CALayer之间的关系 我阅读了Apple文档 但它没有详细描述两者之间的关系 为什么当我添加背景图像来查看 自定义 ViewController view 时 我会得到不需要的图像黑色 当我将背景图像添加到 cus
  • TypeScript:抑制类型上不存在属性

    我在使用 TypeScript 时遇到了以下问题 有一个模块 它使用一个函数myApp common anotherFunc 来自 旧 js 代码 module myApp export module helpers export clas
  • AngularJS:隐藏 ng-message 直到点击表单提交按钮

    这是 AngularJS 1 x 中使用 ng messages 的典型示例
  • C#.NET - 如何让 typeof() 与继承一起使用?

    我将首先用代码解释我的场景 public class A public class B A public class C B public class D public class Test private A a new A privat
  • 在指令中使用 $compile 会触发 AngularJS 无限摘要错误

    关于为什么该指令会触发无限摘要错误有什么想法吗 http jsfiddle net smithkl42 cwrgLd0L 13 http jsfiddle net smithkl42 cwrgLd0L 13 var App angular
  • Compose Spacer 与视图填充性能

    我更喜欢使用 Spacer 在视图之间添加一些填充 有时您可以将此空间添加为视图的填充 所以我的问题是 使用 Spacers 与使用旧的填充值相比是否存在性能缺陷 性能会有所不同 在下面的测试中 50 个项目使用填充进行渲染 随后 50 个
  • 使用 XML 文件中的数据生成 Word 文档 (docx) / 基于模板将 XML 转换为 Word 文档

    我有一个 XML 文件 其中包含需要填充到 Word 文档中的数据 我需要找到一种方法来定义一个模板 该模板可以用作从 XML 文件填充数据并创建输出文档的基线 我相信有两种方法可以做到这一点 创建一个将作为 模板 的 XSLT 文件 并使
  • Oracle REGEXP_REPLACE 大写替换字符串

    我试图将我的 reg 表达式中的替换字符串大写 但没有成功 SELECT regexp replace src i uie v2 js uie v2 upper 1 from dual returns src i uie v2 js 我知道
  • CountDownLatch 的latch.await() 方法与Thread.join() 方法

    我看到一位 stackoverflow 成员建议使用 Thread join 让 主 线程等待 2 个 任务 线程完成 我经常会做一些不同的事情 如下所示 我想知道我的方法是否有任何问题 final CountDownLatch latch
  • 禁用 cookie 时会话还能工作吗?

    如果用户在浏览器中禁用了 cookie 会话还能工作吗 因为我知道当我创建会话时客户端中有一个会话 cookie 会话 ID 可以附加到 URL 所以 是的 他们可以 查看here http www webmasterworld com f
  • 在 OpenGL 中旋转三角形

    我正在尝试围绕其中心点旋转三角形 我知道 OpenGL 围绕原点旋转 因此我需要将中间点平移到原点 然后旋转 然后平移回来 我已经注释掉了最后一行 以确保它至少绕原点的中心旋转 它不是 尽管进行了翻译 但它似乎围绕其旧原点旋转 请注意 cc
  • Java ConcurrentHashMap 中增加分区数量的缺点?

    Java ConcurrentHashMap 在内部维护分区 每个分区可以单独加锁 在某些情况下 多个线程访问的所有键都落入同一分区 而分区可能没有帮助 进一步增加分区数量应该会提高并发性 为什么 Java 为分区计数提供默认值 16 而不
  • 如何检查是否支持naturalWidth?

    我有以下 jQuery 并想测试是否支持naturalWidth function special image if typeof this naturalWidth undefined do something 但这似乎不起作用 有任何想
  • 以日期时间字符串作为 x 值的等值线图

    我正在尝试生成一个颜色等值线图 其中 x 轴显示时间 y 轴深度 z 值显示温度 时间给出如下 2011 01 01 00 01 i e Y m d H M 有没有一种方法可以从中生成颜色等高线图 并使用 filled contour Ti
  • 更新已安装包中的数据集

    是否可以更新本地已安装软件包中的数据集 我维护的包有一个基于定期更新数据的数据集 我想更新数据集的本地版本并将更改保存回包中 以便下次加载数据时 即data xxx 将加载数据集的更新版本 从中长期来看 我将更新软件包 然后将新版本上传到
  • 如何返回带有错误消息或异常的 NotFound() IHttpActionResult?

    我正在返回 NotFoundIHttpActionResult 当我的 WebApi GET 操作中找不到某些内容时 除了此响应之外 我还想发送自定义消息和 或异常消息 如果有 目前的ApiController s NotFound 方法不
  • Python浮点舍入错误[重复]

    这个问题在这里已经有答案了 使用列表理解表达式时 x 0 1 for x in range 0 5 我希望得到这样的列表 0 0 0 1 0 2 0 3 0 4 然而我却得到了这个 0 0 0 1 0 2 0 300000000000000
  • 如何接收流式传输的 HTTP 响应

    当使用 Go 抛出 HTTP 请求并接收响应时 考虑到 ResponseBody 很大 1 GB 或更多 的情况 我希望在流式传输时接收响应 resp err http Client Do req 在这种情况下 如果正文很大 我无法读取标题
  • 可可应用程序的卸载程序

    我使用 PackageMaker 作为我的应用程序的安装程序 这不仅仅是一个简单的捆绑包 我想知道如何创建卸载程序 在哪里安装它以及如何向用户提供启动它的方式 在此先感谢您的帮助 在为某些 MAC 操作系统应用程序实现卸载程序时 我们想到了