浅析 WPS for Mac(版本 WPS_For_Mac_Alpha_1.2.3(321))的安装过程,有疑惑的看看它安装过程都干了什么

2018-07-12 12:34:31 +08:00
 TonyLiu2ca

普通的安装过程无非是复制文件和适当配置,无他。下面直奔主题:

分发包

WPS_For_Mac_Alpha_1.2.3(321).pkg 是以分发包的格式封装的,利用 macOS 自带的安装器(Installer)进行安装。除了 Installer 提供的基本步骤外,没有使用其它复杂技术进行特殊的定制。 主要需要说明的是下面两个部分:

<bundle CFBundleShortVersionString="1.2.3" CFBundleVersion="321" id="cn.wps.presentation" path="wpp.app"/>
   <bundle CFBundleShortVersionString="1.2.3" CFBundleVersion="321" id="cn.wps.spreadsheets" path="et.app"/>
   <bundle CFBundleShortVersionString="1.2.3" CFBundleVersion="321" id="cn.wps.writer" path="wps.app"/>
<choice id="cn.wps.writer" visible="false">
  <pkg-ref id="cn.wps.writer">
    <must-close>
      <app id="cn.wps.writer"/>
      <app id="cn.wps.presentation"/>
      <app id="cn.wps.spreadsheets"/>
    </must-close>
  </pkg-ref>
</choice>

组件包

真正的程序文件都在组件包(wpsoffice.pkg)中,负载很简单只有三个程序:et.app, wpp.app 和 wps.app 装前脚本很简单,就是杀掉了 wpscloudsvr 进程。而最关键的要说是装后脚本了,这个也是重点,几乎所有的 pkg 包都会在装后脚本中做文章,WPS 也不例外。

这里只挑关键的行分析。

for lang in `ls "Library/Application Support/Kingsoft/WPS Cloud Files/userdata"`
do
  for filename in `ls "Library/Application Support/Kingsoft/WPS Cloud Files/userdata/${lang}"`
  do
     if [ ${filename} != "config.ini" ]; then
        focus_remove_folder "Library/Application Support/Kingsoft/WPS Cloud Files/userdata/${lang}/${filename}"
		fi
	done
done

小结

至此完全解读了它的安装过程。其实它的主要的过程和目的就是为了节省安装包和 app 的空间,将共享程序和数据都存放在了系统的 "/Library/Application Support/Kingsoft ” 目录中,这个就如同网上流行的给 M$ Office for Mac 瘦身的思路是一样的。

不过,就现在的网络速度和存储,没有必要这样做,直接放在每个 app 中就好,做成 DMG 格式的拖拽分发也是不错的选择,可以打消好多人的疑虑不是。至于如何分辨是否第一次运行,有很多其它方法不是。

还可以看出,它的第一个发布版本很可能不会使用沙盒技术。从诸多方面来看,它离上线 App Store 还有一段路要走,也说不定他们不想上吧。

卸载

从上面的分析可以看出,如果只是安装还没有运行,那么完全删除它很简单, 就一行命令:

rm -fr /Applications/et.app /Applications/wpp.app /Applications/wps.app "/Library/Application Support/Kingsoft"

如果有洁癖的最多加一句:

pkgutil --forget "cn.wps.writer"
3888 次点击
所在节点    Apple
22 条回复
ftu
2018-07-12 13:17:31 +08:00
总结:这玩意儿目前 没有坑,探测完毕
stanjia
2018-07-12 13:23:32 +08:00
Mac 上安软件不是拖动到目录里就可以了吗?
TonyLiu2ca
2018-07-12 13:40:30 +08:00
@stanjia

不总是
TonyLiu2ca
2018-07-12 13:42:45 +08:00
改不了了,最后删除应该是:
sudo rm -fr ....
chengxiao
2018-07-12 14:36:54 +08:00
想想挺悲哀的 本来 wps 出个 mac 版是好事
然后大家先是本着对他的好恶批判一番
然后又怕他流氓 再审一遍代码....
这公司之前是做了多少恶?
nutting
2018-07-12 14:41:25 +08:00
求问可以强行更改版本需求么,我是 10.11 用不了
Bardon
2018-07-12 14:42:39 +08:00
忽然有个疑问,为什么你们都用 rm -fr,而我用 rm -rf
yclissetj
2018-07-12 15:03:58 +08:00
@Bardon 其实我见的更多的是你这种 😂
wtks1
2018-07-12 16:11:51 +08:00
@Bardon 见到的 rf 比较多
Aruforce
2018-07-12 16:48:22 +08:00
@chengxiao 你用过 windows 版 就知道 wps 有多流氓了。。。尤其是什么 qing 什么乱七八糟。。。
liuzelei
2018-07-12 17:05:16 +08:00
focus_remove_folder 是什么鬼? force_remove_folder?
x86
2018-07-12 17:06:28 +08:00
@Aruforce 早期还好,后面改的都什么妖魔鬼怪,完全不想用了
wd
2018-07-12 17:26:21 +08:00
wpscloudsrv 是什么?
TonyLiu2ca
2018-07-12 23:59:57 +08:00
@nutting
如果说只是安装的话,可以改。至于能否运行就不知道了,需要测试先。
TonyLiu2ca
2018-07-13 00:02:10 +08:00
@Bardon
这两个谁在前谁在后,fr 说的是:必须全部; rf:全部, 必须的。听上去,rf 是东北口音,fr 是领导口吻。;)
TonyLiu2ca
2018-07-13 00:04:06 +08:00
@liuzelei
难道说它原文 copy 时被改了?回家再看看
TonyLiu2ca
2018-07-13 00:04:41 +08:00
@wd
这个有待查证
TonyLiu2ca
2018-07-13 00:43:01 +08:00
@chengxiao
这不是前几天有个帖子吗,说怎怎么的,还有人一看是 pkg 的要求管理员身份安装就弃锅了。
那就先从安装 pkg 开始看看呗,让大家放心安装。

当然运行后也会生成各种 plist/缓存等等用户客户化的东西,要想搞清楚还需要进一步分析
Uni9k
2018-07-13 08:46:05 +08:00
@chengxiao 金山在 Windows 上,简直......
TonyLiu2ca
2018-07-13 12:20:14 +08:00
@liuzelei
focus 不是我粘贴的问题,是原作者的创作

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/470189

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX