micyng
V2EX  ›  macOS

请教,mac osx 有木有类似 pkgbuild、用于卸载的工具

  •  
  •   micyng · Mar 6, 2014 · 5549 views
    This topic created in 4630 days ago, the information mentioned may be changed or developed.
    因为卸载不只是删除文件,还有一些其他事情要做
    所以就不要说让用户直接拖拽到垃圾箱这样的话了

    谢谢
    10 replies  •  1970-01-01 08:00:00 +08:00
    jakwings
    jakwings
    Mar 6, 2014
    1
    直接拖拽到垃圾箱是比较安全的做法。安装软件时注意有没有说明卸载方法,记得据此分类放置安装文件。
    我一般用 AppCleaner 寻找到所有个人配置文件,然后通过正常方式卸载程序,顺便提示系统卸载相关服务(AppCleaner 做不到),最后才用没关闭的 AppCleaner 删除找到的个人配置文件。

    总之建议不明白那些卸载软件的原理不要优先使用那些软件来卸载软件,当心玩脱。
    volCANo
    volCANo
    Mar 6, 2014
    2
    @jakwings 什么叫“通过正常方式卸载程序”?还有“顺便提示系统卸载相关服务”这个是谁给提示?
    jakwings
    jakwings
    Mar 6, 2014
    3
    @volCANo 正常方式是指,按照应用安装包附带的卸载说明卸载,或者直接将应用拖到垃圾箱。

    提示系统卸载相关服务,我猜测是应用本身已经附带了被拖动到回收站卸载时会取消服务的指令,或者系统根据应用的安装信息找到相关的服务并自动卸载。而 AppCleaner 这个软件只不过是强制删除文件,并不会通过垃圾桶来删除文件。
    micyng
    micyng
    OP
    Mar 6, 2014
    4
    @jakwings ”提示系统卸载相关服务“是说拖拽垃圾箱这个动作可以被hook吗?
    hewigovens
    hewigovens
    Mar 6, 2014❤️1
    6
    @micyng clean my mac的做法是监听~/.Trash, 事后通知
    jakwings
    jakwings
    Mar 6, 2014❤️1
    7
    @micyng 见 3 楼。应用包的信息文件中好像是有指示相关服务文件的,垃圾箱可能会根据那个文件找到相关服务并卸载。我还没开发过应用,不清楚是不是程序利用了 hook 。
    micyng
    micyng
    OP
    Mar 6, 2014
    8
    @hewigovens 是个好办法,可是mac连inotify之类的系统调用都木有,岂不是很蛋疼
    hewigovens
    hewigovens
    Mar 6, 2014
    9
    @micyng 监控Trash至少有3种做法:

    1. 创建一个launchd job, 具体看看 man launchd.plist并搜索WatchPaths
    2. 使用FSEvent API
    3. 直接open /dev/fsevents, 需要root权限
    hewigovens
    hewigovens
    Mar 6, 2014
    10
    看到5楼的回复, 我也再贴下我之前造的轮子: https://github.com/hewigovens/PackageUninstaller
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1479 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 04:29 · PVG 12:29 · LAX 20:29 · JFK 23:29
    ♥ Do have faith in what you're doing.