0

我是 OSx 开发的新手。

我正在使用 Packagemaker 3.0.4 创建一个安装程序包。由于我想在安装过程中删除我的应用程序的本地设置,我决定删除 com.identifier.plist。但是,我的脚本编写并不是那么好,我才刚刚开始探索 Packagemaker 的能力。

理想情况下,我希望我的实现像这样简单:

  1. 检查 .plist 文件是否存在
  2. 去掉它。

我试过了:

#!/bin/sh
defaults delete ~/Library/Preferences/com.identifier.AppName.plist

然后我将 delete.sh 文件保存到桌面。我打开了 Packagemaker 应用程序并在 Scripts Postflight 中提供了我的桌面的路径:/Users/MyName/Desktop/delete.sh。然后我执行了构建和运行。它没有用。我认为它可能是脚本,所以我将其更改为:

#!/bin/sh
rm ~/Library/Preferences/com.identifier.AppName.plist;

然后我以与上面脚本相同的方式加载了 delete.sh 文件。但我收到了这个错误:

3 月 29 日 20:50:54 Mac-mini installd[5425]:PackageKit:安装失败:PKG:“com.testIdentifier.test.AppName.pkg”的飞行后脚本\nError Domain=PKInstallErrorDomain Code=112 UserInfo=0x100404220“从包“test.pkg”运行脚本时出错。” {\n NSFilePath = "./postflight";\n NSLocalizedDescription = "从包 \U201ctest.pkg\U201d. 运行脚本时出错。";\n NSURL = "./Contents/Packages/test.pkg -- file://localhost/Users/MyName/Desktop/AppName.mpkg/";\n PKInstallPackageIdentifier = "com.testIdentifier.test.AppName.pkg";\n}

如果有人有创建和添加脚本到 Packagemaker 的分步实现,也许我的脚本不正确,如果你能帮助我,那就太棒了。

非常感谢您!:)

4

2 回答 2

1

您是否尝试从终端启动您的 delete.sh?看起来您的语法有错误 - ';' 在 rm 命令结束时,您应该为 rm 命令使用 -f 标志(请参阅man rm),否则脚本将提示确认并且 postflight 脚本不能是交互式的。
编辑:正如一二三提到的分号 - 不是重点,你应该看看他的回答。在您创建包之前,只需在终端中尝试您的脚本(您可以sudo su在以 root 身份登录之前执行此操作)

于 2013-03-30T06:17:40.587 回答
1

我懂了...

这是我的脚本:

#!/usr/bin/env bash

file=~/Library/Preferences//com.identifier.AppName.plist
if [ -e "$file" ]
then
# file is found
/usr/bin/defaults delete ~/Library/Preferences//com.identifier.AppName
else
# file not found."
fi

exit 0

I then added it to PackageMaker. I'm not really sure if I'm right but I might have just forgotten to add the script's file into the contents. That's why it never worked earlier. I just put the script's path on the postflight.

Anyway, thanks a lot to everyone for the tips.

于 2013-04-01T18:20:44.637 回答