macOS 开发 - 打包 PKG

版权声明:本文为博主原创文章,转载请附上本文链接地址。from : https://blog.csdn.net/lovechris00 https://blog.csdn.net/lovechris00/article/details/84546751


一、软件准备

可以安装下面几种软件,本次以 Packages 为例,下载 Packages 即可。

1、(推荐)下载 Packages

地址:http://s.sudre.free.fr/Software/Packages/about.html


2、PackageMaker

是之前 Xcode 自带的pkg 打包工具,网传在 /Development/Utility 文件夹,但目前没有这个文件夹,也不在 ~/library/Developer 这个文件夹。
正确方式是前往官网下载 Auxiliary Tools ,这个软件集合了多款开发者工具应用,但最后发布时间是 2012年。
https://developer.apple.com/download/more/?=for Xcode

在这里插入图片描述


下载成功后,打开 Auxiliary Tools ,选中 PackageMaker,直接拖拽到应用程序即可。PackageMaker 在 Auxiliary Tools 的 dmg包中,直接是个 .app 文件。
在这里插入图片描述

相关打包教程:https://blog.csdn.net/zhangkongzhongyun/article/details/20700659


3、Iceberg

相关教程
https://www.xuebuyuan.com/809255.html


4、命令行

pkgbuild+productbuild+pkgutil 来制作安装包。


二、打包 pkg 工程

1、准备材料、创建工程


1.1 在桌面创建一个文件夹,放置需要安装的文件

比如我的文件夹叫做 PKGDemo,里面放上我需要安装的 App 文件


1.2 打开 Packages 应用

Packages分为两种模式,packages 软件已经说明的比较清楚,如下图
我们需要安装 .app 文件和一个 驱动程序,这里选择 Distribution,它可以显示更丰富的内容。

在这里插入图片描述

在这里插入图片描述


1.3 添加项目信息

在这里插入图片描述


2、添加 package 信息

一个 project 可以对应多个 packages,这里我们先修改 package 信息,后面修改全局的 project 信息。

2.1 identifier 必须添加,否则会编译不通过。

在这里插入图片描述


可以设置安装完成后,是否重启应用、退出用户

在这里插入图片描述


2.2 在payload 添加需要安装的文件

选中 contents 里面的文件夹,然后选择下面的+ 按钮,即可添加文件到指定位置。
这个set 按钮一般没必要点击。

在这里插入图片描述


文件可以添加到这个目录树下的任意地方。
这是我添加了之后的效果。

在这里插入图片描述


2.3 添加 pre-install 脚本、post-install 脚本

这两个脚本的具体意思可参考:https://zhuanlan.zhihu.com/p/24895270

preinstall:针对单程序安装包(pkg),该脚本会在preflight脚本运行之后运行;针对多程序安装包(mpkg),该脚本会在用户按下Install铵钮后执行,只会在用户第一次安装该程序时执行。
postinstall:该脚本在程序安装完之后才运行。

常见的 preinstall (用来关闭、移除旧版本)

#!/usr/bin/env bash
echo "Running PKGDemo script"

# 关掉正在运行的app
echo "Killing PKGDemo"
killall "PKGDemo"

echo "Finding old version of PKGDemo"
sudo rm -rf /Applications/PKGDemo.app 
echo "Removed old versions of PKGDemo in Applications, if any."
echo "Ran PKGDemo preinstall script success."
exit 0

常见的 postinstall

#!/usr/bin/env bash

echo "Running myframeworktest.app postinstall script."
echo "Installing myframework.framework."

rm -rf ~/Library/Frameworks/myframework.framework
mkdir ~/Library/Frameworks/myframework.framework
cp -r /Applications/myframeworktest.app/Contents/Frameworks/myframework.framework/* ~/Library/Frameworks/myframework.framework

chmod -R 6777 ~/Library/Frameworks/myframework.framework
echo "Ran myframeworktest.app postinstall script."

exit 0

点击 choose 即可选中脚本文件,点击 remove 可以移除。

在这里插入图片描述


3、全局工程设置

3.1 设置 pkg 包名等

点击左上方的 project 可以对这个 pkg 工程进行设置;
这里settings 界面中的 name,就是最后打包出来的name。

在这里插入图片描述


3.2 设置 introduction

这里如果不管,就会显示下图中默认的英文字符;
点击右下角的添加按钮,右侧列表就会新增一行;选中新增这一行的内容,会显示 choose 按钮,可以选中本地的 txt 文件。

在这里插入图片描述


这里是我刚准备的 txt 文件,选中后,内容就会添加到这个面板。
在面板上无法修改这段内容,只能修改本地的这个 txt 文件。
如果修改了这个 txt 文件,保存后,面板的内容也会同步更新。

在这里插入图片描述


3.3 添加 readme

readme 默认是灰色的,也就是不显示;在安装步骤中也不显示。
但是如果你添加了 readme 相关的txt文件,就会显示出来。

在这里插入图片描述


这里是我添加的 readme.txt 文件。

在这里插入图片描述


3.4 destination select 和 installation 无法修改


3.5 修改 installation type

这里一般不需要修改,但选中文件,在右侧添加 title 和 description 后,内容会不一样。

在这里插入图片描述


这里是我修改后的效果

在这里插入图片描述


点击右侧的 requirement,可以对安装的操作系统版本做要求。

在这里插入图片描述


3.6 设置安装背景图片

选择最上方的 框,选中 background ,可以修改背景信息。可以发现它属于 introduction 这一步。

在这里插入图片描述


选择show 右侧的设置,改为 custom background,才能选择图片

在这里插入图片描述


选择图片,图片就会显示到我们的安装面板。
可以调整图片的对齐方式和显示的适配方式。

在这里插入图片描述


到这里基本配置完成
在这里插入图片描述


4、编译

选中窗口,点击 Build --> build and run,会自动编译,并运行pkg 安装包。
你也可以只build,不run.
在这里插入图片描述


在这里插入图片描述


此前没有设置这个界面,界面的显示效果如图:
在这里插入图片描述


因为设置了需要密码,所以这里会弹窗提示用户输入密码。
在这里插入图片描述


安装成功了,可以去应用程序文件夹(或者你添加的文件夹),检查下需要安装的文件是否存在了。
在这里插入图片描述


5、修改pkg 安装包

本次编译后,文件夹会变成如下:
下次更新App 版本时,双击这个文件打开,并修改里面的内容,再次build,就可以打一个新的 pkg 包。

在这里插入图片描述


6、pkg 签名

可前往下方链接查看:
https://blog.csdn.net/lovechris00/article/details/80965744


三、PKG 说明

pkg格式的软件安装其实就是把压缩在pkg里的文件解压出来并放置特定的路径下,再赋予它们特定的权限。

pkg相当于win下面的大型安装包,比如大型的micoffice软件,这种软件一般需要注册,而且安装时需要机主的权限。

dmg相当于win下面的rar压缩软件包。当然mac也能解压rar软件,很多都可以直接解压,然后拖到你需要的地方使用。

在数据产品中,PKG是塞班系统文件,也是Mac OS X中的pkg安装包,类似Windows系统中的.msi和.exe安装包,但给人的感觉更为高效和统一,或许这就是苹果系统更为高效的一个原因吧。由于 一般人使用塞班系统中pkg文件较少,所以这里主要讲讲较为常用的MAC系统中的PKG包的使用。


四、参考

猜你喜欢

转载自blog.csdn.net/lovechris00/article/details/84546751