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

这篇具有很好参考价值的文章主要介绍了Mac平台下如何制作pkg安装包以及rpath设置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

打包工具介绍

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

打包前准备工作

  • 创建一个目录 macProject
    • macProject目录中是以下目录结构
    •   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 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为例
    • 比如QT的库默认会安装到这里 /opt/local/libexec/qt4/Library/Frameworks
    • 需要哪个,就把哪个拷贝到我们自己包中的Frameworks下,如果需要 QtCore,就把 QtCore.framework 这个目录全部拷贝过来
  • MacOS : 存放程序和我们自己的动态库,mac平台下动态库是dylib后缀
  • Resources : 存放资源文件,可以将图标资源放在这里。图标资源格式必须是icns格式,可以直接在网页上将PNG格式或其他格式图片转为icns格式

打包

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

    • 1、选择Distribution,点击next,创建一个打包工程名MyPackage
      Mac平台下如何制作pkg安装包以及rpath设置,软件打包,macos
      Mac平台下如何制作pkg安装包以及rpath设置,软件打包,macos

    • 2、点击MyPackage

      • 2.1、Settings项:主要填写应用程序唯一标识符 Identifier和版本号 Version
        Mac平台下如何制作pkg安装包以及rpath设置,软件打包,macos

      • 2.2、Payload项:在Applications下面添加我们的应用程序,也就是刚才创建好的文件夹 myProject.app
        Mac平台下如何制作pkg安装包以及rpath设置,软件打包,macos

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

        • 这个根据需求添加,不需要的话不需要添加
          Mac平台下如何制作pkg安装包以及rpath设置,软件打包,macos
    • 3、文件选择完成后,点击菜单栏的build,在打包工程文件的同级目录下会生成一个build目录,build目录中会生成一个pkg安装包
      Mac平台下如何制作pkg安装包以及rpath设置,软件打包,macos

      Mac平台下如何制作pkg安装包以及rpath设置,软件打包,macos

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

  • 直接双击就可以安装
    Mac平台下如何制作pkg安装包以及rpath设置,软件打包,macos

  • 安装完成后,在应用程序中就可以找到我们的应用,直接双击图标就可以运行
    Mac平台下如何制作pkg安装包以及rpath设置,软件打包,macos

  • 在启动台中也能找到我们的安装程序
    Mac平台下如何制作pkg安装包以及rpath设置,软件打包,macos

  • 我们的程序会安装到这个目录下 /Applications/myProject.app文章来源地址https://www.toymoban.com/news/detail-661191.html

应用程序卸载

  • mac平台下卸载应用程序时,直接在应用程序中,右击图标,移到废纸篓即可
    Mac平台下如何制作pkg安装包以及rpath设置,软件打包,macos

otool工具介绍

  • 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 <原加载路径> <新加载路径> <目标文件>

可执行程序的rpath设置

  • 直接编译完的程序,可以使用otool -L <可执行程序或动态库> 查看下依赖
  •   root@GolddeMac-mini bin # otool -L res
      res:
          /opt/local/libexec/qt4/Library/Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.7)
          /opt/local/libexec/qt4/Library/Frameworks/QtNetwork.framework/Versions/4/QtNetwork (compatibility version 4.8.0, current version 4.8.7)
          /opt/local/libexec/qt4/Library/Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.7)
          @rpath/libparson.dylib (compatibility version 0.0.0, current version 0.0.0)
          /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 905.6.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5)
    
  • 这里的rpath是没有值的,如果直接使用,会找不到相关依赖,比如 libparson.dylib
  • 需要在命令行设置下rpath, 以下这个命令表示设置res的rpath路径为当前路径
  •   install_name_tool -add_rpath @executable_path res
    
  • 这样设置后,只要把libparson.dylib拷贝到res所在目录,就可以找到该依赖了。
  • 使用 otool -l res 命令查看下,如果最后一行有下面这个,说明就设置成功了
  •   path @executable_path (offset 12)
    
  • 还没完,res依赖的Qt库在系统目录下,在没有Qt的Mac电脑上是找不到这个路径的,因此还要修改Qt的依赖路径
  •   install_name_tool -change /Applications/kpki.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui  @rpath/../Frameworks/QtGui.framework/Versions/4/QtGui ztaClient
    
  • 这个路径 @rpath/…/Frameworks/QtGui.framework/Versions/4/QtGui 在哪里都可以,但是要保证安装后,在用户的电脑上能找到这个,依次再修改下 QtNetwork QtCore
  • 再查看依赖
  •   root@GolddeMac-mini bin # otool -L res
      res:
          @rpath/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.7)
          @rpath/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.7)
          @rpath/../Frameworks/QtNetwork.framework/Versions/4/QtNetwork (compatibility version 4.8.0, current version 4.8.7)
          @rpath/libparson.dylib (compatibility version 0.0.0, current version 0.0.0)
          /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 905.6.0)
          /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5)
    

