1. 环境初始化和变量定义 脚本首先设置了一系列环境变量和标志,为后续操作奠定基础: 定义路径:如图标、MIME 类型、桌面菜单等文件的存放路径(/usr/share/, /opt/kingsoft/wps-office/)。 设置功能开关:通过布尔变量控制是否执行某些操作,例如: hasDesktopMenu=true:是否创建桌面菜单。 isUos=false:是否针对统信UOS系统进行特殊处理。 isForceFushion=true:是否强制使用“融合模式”(即一个统一的 WPS 应用入口)。 domesticVersion=0:判断是国内版还是国际版。 定义MIME类型关联数组:声明了 WPS Office 各组件(WPS文字、ET表格、WPP演示)以及PDF、OFD等格式所关联的图标和系统MIME类型。这是为了告诉系统“哪种文件类型该用哪个WPS程序打开,并显示什么图标”。 2. 核心系统集成配置 这是脚本最复杂和关键的部分,目的是让 WPS Office 成为系统默认办公套件。 图标资源安装​ (ks_install_icon函数): 将 WPS 为各种文件格式提供的图标(多种尺寸)注册到系统的图标主题(如 hicolor)中,使得文件管理器和桌面能正确显示文件图标。 文件类型关联​ (write_mimeapp_config函数): 修改 /usr/share/applications/mimeapps.list和用户目录下的 .config/mimeapps.list文件。 将大量的文档格式(如 .docx, .xlsx, .pptx, .pdf, .ofd等)的默认打开程序设置为对应的 WPS 应用(如 wps-office-wps.desktop, wps-office-et.desktop)。 这个函数会调用 Python 脚本 (writemime_python*.py) 来智能地更新配置文件,确保将 WPS 设为默认程序的同时,不破坏其他已关联的程序。 更新系统数据库: update-mime-database:更新系统的 MIME 类型数据库,使新的文件关联生效。 update-desktop-database:更新桌面菜单数据库,使新安装的 .desktop文件出现在应用程序启动器中。 3. 桌面环境和用户配置 这部分关注最终用户的体验。 桌面快捷方式创建​ (deploy_wps_desktop_icon函数): 根据系统语言和用户设置,在用户的“桌面”文件夹(可能是桌面、Desktop等)创建快捷方式。 模式选择:根据配置(AppComponentMode)决定是创建单个统一的“WPS Office”快捷方式(融合模式),还是独立的WPS文字、ET表格、WPP演示等多个快捷方式(多组件模式)。 模板文件分发​ (ks_config_desktop_templates): 将 WPS 自带的模板文件(如空白的.doc、.xls等)复制到系统的“模板”文件夹(/etc/skel/Templates/)以及每个现有用户的“模板”文件夹中。这样用户可以在文件管理器里右键选择“新建文档”时,直接使用WPS模板。 清理旧配置​ (ks_config_del): 删除旧版本残留的配置文件项(如 AcceptedEULA),并清理一些可能冲突的插件配置目录,确保新安装的版本从一个干净的状态开始。 4. 系统库和兼容性检查 库版本检查​ (ks_check_library_version函数): 检查系统已安装的共享库(如 libfreetype.so.6, libstdc++.so.6)的版本。 如果系统的库版本比 WPS 自带的版本更新,脚本会创建符号链接,让 WPS 优先使用系统库,以提升兼容性和性能。 5. 授权和许可证管理 授权信息转移​ (ks_transfer_auth_info函数): (主要针对国内版/教育版)​ 集中管理授权信息。它会扫描各个用户目录下的旧版授权文件(license2.dat),将其统一收集到 /opt/kingsoft/.auth/目录下,并设置适当的权限。 同时,也会从旧版配置文件(如 Office.conf)中提取授权时间(*_t)和级别(*_l)信息,合并到新的全局授权配置文件中。 6. 其他组件和功能配置 浏览器插件安装:为 Firefox 等浏览器安装插件,以支持在网页中预览文档。 后台进程管理​ (ks_config_wpsdaemon):配置用户登录时自动启动 WPS 的快速启动服务(quickstartoffice),以加快应用打开速度。 语言配置​ (ks_config_language):首次运行时,为每个用户确认界面语言。 更新模块初始化​ (ks_update_init):设置 WPS 的自动更新模块(wtool),创建必要的目录、配置文件,并设置定时任务(cron job)来检查更新。 7. 安装后处理 应用增量补丁:如果安装包是增量包(isFullPackage=false),会运行补丁脚本(patch.py)来更新文件。 解压帮助文档:在后台解压帮助文档文件(help.tar)。 运行自定义脚本​ (ks_custom):执行安装目录下 custom_script/install中的任何自定义脚本,为OEM厂商或特殊部署提供灵活性。 刷新字体缓存​ (fc-cache):在后台更新系统字体缓存,确保 WPS 的新字体可用。 清理临时文件:删除安装过程中使用的临时文件。 总结 总而言之,这个 postinst脚本远不止是“复制文件”。它是一个系统集成工程师,负责将 WPS Office 这个应用程序无缝地、深度地整合到 Linux 操作系统中。其核心任务包括:注册文件关联、安装图标、创建菜单和快捷方式、分发模板、管理授权、处理库依赖、配置自动更新等,最终确保用户安装后即可开箱即用,并获得与系统高度一致的体验。