协助Mac上的安装后脚本

时间:2016-12-05 04:55:53

标签: macos shell

这是新的。我需要使用postinstall脚本将文件和文件夹移动到Mac上用户的Application Support文件夹。对于文件,我只想在文件尚不存在时移动它。如果确实存在,我不想覆盖它。这是我的剧本。它运行但没有任何东西被复制。我正在使用Packages应用程序,顺便说一下,这个脚本被加载到postinstall脚本选项卡中。

#!/bin/sh
if ! "/Library/Application Support/MyApp/MyApp user dict"; then 
mv "$1/Contents/Resources/MyApp user dict" "/Library/Application Support/MyApp/.";
fi

mv "$1/Contents/Resources/Spellcheck Dictionary" "/Library/Application Support/MyApp/.";
exit 0

1 个答案:

答案 0 :(得分:1)

特定于用户的任务通常不属于安装程序脚本 - 请记住,计算机上可能有多个用户,并且在安装程序运行时可能无法访问其中一些用户。 (例如,用户可能具有加密的主目录,或者在安装程序运行之后可能不存在。)如果您的应用程序需要将文件复制到用户的主目录,则它应该在首次启动时执行此操作

尽管如此,我还是看到了这个脚本的几个具体问题:

  1. 您的脚本在多个地方引用if [ ! -f "/path/to/file" ] ; then … 。您确定您的脚本在命令行上传递了一个参数吗?

  2. 测试文件是否不存在的正确语法是:

    -f

    您的脚本缺少方括号和man test条件。 (有关详细信息,请参阅$1。)

  3. 假设mv应该是当前用户主目录的路径,那么向后会有mv from to的参数。目的地是最后的,而不是第一个。 (语法基本上是{{1}}。)