osx:如何将软件包安装到用户的应用程序支持目录中?

Posted

技术标签:

【中文标题】osx:如何将软件包安装到用户的应用程序支持目录中?【英文标题】:osx: How to install a package into user's application support directory? 【发布时间】:2017-03-21 19:16:28 【问题描述】:

我需要在根 Audio/Plug-Ins/VST & Components 目录中安装 2 个音频插件。我的安装程序做得很好。但我还需要将预设文件的目录安装到 /Users/$USER/Library/Application Support/MyCompany 文件夹中。

我听说安装程序无法在同一个安装程序中安装到 / 和 ~,但我真的希望它为用户安装 1 次。因此,首先安装 VST 和组件似乎是一个好主意。然后将预设文件夹安装在临时位置(如 /tmp 或类似位置),然后运行安装后脚本将文件移动到用户的库中......但我无法让它工作。

这是我要运行的脚本:

#!/bin/bash

# movePresets.sh

# I want something like this...but it doesn't work because $USER is root in the installer I believe

/usr/bin/sudo -u $USER mkdir -p "/Users/$USER/Library/Application Support/MyCompany/Presets"
/usr/bin/sudo -u $USER mv -r "/tmp/Presets" "$USER/$USER/Library/Application Support/MyCompany"


exit 0

显然,我不知道以 root 身份访问用户目录的正确方法。请帮忙...谢谢。

【问题讨论】:

您应该使用productbuild为此创建一个安装程序包(例如.pkg.mpkg);它可以完成你提到的一切。 post-install.sh 文件在哪里?您可以将该文件添加到用户家中的某个位置,然后使用其位置检索用户家路径。或者只是你可以要求安装后文件必须从用户的主目录(启动它时是终端默认目录)运行。 【参考方案1】:

您是否尝试过先将用户保存在变量中?

#!/bin/bash
realuser=$USER
# or
#realuser=$(whoami)

/usr/bin/sudo -u $realuser mkdir -p "/Users/$realuser/Library/Application Support/MyCompany/Presets"
/usr/bin/sudo -u $realuser mv -r "/tmp/Presets" "$realuser/$realuser/Library/Application Support/MyCompany"

【讨论】:

这有什么不同? $USER 仍然是 root,而不是真正的用户。

以上是关于osx:如何将软件包安装到用户的应用程序支持目录中?的主要内容,如果未能解决你的问题,请参考以下文章

NSPersistentDocument OSX 的正确目录

JavaFX 本机安装程序 OSX 工作目录

如何关闭OSX 10.11 SIP

mac osX packageMaker:如何将目标设置为用户主目录?

为啥OSX 不能在“Macintosh HD”上安装,Mac OS X 讨论区

如何在 osx 机器中将 Apple 配置文件从一个用户转移到另一个用户?