Mac平台下如何制作pkg安装包以及rpath设置

打包工具介绍

  • Mac平台规范包可以使用Packages工具。
  • 下载地址

打包前准备工作

  • 创建一个目录 macProject

    • macProject目录中是以下目录结构
    sh 复制代码
      myProject.app
      	└── Contents
      		├── Info.plist
      		├── MacOS
      				├── res
      				├── libmymath.dylib
      		├── Frameworks
      		└── Resources
      				├── wolf.icns
  • Info.plist : 主要描述的是一些工程的配置。具体字段解释

    关键字 类型 说明
    CFBundleExecutable String 可执行程序文件名。即与启动图标绑定的可执行程序
    CFBundleIconFile String 图标文件文件名
    CFBundleIdentifier String 应用程序唯一标识
    CFBundleName String 程序安装后在界面上显示的名称
    LSUIElement Boolean 置为 true 可以将应用程序设置为无界面(UI-less)模式。这意味着应用程序在启动时不会显示任何窗口或图标,只会在菜单栏上显示一个小点
    LSBackgroundOnly Boolean 设置为 true 可以确保应用程序在后台运行,并且不会成为活动应用程序。
    • 文件内容格式如下。如果没有特殊需求,使用以下字段就够用了。
    xml 复制代码
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
      <plist version="1.0">
      <dict>
      	<key>CFBundleExecutable</key>
      	<string>res</string>
      	<key>CFBundleIconFile</key>
      	<string>AppIcon</string>
      	<key>CFBundleIdentifier</key>
      	<string>com.csdn.smallgraywolf</string>
      	<key>CFBundleName</key>
      	<string>smallgraywolf</string>
      </dict>
      </plist>
  • Frameworks : 一般放置了此程序所使用的第三方 Framework,比如QT库

  • MacOS : 存放程序和我们自己的动态库,mac平台下动态库是dylib后缀

  • Resources : 存放资源文件,可以将图标资源放在这里。图标资源格式必须是icns格式,可以直接在网页上将PNG格式或其他格式图片转为icns格式

打包

  • 直接在用应用程序中双击打开Packages创建一个打包工程

    • 1、选择Distribution,点击next,创建一个打包工程名MyPackage

    • 2、点击MyPackage

      • 2.1、Settings项:主要填写应用程序唯一标识符 Identifier和版本号 Version

      • 2.2、Payload项:在Applications下面添加我们的应用程序,也就是刚才创建好的文件夹 myProject.app

      • 2.3、Scripts项:需要添加两个文件preinstall(安装程序前执行的shell脚本命令)和postinstall(安装程序后执行的shell脚本命令)

        • 这个根据需求添加,不需要的话不需要添加
    • 3、文件选择完成后,点击菜单栏的build,在打包工程文件的同级目录下会生成一个build目录,build目录中会生成一个pkg安装包

    • 到这里安装包就已经制作成功了

  • 直接双击就可以安装

  • 安装完成后,在应用程序中就可以找到我们的应用,直接双击图标就可以运行

  • 在启动台中也能找到我们的安装程序

  • 我们的程序会安装到这个目录下 /Applications/myProject.app

应用程序卸载

  • mac平台下卸载应用程序时,直接在应用程序中,右击图标,移到废纸篓即可

Mac平台下rpath设置

  • 这里要注意下,我们编译的程序,如果依赖动态库,默认的加载路径是我们的编译路径,但如果安装在别人电脑上,编译路径是不存在的,因此我们要修改程序的rpath,让程序加载当前路径下的动态库。
  • 我们要设置让res去加载当前路径下的动态库。这个工作我们在打包前就要做好。
sh 复制代码
  install_name_tool -add_rpath @executable_path res
  • otool工具介绍
    • otool命令全称object file displaying tool,是针对目标文件的展示工具,可以帮助我们发现应用中使用了哪些系统库,以及调用了哪些对象的方法和属性。
    • otool -L : 查看目标文件链接了哪些库
    • otool -l : 查看目标文件的详细信息
  • mac平台下需要通过 install_name_tool 命令行工具设置rpath
    • 添加rpath : install_name_tool -add_rpath <加载路径> <目标文件>
    • 删除rpath : install_name_tool -delete_rpath <加载路径> <目标文件>
    • 修改rpath : install_name_tool -change <原加载路径> <新加载路径> <目标文件>

Mac下安装Homebrew

  • Homebrew是MacOS(或 Linux)的软件包管理器。通过它,我们可以方便的对Mac上的各种应用软件进行管理,例如:安装、更新、查看、搜索、卸载等。
  • 可以使用以下命令安装
sh 复制代码
  /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
相关推荐
TESmart碲视4 小时前
Mac 真正多显示器支持:TESmart USB-C KVM(搭载 DisplayLink 技术)如何实现
macos·计算机外设·电脑
2501_9151063216 小时前
Xcode 上传 ipa 全流程详解 App Store 上架流程、uni-app 生成 ipa 文件上传与审核指南
android·macos·ios·小程序·uni-app·iphone·xcode
他们都不看好你,偏偏你最不争气20 小时前
【iOS】AFNetworking
开发语言·macos·ios·objective-c
钟念1 天前
【打包app】uniapp打包ios端和安卓端app
macos·objective-c·cocoa
森之鸟1 天前
Mac电脑上如何打印出字体图标
前端·javascript·macos
m_136872 天前
Mac M 系列芯片 YOLOv8 部署教程(CPU/Metal 后端一键安装)
yolo·macos
搜狐技术产品小编20232 天前
CAEmitterLayer:iOS 中创建炫酷粒子效果的魔法工具
macos·ios·objective-c·cocoa
未来之窗软件服务3 天前
操作系统应用开发(七)mac苹果模拟器——东方仙盟练气期
macos·仙盟创梦ide·东方仙盟·系统模拟器
liliangcsdn3 天前
Mac本地docker安装Kibana+ElasticSearch
elasticsearch·macos·docker
千寻简3 天前
远程连接Mac操作ClaudeCode一直提示登录Invalid API key · Please run /login
macos