Mac平台第三方库依赖设置

  • 以Qt库为例, 在Linux平台, 只需要设置我们可执行程序的依赖即可, 不需要设置第三方库的依赖.
  • 比如ldd查看我们可执行程序的依赖
  •   ldd res
      libQtGui.so.4 => ./libQtGui.so.4 (0x00007fafd0f14000)
      libQtNetwork.so.4 => ./libQtNetwork.so.4 (0x00007fafd0bcd000)
      libQtCore.so.4 => ./libQtCore.so.4 (0x00007fafd06df000)
    
  • 设置res的rpath为当前路径后,只需要将Qt相关库拷贝过来即可
  • libQtGui.so.4是依赖于libQtCore.so.4的,查看依赖关系,可以看到libQtGui.so.4找不到依赖
  •   ldd libQtGui.so.4
      libQtCore.so.4 => not found
    
  • 但是这并不影响我们程序的运行,因为libQtGui.so.4是根据主程序res去找依赖的,实际是可以找到的。
  • 但是!但是!在MAC平台就会出问题。
  • 使用 otool -L QtGui 查看依赖,QtGui依赖的QtCore路径是在系统目录下
  •   otool -L QtGui
      QtGui:
          /opt/local/libexec/qt4/Library/Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.7)
          /opt/local/libexec/qt4/Library/Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.7)
    
    
  • 虽然我们已经指定了可执行程序的依赖,但是QtGui还是会找不到QtCore,因此必须还要指定QtGui的依赖, 让QtGui能找到QtCore,否则安装到没有Qt的Mac电脑上就会报错
  •   otool -L QtGui
      QtGui:
          /opt/local/libexec/qt4/Library/Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.7)
          /Applications/res.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.7)
    
  • 因此在Mac平台,只要可执行程序或者动态库依赖的不是系统库,就必须手动去给每一个程序或库设置rpath路径

Mac下安装Homebrew

  • Homebrew是MacOS(或 Linux)的软件包管理器。通过它,我们可以方便的对Mac上的各种应用软件进行管理,例如:安装、更新、查看、搜索、卸载等。
  • 可以使用以下命令安装
  •   /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
    

