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)"
相关推荐
HerayChen16 分钟前
HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac
android·macos·智能手机
hairenjing112319 分钟前
在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
android·人工智能·windows·macos·智能手机
小李飞刀李寻欢3 小时前
Mac电脑如何解压rar压缩包
macos·rar·解压
Java小白笔记3 小时前
Mac中禁用系统更新
macos
AndyFrank3 小时前
mac crontab 不能使用问题简记
linux·运维·macos
Mac新人3 小时前
一招解决Mac没有剪切板历史记录的问题
macos·mac
王拴柱3 小时前
Mac保护电池健康,延长电池使用寿命的好方法
macos·mac
daa203 小时前
macos中安装和设置ninja
macos
Java小白笔记4 小时前
Mac解决 zsh: command not found: ll
macos
小钱c75 小时前
Mac下安装Apache JMeter并启动
jmeter·macos·apache