【问题标题】:How to edit a file in an app installed through Packages on mac osx如何在通过 Mac osx 上的 Packages 安装的应用程序中编辑文件
【发布时间】:2013-11-07 07:39:16
【问题描述】:

我正在 mac osx 上使用 python 制作一个应用程序,需要更改 config.cfg 文件。我使用py2app 将python 脚本转换为myapp.app。我通过 setup.py 将我的 config.cfg 文件包含在 myapp.app 的资源位置。然后,我使用Packages 通过制作myapp.pkg 文件将myapp.app 安装在/Applications 位置。但是,当我通过 Show Package Contents 在应用程序位置打开 myapp 并尝试编辑 config.cfg 文件时,会出现一个对话框,上面写着You don't own the file config.cfg and don't have permission to write it。我正在使用 osx 10.8.5 Mountain Lion 和 Xcode 4.6.1。我的 config.cfg 文件

[FOLDER]
extensions = cfv
#############################

[KMS]
serverIP1 = 127.56.98.104
serverPort1 = 8080
serverIP2 = 172.46.84.145
serverPort2 = 8080
SSL=TRUE

【问题讨论】:

    标签: python macos package py2app packagemaker


    【解决方案1】:

    不要在 app bundle 中存储可修改的数据;其中的所有内容都应该是静态的,其他权限将一团糟,代码签名会中断等。通常,用户可修改的文件属于用户的主文件夹。对于配置文件,最好的做法可能是将其视为首选项文件并将其存储在 ~/Library/Preferences.xml 中。请注意,首选项文件的命名约定是在应用程序名称之前以相反的顺序使用您的域名作为前缀(例如 com.apple.Finder);如果您没有域名,我建议您使用“本地”作为前缀。此外,该文件夹中的大多数文件都是 .plist 格式(例如 com.apple.Finder.plist);你的文件可能不是,所以使用一些更合适的扩展名(.cfg 就可以了)。

    【讨论】:

    • 感谢您的建议,先生。如何将 config.cfg 文件提供给不同的用户。与最初一样,代码必须从 config.cfg 文件中读取大量数据才能启动应用程序的运行。
    • 我不确定我是否理解您要完成的工作。在 OS X 中,每个用户通常都有自己的个人应用程序设置,由他们配置和维护。我想您可以给某人一份您的 .cfg 文件的副本,并附上将其放入他们的 ~/Library/Preferences 文件夹的说明...
    • 先生,看我的config.cfg文件,关于应用程序的运行,需要服务器IP和端口。我在 config.cfg 文件中传递它。用户需要根据他们的服务器更改此服务器IP。我也在使用 configparser 来读取配置文件。所以,你是说,我需要制作一个 dmg 文件,其中包含将安装在应用程序位置的 myapp.pkg,以及用户需要将其放置在 ~/Library/Preferences 文件夹中的 config.cfg 文件。有什么方法可以在安装应用程序时自动将 config.cfg 文件直接放置在 ~/Library/Preferences 位置,而无需用户干预。
    • 在这种情况下,我建议在应用程序绑定中包含一个默认的 .cfg 文件(例如在内容/资源中),并让应用程序检查 ~/Library/Preferences/local.yourapp .cfg 存在,如果不存在,则将默认值复制到该位置。请注意,您的应用应在每次运行时执行此操作,在在 ~/Library/Preferences/local.yourapp.cfg 上运行 configparser。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多