到了这里,关于Mac平台下如何制作pkg安装包以及rpath设置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【git】git ssh 公钥私钥 在 windows和mac 双系统分别如何生成 以及对接各个平台说明

    win和mac 双系统分别如何生成 git ssh windows版本需要下载git bash:https://gitforwindows.org/ 在 git bash 中输入如下指令: 这里需要注意这条指令 ssh-keygen -t rsa -C \\\"xx@qq.com\\\" 如果一路回车则生成的默认为一个私钥 id_rsa 和公钥 id_rsa.pub,且路径为 /c/Users/你的用户名/.ssh/ ,一旦我们指定名称

    2024年02月17日
    浏览(48)
  • 【Mac】Office 2021 for mac安装包分享,以及如何关闭微软自动更新

    Office在windows中的软件资源和“净化”已经十分成熟了。但是对于mac用户还是比较棘手的,虽然有wps兼容但是有时候特别是excel读取和处理表格时还是得office,这里笔者主要是分享office2021 for mac和交流如何关闭微软更新。 更多详细内容及 安装包领取 可以:阅读原文 2.1 用终端

    2024年02月12日
    浏览(43)
  • Mac ❀ 如何在MacOS上安装pip软件包

    以 requests 工具包为例:

    2024年01月18日
    浏览(47)
  • Mac 上如何安装Mysql? 如何配置 Mysql?以及如何开启并使用MySQL

    有许多开发的小伙伴,使用的是mac,那么在mac上如何安装,配置Mysql,以及使用Mysql了,今天来一个系统的教程。 使用mysql前,我们需要先下载mysql,并按照以下几个步骤,便可以顺利下载安装mysql了。  1:下载mysql 首先,在浏览器当中输入地址https://www.mysql.com/downloads/,或者登

    2024年02月08日
    浏览(31)
  • 如何从零开始配置前端环境以及安装必备的软件插件

    在当今快速发展的互联网时代,前端开发已经成为一项备受关注和需求不断增长的技术工作。作为一名前端工程师,拥有一台配置良好的电脑是提高工作效率和顺利进行项目开发的关键。在本文中,我们将向大家介绍如何 从零开始配置一台新的电脑 ,以便能够顺利地搭建和

    2024年02月14日
    浏览(46)
  • LRTimelapse 6 for Mac(延时摄影视频制作软件)

    LRTimelapse 是一款适用于macOS 系统的延时摄影视频制作软件,可以帮助用户创建高质量的延时摄影视频。该软件提供了直观的界面和丰富的功能,支持多种时间轴摄影工具和文件格式,并具有高度的可定制性和扩展性。 LRTimelapse 的主要特点如下: - 支持多种时间轴摄影工具,如

    2024年02月09日
    浏览(30)
  • 电子书制作软件Vellum mac中文版特点

    Vellum mac是一款专业的电子书制作软件,它可以帮助用户将文本文件转换为高质量的电子书,支持多种格式,包括EPUB、MOBI、PDF等。Vellum具有直观的用户界面和易于使用的工具,可以让用户快速地创建和发布电子书。 Vellum mac软件特点 直观的用户界面:Vellum的用户界面非常直观

    2024年02月07日
    浏览(31)
  • Mac平台上有哪些好用的常用软件?

    我大概分几类给你介绍一下吧。 一、办公类 1.微软的office系列,在mac平台也有office的全家桶,习惯用微软office的也可以安装。 2.wps office,wps可以说是国产最好用的office软件,最重要的是wps可以跨平台,并且云文档的功能非常好用,而且还免费。 3.苹果自家的Numbers表格、Key

    2023年04月14日
    浏览(27)
  • 音乐制作软件:Studio One 6.6.1永久激活版 Studio One 6 mac中文版

    Studio One 6.6.1中文破解版是一款专业的音乐制作软件,由美国PreSonus公司开发。该软件提供了全面的音频编辑和混音功能,包括录制、编曲、合成、采样等多种工具,可用于制作各种类型的音乐,如流行音乐、电子音乐、摇滚乐等。 Studio One 6.6.1中文破解版软件特点 1. 直观易用

    2024年04月17日
    浏览(31)
  • 如何给Windows电脑重装系统+新系统设置(从检查到实施,看这一篇就够了!)包含BitLocker的备份,镜像的下载,启动盘的制作,安装的流程,驱动的下载,新电脑的设置等各个方面。

    如何给一个Windows电脑(任意版本)重装win11(此方法Windows10适用)系统? 在此之前都需要注意(或检查)什么方面? 会出现什么问题以及其解决方法? 这篇文章会给予读者一个完整的解答。 大家好,我是爱好计算机的初中生一名 由于电脑磁盘内存有限以及最近考试学习的

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包