在Python和PyObjC中设置Info.plist文件,不使用Xcode



我正在使用PyObjC在Python中编写一个相对简单的助手应用程序。由于它的简单性(一个主文件在另一个文件中有一些辅助函数),我不使用Xcode进行开发。

但是,我想设置一些Info.plist密钥,我不知道如何让我的程序找到Info.plist文件。特别是,我想将LSUIElement密钥设置为1,以便在Dock中隐藏我的应用程序。

我在与主.py文件相同的目录中创建了一个名为Info.plist的文件,并添加了以下文本:

<?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>
    <key>LSUIElement</key>
    <string>1</string>
</dict>
</plist>

然而,它并没有成功地从Dock中隐藏我的应用程序。

我有两个问题:

  1. 在应用程序中进行验证的最简单方法是什么是否正在读取Info.plist文件?可能有任何数字Dock图标没有隐藏的原因,那么有一些简单的原因吗我可以在Info.plist中设置密钥,然后在我的应用程序中评估检查是否正在读取Info.plist

  2. 使用时,设置Info.plist文件的正确方法是什么PyObjC?在我的主程序中是否有一些变量需要设置告诉它在哪里可以找到Info.plist

非常感谢您的帮助或指导!

===

编辑:问题基本解决了——我想我只是看错了方向。

看起来正确的做法是首先使用py2app捆绑我的应用程序,py2app在捆绑包中创建自己的Info.plist,然后编辑/替换该Info.plist以包含元素

<key>LSUIElement</key>
<string>1</string>

我想补充一下。它就像一个符咒——我的应用程序现在被隐藏在Dock之外。成功

要使用Info.plist文件,脚本需要是应用程序包的一部分,系统库只在应用程序包中的特定位置查找Info.plist。

如果从命令行("python-main.py")启动脚本,系统将使用Info.plist文件,但该文件嵌入在python安装中。

创建应用程序包的最简单方法是使用py2app,它可以构建独立的应用程序包,并具有自定义info.plist的选项:http://pythonhosted.org/py2app/tweaking.html.

最新更新