运行 dmg C++ 中的 pkg
Run pkg within dmg C++
尝试在 Google 上搜索,但似乎找不到任何信息。
我需要通过代码执行 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
)。请注意,如果软件包需要管理员权限才能安装,您将需要 运行 installer
命令作为 root。
编辑:要获取已安装卷的完整路径,您可能必须解析 hdiutil
的输出。它看起来像这样,尽管它在很大程度上取决于磁盘映像的格式:
/dev/disk2 Apple_partition_scheme
/dev/disk2s1 Apple_partition_map
/dev/disk2s2 Apple_HFS /Volumes/mountedvolume
尝试在 Google 上搜索,但似乎找不到任何信息。
我需要通过代码执行 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
)。请注意,如果软件包需要管理员权限才能安装,您将需要 运行 installer
命令作为 root。
编辑:要获取已安装卷的完整路径,您可能必须解析 hdiutil
的输出。它看起来像这样,尽管它在很大程度上取决于磁盘映像的格式:
/dev/disk2 Apple_partition_scheme
/dev/disk2s1 Apple_partition_map
/dev/disk2s2 Apple_HFS /Volumes/mountedvolume