TonysMac
  • macOS软件安装包 [从入门到精通]
  • 前言:你是我的菜
    • 有话要说
    • 你是我的读者
    • 此书门槛高吗
    • 各章内容提要
    • 本书的约定
    • 版权
    • 联系作者和反馈
  • 第一章:整装待发
    • 基本概念
    • 参考书籍
    • 工具软件
    • 硬件考虑
    • 操作系统
  • 第二章:初试身手
    • 安装器
      • 安装器的其它功能
      • 安装的工作
    • 安装包形式
    • 安装包的组成
      • 小结
    • 查看安装包内容
      • Pacifist介绍
      • Suspicious Package介绍
      • 两个软件的比较
      • 查询安装包的命令
      • 安装包解包
      • 重新打包
    • macOS组织安装包
      • 已安装列表
      • 包标识符
      • 安装包文件
      • 查找安装包
      • 安装包信息
      • 安装包组
    • 本章总结
  • 第三章:重装出发
    • 命令行制作安装包
      • 真实场景
      • 测试App
      • 工作目录结构
      • 确保文件权限
      • 制作安装包
      • 小练习
      • 所有权选项
      • make脚本
      • 运行make脚本
      • 小结
    • Packages生成安装包
      • 1.建立项目
      • 2. 配置属性
      • 3.生成
      • 4.排错
      • 小结/练习
    • Iceberg生成安装包
      • 1.建立项目
      • 2.项目配置
      • 3.安装包设置
      • 4.文件
      • 5.设置权限
      • 6.生成
      • 7.小结和思考
    • 重新打包
    • 快照重新打包
      • 为快照搭建环境
      • Composer软件
      • 快照实例1:alfred
      • 快照实例2:smartmontools
    • 安装包更新
    • 本章总结
  • 第四章:暗度陈仓
    • 卸载简介
      • 卸载脚本
      • make脚本
      • 排错和完善
      • 小结
    • 使用Packages应用
      • 1.建立项目
      • 2.配置和生成
      • 3.小结
    • 详解安装包脚本
      • 脚本类型
      • 脚本参数
      • 脚本返回值
      • 用户环境
      • 注意事项
    • dockutil举例
      • 安装包脚本
      • make脚本
      • installer命令行
      • 查看日志
      • 小结
    • 总结
  • 第五章:扬帆起航
  • 第六章:庖丁解牛
Powered by GitBook
On this page

Was this helpful?

  1. 第四章:暗度陈仓
  2. 详解安装包脚本

注意事项

Previous用户环境Nextdockutil举例

Last updated 6 years ago

Was this helpful?

在现代的文件安装包中,安装器仅支持使用preinstall和postinstall两个脚本,其它的仅仅在旧式的应用包安装包中使用,更详细的应用包格式的规范,请参考:。

安装包脚本有其特殊性,在编写时需要注意考虑到多种情况,并提供详尽的文档。下面是作者给读者的一些忠告:

  • 不要假设安装包会被安装到当前启动系统中,使用$3或者 DSTVOLUME 来判断安装目标卷宗。在实践中,可以使用“$3”是否等于“/”来判断目标是否是当前启动系统

  • 如果安装目标不是当前启动系统,那么很多命令可能会失去作用,比如systemsetup和networksetup等,它们都是获取或者修改当前启动操作系统的系统和网络设置,而无法获得被安装卷上的非启动系统的参数。再比如:sw_vers只能获得当前操作系统的版本,那么在检测操作系统版本是就不能用这个命令了

  • 不要使用osascript来访问Finder等图形用户环境资源,因为安装包可能被运行自非用户登录状态下,比如登录窗口或者NetInstall中,此时访问Finder只会造成未知错误,这也是造成安装错误的一个原因

  • 只有在必需时,才在安装包中要求使用管理员权限

  • 尽量不要要求,更不要在不通知用户的情况下强制关闭其它软件,这样很可能会造成用户丢失工作数据

  • 在安装系统组件的时候,请提示用户,让用户来选择是否继续。不要不提示或者没有详细的文档说明

  • 负载文件的文件属性,不要在脚本中修改,因为安装器系统维护的安装包的收据库中记录的文件属性是基于安装包中的收据文件的,这个收据文件是在建立安装包时,敷在文件的文件属性匹配的,这就造成数据库与实际文件属性不匹配,当使用修复功能时会造成混乱

  • 如果可能,尽量避免使用脚本

  • 脚本返回值要明确,成功就返回0,出错就返回非0.  尽量详细记录日志,记录脚本每一步的结果和注释,有利于维护和排错

  • 在安装后,如果安装的目的是在用户登陆后再做配置用户信息的操作,那么可以使用如LaunchAgent等手段来实现。

PackageMaker How-to