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. dockutil举例

make脚本

将下面的make.sh脚本保存到dockutil目录中:

#!/bin/bash

pkgName="installDockutil"
pkgVersion="1.0"
projectHome="$(dirname $0)"

if [ "$EUID" -ne 0 ];then echo "Please run as root"; exit; fi

if [ -d "$projectHome" ]; then
	cd "$projectHome"
	/bin/chmod -R a+x "$projectHome/root/bin/dockutil"
	/usr/sbin/chown root:admin "$projectHome/root/bin/dockutil"
	/bin/chmod -R a+x "$projectHome/scripts"
	/usr/bin/pkgbuild --root root --scripts scripts \
		--install-location "/usr/local" \
		--identifier "lts.ApplePai.$pkgName" \
		--version $pkgVersion  --ownership recommended \
		--quiet "$pkgName-$pkgVersion.pkg"
	exit 0
else
	echo "Error: Cannot find project folder ($projectHome)."
	exit -1
fi

这个改进版本与之前比较又有了一些变化,添加了一些新元素:

  • 4行:添加了安装包版本参数pkgVersion

  • 11-13行:添加了改变程序所有者和添加可执行文件权限的命令,这样可以避免因人为失误造成错误的可能,使得程序自动处理更多可能的状况而更加强壮

  • 15行:增加了--install-location 选项用于指定安装的目录路径的根目录,也就是说在 --root 中所定义的负载目录中内容是相对与 --install-location 的目录。根据前面—root的定义,我们可以得到dockutil会被安装到/usr/local/bin目录中。这就回答了前面提出的疑问

  • 17行:增加了-version参数,有利于版本控制

  • 18行:生成的pkg文件的文件名也包含了版本信息

运行make.sh后,dockutil下的目录和文件列表如下:

Previous安装包脚本Nextinstaller命令行

Last updated 6 years ago

Was this helpful?