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:

#!/bin/bash
sudo /Applications/ziyi_darwin_arm64# 记录日志到指定文件
echo "postinstall.sh executed at $(date)" >> /var/log/postinstall.logexit 0

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

7. build项目,打包pkg

选中Build-点击Build And Run:
在这里插入图片描述

然后就弹出了安装页面,至此大工搞成:
在这里插入图片描述

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

在这里插入图片描述

访问服务接口,可以看到服务已经安装成功:
在这里插入图片描述

方式二:通过pkgbuild命令打包

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且有可执行权限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/603175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

听GPT 讲Rust源代码--compiler(31)

File: rust/compiler/rustc_ast_passes/src/node_count.rs 在Rust源代码的rust/compiler/rustc_ast_passes/src/node_count.rs文件中,它定义了Rust编译器中的AST节点计数器。该文件的作用是统计不同类型的AST节点在程序中的数量,以便在优化和调试过程中能…

unity编辑器Scene界面输出位置及路径

工程Asset下新建Editor文件夹; Editor文件夹下新建脚本LogPosition using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; public class LogPosition : EditorWindow {//最终输出的数据.static string logtext;//增…

K8S-应用访问

1 service对象定位 2 Service 实践 手工创建Service 根据应用部署资源对象,创建SVC对象 kubectl expose deployment nginx --port80 --typeNodePortyaml方式创建Service nginx-web的service资源清单文件 apiVersion: v1 kind: Service metadata:name: sswang-ngi…

04 帧 Frame

文章目录 04 帧 Frame4.1 相机相关信息4.2 特征点提取4.2.1 特征点提取 ExtractORB()4.3 ORB-SLAM2对双目/RGBD特征点的预处理4.3.1 双目视差公式4.3.2 双目图像特征点匹配 ComputeStereoMatches()4.3.3 根据深度信息构造虚拟右目图像:ComputeStereoFromRGBD() 4.4 …

静态网页设计——环保网(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)

前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 感谢大佬的视频: https://www.bilibili.com/video/BV1BC4y1v7ZY/?vd_source5f425e0074a7f92921f53ab87712357b 使用技术:HTMLCSSJS(…

【教学类-45-02】X-Y之间的三连减题(a-b-c=)

作品展示: 背景需求: 【教学类-45-01】X-Y之间的三连加题(abc)-CSDN博客文章浏览阅读5次。【教学类-45-01】X-Y之间的三连加题(abc)https://blog.csdn.net/reasonsummer/article/details/135436915 有了三连加怎么能没有三连减,修改参数&am…

移动通信原理与关键技术学习(第四代蜂窝移动通信系统)

前言:LTE 标准于2008 年底完成了第一个版本3GPP Release 8的制定工作。另一方面,ITU 于2007 年召开了世界无线电会议WRC07,开始了B3G 频谱的分配,并于2008 年完成了IMT-2000(即3G)系统的演进——IMT-Advanc…

python协程asyncio的应用,async,await,loop

关于协程,asyncio,async,await,loop的概念,参照上一篇文章可迭代对象,迭代器,生成器,协程-CSDN博客 上一章我们详细的讲解了上述各个名词的概念,但是这些东西实际上该怎…

mybatisPlus CodeGenerator 代码生成

在 test 目录下新建 CodeGenerator 类,用于 mybatis-plus 自动生成 java 代码 package com.edward;import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.OutputFile; import com.baomidou.mybatisplu…

【linux】Ubuntu 22.04.3 LTS截屏

一、快捷键 交互式录屏 ShiftCtrltAltR 交互式截图 Print 对窗口进行截图 AltPrint 截图 ShiftPrint 快捷键可能取决于使用的桌面环境和个人的键盘快捷键设置。如果上述快捷键不起作用,可能需要检查系统设置中的键盘快捷键部分,以了解系统中截图的…

Hive精选10道面试题

1.Hive内部表和外部表的区别? 内部表的数据由Hive管理,外部表的数据不由Hive管理。 在Hive中删除内部表后,不仅会删除元数据还会删除存储数据, 在Hive中删除外部表后,只会删除元数据但不会删除存储数据。 内部表一旦…

【大数据】Zookeeper 数据写入与分布式锁

Zookeeper 数据写入与分布式锁 1.数据是怎么写入的2.基于 Zookeeper 实现分布式锁 1.数据是怎么写入的 无论是 Zookeeper 自带的客户端 zkCli.sh,还是使用 Python(或者其它语言)实现的客户端,本质上都是连接至集群,然…

Redis 键中冒号的用途是什么?可以使匹配查询更快吗?

Redis 键中冒号的用途是什么在Redis中,冒号(:)用作键的分隔符,它的主要作用是创建层次结构和命名空间。通过在键中使用冒号,可以将键分为多个部分,从而更好地组织和管理数据。 以下是冒号在Redis键中的用途…

IMS基本架构

IP Multimedia Core Network Subsystem (IMS)商用已久,相对于CS domain的语音方案,IMS则是基于IETF定义的会话控制功能与多媒体传输功能通过IP-CAN实现的 全IP完整语音解决方案。 IMS能为无线和有线用户实现语音、视频、消息、数据等服务。便于运营商通过…

redis复习笔记03(小滴课堂)

Redis6常见数据结构概览 0代表存在,1代表不存在。 1表示删除成功,0表示失败。 查看类型,默认string类型。 也可以设置set类型。 list类型。 查看key的过期时间: Redis6数据结构之String类型介绍和应用场景 批量设置: …

AI与5G、IDC等成为数字经济的重要基础设施

AI与5G、IDC等已经成为数字经济的重要基础设施,它们的影响和作用不容忽视。随着技术的迅速发展,AI在各行各业都得到了广泛应用,并成为数字经济的核心驱动力之一。 首先,AI的兴起为数字经济带来了巨大的机遇。AI技术可以帮助企业从…

LiveSIPB流媒体国网B接口功能-国网B接口服务安装使用说明

LiveSIPB 国网B接口服务安装使用说明 1、服务说明1.1、安装包说明1.2、国网B接口信令服务1.3、国网B接口流媒体服务1.4、配置信令服务(LiveCMS)1.5、配置流媒体服务(LiveSMS) 2、服务运行2.1、Windows2.2、Linux 3、配置设备接入3.1、海康STATE_GRID接入示例 4、平台使用4.1、管…

【HarmonyOS】装饰器下的状态管理与页面路由跳转实现

从今天开始,博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”,对于刚接触这项技术的小伙伴在学习鸿蒙开发之前,有必要先了解一下鸿蒙,从你的角度来讲,你认为什么是鸿蒙呢?它出现的意义又是…

小白入门基础 - Restful

一:REST与RESTful: REST:表现层状态转移,资源在网络中以某种形式进行状态转移。 RESTful是基于REST理念的一套开发风格,是具体的开发规则。 服务器端只返回数据,以json或者xml的格式。 RESTful开发规范&a…

八大算法排序@归并排序(C语言版本)

目录 归并排序概念算法思想第一步第二步第三步 算法步骤代码实现代码1代码优化 时间复杂度空间复杂度特性总结 归并排序 概念 归并排序(Merge Sort)是一种基于分治策略的经典排序算法。它的基本思想是将待排序的数组划分成两个子数组,分别对…