怎样运行安装程序?

泛旅传媒 2022-12-30 21:23 编辑:admin 55阅读

软件安装目前据我所见大概有几种方式,试总结如下:

installer模式。windows下常见的exe安装包,osx下的pkg安装包,unix下也有不少bin安装包。由开发者负责开发另一个程序来部署应用程序及其反安装程序。

package模式。由OS内建的包管理器管理。linux下每个发行版都有一个;windows有msi;等等。打包者(可能是开发者自己也可能是专职的)负责将主程序和一些脚本写好,打包;包管理器负责解析和具体的安装/反安装操作。

bundle模式。从osx的app开始,ipa/apk都是这个模式的派生;windows下的“绿色软件“马马虎虎也算这个模式。开发者只负责打包;OS只负责运行;用户随意增删。

ports模式。算是package的一个分支,技术人群熟悉,不必详谈。

对卸载而言,问题一般有这几个:零是程序本身的清理,这个所有模式都可以保证解决;一是配置数据的清理;二是installer模式下卸载程序本身的清理(别笑!十几年前这可是个大问题……),事实上我觉得OS引入包管理有一部分原因就是为了解决这个问题(另外还为了OS自身的模块化,包之间的依赖关系,等等),毕竟有些OS不允许程序在运行时删除自身。剩下的问题主要就出在配置数据上。(其实对配置数据,我记得大多包管理系统默认都是不加删除的,以备下次安装上还可以用;除非用户手动指定删除)。配置数据在表现上有两种形式:文件、系统配置数据库中的表项(注册表/dconf/keychain, etc)。文件这部分没什么好说的。系统配置数据库本来也不应该有什么问题,但具体到windows的注册表,其早期的实现有个大问题:增删乃至读效率都会随着其节点数提高而降低。这使得对windows而言,彻底的卸载除了洁癖上的意义还具有实际使用上的意义。回到卸载不干净的问题,就是uninstaller写法上的问题了。精心设计的话,installer这个模式是不存在什么死角的。