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 的正确目录
mac osX packageMaker:如何将目标设置为用户主目录?