正在为AppleScript小程序自定义info.plist文件



所以基本上我有这个应用程序是用AppleScript制作的。现在我想自定义一些信息(例如捆绑包标识符、版本号等(。然而,似乎即使对info.plist进行最轻微的更改也会导致脚本……无法工作。

知道如何在不破坏AppleScript应用程序的情况下更改其info.plist吗?

编辑plist文件只有三个要求:
  1. 不要更改前四行的任何内容。它们应该始终看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  1. 除了纯文本字符(没有大引号、富文本、奇怪字符等(外,不要使用任何字符。我建议使用免费版本的BBEdit,这会让事情变得很好。

  2. 不要破坏层次键值结构。Plist条目的形式为:

<key>KeyWord</key>
<value-type>whatever data</value-type>

其中,值类型可以是布尔值true或false之一的string、real、integer、date、data、array、dict。它是标准的XML样式,具有开头和结尾标记(用斜线区分(以及true和false的singleton标记(斜线位于单词的末尾而不是开头(。字典中可以有键值对,数组中可以有不带键的值列表,可以随心所欲地嵌套,但必须始终按正确顺序打开和关闭标记。

常见错误有:

  • 意外删除了打开或关闭的尖括号
  • 嵌套元素的打开和关闭标签重叠(例如,dict的打开标签、数组的打开标签和dict的关闭标签,数组的关闭标签(
  • 将键与其值分开(值元素必须紧跟在键元素之后

现代的另一个问题是,小程序现在默认情况下是代码签名的。这意味着,如果在脚本编辑器之外修改小程序(包括Info.plist(的任何部分,在创建它之后,它现在将具有无效的代码签名。

出于某些目的,这并不重要,也不引人注目——但是,特别是如果您控制"System Events"或使用可访问性功能,在解决此问题之前,您会遇到模糊、令人困惑的故障。

幸运的是,在修改了Info.plist之后,重新签署应用程序包非常容易——只需在终端中运行以下操作:

codesign -fs - --preserve-metadata=entitlements /Applications/YourApplet.app

-f覆盖现有的(现在不正确的(代码签名;CCD_ 5允许它是自组织签名(与已经存在的签名相同(;CCD_ 6是维护脚本权限的脚本编辑器配置的重要部分。

最新更新