Mac打包Unix可执行文件为pkg

Mac打包Unix可执行文件为pkg

方式一:通过packages页面打包

1.下载packages app

  • Distribution:自定义化更高,包括修改安装页面的内容提示
    我这里主要演示Distribution模式的项目:通过unix可执行文件+postinstall.sh脚本实现通过mac的pkg安装系统服务

2.点击new project,创建新项目

3. 设置project version等信息

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

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

4. 在packages的payload里添加unix文件

在payload 添加需要安装的文件

选中 contents 里面的文件夹,然后选择下面的+ 按钮,即可添加文件到指定位置。

  • 因为我需要将unix打包到pkg文件里,所以这里点击+按钮,将我本地文件添加到对应目录

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

5. 添加 pre-install 脚本、post-install 脚本

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

因为我pkg安装包执行后会将unix文件安装到Application下,所以我这里直接在post-install脚本里以sudo方式运行即可:

postinstall.sh:

bash 复制代码
#!/bin/bash
sudo /Applications/ziyi_darwin_arm64

# 记录日志到指定文件
echo "postinstall.sh executed at $(date)" >> /var/log/postinstall.log

exit 0

6. 设置安装页面介绍文案presentation

7. build项目,打包pkg

选中Build-点击Build And Run:

然后就弹出了安装页面,至此大工搞成:

我们打包好的pkg文件默认放在了~/项目名/build目录下

访问服务接口,可以看到服务已经安装成功:

方式二:通过pkgbuild命令打包

bash 复制代码
pkgbuild的所有参数如下:

-root:指定要打包的文件夹的路径。

-identifier:指定包的标识符(ID)。

-install-location:指定安装包的安装位置。

-scripts:指定安装前后脚本文件的路径。

-version:指定包的版本号。

-sign:指定签名文件的路径,以进行安全签名。

-keychain:指定要用于签名的钥匙链。

-timestamp:指定时间戳服务器的URL,用于验证签名。

-verbose:显示详细信息。

-nopayload:仅创建空载荷。

-filter:指定要包含或排除的文件和文件夹。

-template:指定要使用的pkgproj模板文件的路径。

sudo pkgbuild --root /Users/ziyi2/GolandProjects/ziyi/build --identifier com.test.pkg.project --version 1.0.1 --install-location /tmp/ziyi_pkg   --scripts /Users/ziyi2/scripts  /Users/ziyi2/Desktop/project.pkg
# --root /Users/ziyi2/GolandProjects/ziyi/build:指定要打包的文件夹
# --install-location /tmp/ziyi_pkg 指定安装包的安装位置(tmp目录,默认如果文件超过3天没人访问则被删除)
# --scripts /Users/ziyi2/scripts 指定preinstall、postintall脚本所在文件夹(在安装前、安装后执行的脚本)
#### 注意:脚本文件名必须为:preinstall、postintall且有可执行权限
相关推荐
Android系统攻城狮5 小时前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
雪落漂泊8 小时前
Linux进程(五):进程地址空间篇
linux·运维·服务器
wdeok9 小时前
Socket编程Tcp
服务器·网络·tcp
奶油话梅糖10 小时前
苹果的内核跑上了安卓手机:2,631 Star 的 HakiOS 让 XNU 在 Adreno GPU 上画出 118 帧
android·macos·智能手机
千舟软件10 小时前
报修系统对接企业微信和钉钉的3种方式_千舟报修云
服务器·钉钉·企业微信
迪康coolmu1 天前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
qq_371802111 天前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu
坤坤子吖1 天前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
say_fall1 天前
【AI大模型】MCP 模型上下文协议:客户端-服务器架构、JSON-RPC 消息与能力协商、工具发现与调用链路、与函数调用的分工
服务器·人工智能·架构
独隅1 天前
WebStorm macOS 安装调优与实战效果全景
ide·macos·webstorm