在 dmg C++ 中运行 pkg

Run pkg within dmg C++

本文关键字:运行 pkg C++ dmg      更新时间:2023-10-16

尝试在谷歌上搜索,但似乎找不到任何信息。

我需要通过代码执行一个存在于 dmg 文件中的 pkg 文件。原因是软件更新。我通过我的应用程序(这是一个dmg)下载更新并需要运行它。在Windows上,这非常简单:运行exe。无法弄清楚如何在Mac上实现这一目标。

就框架而言,我正在使用wxWidgets和cocoa(如果有帮助的话)。

我不知道

直接使用 cocoa API 执行此操作的方法,但您可以使用外部命令来执行此操作:使用 /usr/bin/hdiutil attach /path/to/image.dmg 挂载磁盘映像,然后使用 /usr/sbin/installer -package /Volumes/mountedvolume/installer.pkg -target / 之类的东西来安装软件包(有关更多信息和选项,请参阅man installer)。请注意,如果包需要管理员权限才能安装,则需要以 root 身份运行 installer 命令。

编辑:要获取挂载卷的完整路径,您可能需要解析hdiutil的输出。它看起来像这样,尽管它在很大程度上取决于磁盘映像的格式:

/dev/disk2              Apple_partition_scheme          
/dev/disk2s1            Apple_partition_map             
/dev/disk2s2            Apple_HFS                       /Volumes/mountedvolume