wxWidgets 解决配置文件难题:默认新文件符合 XDG 标准,迁移旧文件仅需一函数调用!
2026/6/10 14:22:57 网站建设 项目流程

wxWidgets 解决配置文件难题

wxWidgets 与乌克兰人民和国际社会站在一起。

导航链接:主页;关于(概述、截图、翻译、团队、许可证);下载;文档(书籍、参考手册、常见问题解答、社区维基、教程);支持(问题跟踪器、邮件列表、论坛、IRC 频道、商业支持);开发者(资源、代码仓库、编码规范、开发者博客、编程夏令营);致谢。

历史遗留问题

[XDG 基础目录规范](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) 长期是 Linux 下组织应用程序数据文件的标准,但 wxWidgets 存在时间更久。早在 1997 年为其添加配置文件支持时,常见做法是将“点文件”直接放在用户主目录。名为 `myapp` 的应用程序默认用 `~/.myapp` 作配置文件,且默认设置不能随意改,否则现有应用程序会“丢失”配置文件,惹恼用户。

不过,若不担心现有应用程序配置文件丢失,应用程序可调用代码:wxStandardPaths::Get().SetFileLayout(wxStandardPaths::FileLayout_XDG);这样新文件会创建在符合 XDG 标准的 `~/.config` 目录(若定义了 `$XDG_CONFIG_HOME` 变量,则用该变量指定目录)。但这没完全解决问题,因要知道此方法才能在新应用程序中添加调用,其他应用程序仍面临处理现有安装的难题。

新改变带来新希望

wxWidgets 最近两项更改解决了问题。一是从 wxWidgets 3.3.0 版本开始,`wxFileConfig` 默认在 `~/.config` 目录下创建新文件,前提是主目录无现有点文件。这种方式有广泛向后兼容性,现有安装不受影响,若主目录有文件则仍用该文件,应用程序首次在新系统运行时,会避免污染主目录,将文件创建在 `~/.config` 目录。

二是若想为现有应用程序用户更改配置文件位置,只需调用新的 [wxFileConfig::MigrateLocalFile()](https://docs.wxwidgets.org/latest/classwx_file_config.html#a11ccb0d85d3d5982130372b9a653d66d) 函数。若不存在 `~/.config/.myapp` 文件,不执行操作;若存在,会将文件移到 `~/.config/myapp/myapp.conf`,但可能失败,需检查错误。若迁移成功,`wxFileConfig` 默认用新的、符合 XDG 标准位置的文件,无需特殊操作。

总结,`wxFileConfig` 默认行为成了多数人期望的,创建新文件无需额外操作,迁移现有文件只需添加函数调用。若想保留旧行为,创建 `wxFileConfig` 时需指定 `wxCONFIG_USE_HOME` 标志。希望 2024 年,wx 应用程序停止在主目录使用配置文件。

评论及其他链接

请启用 JavaScript 以查看评论。博客存档

快速链接:wxWidgets 中的 Hello World、在线手册、社区维基、报告错误、GitHub 仓库、开发路线图

关注我们:新闻 RSS 订阅、开发者博客

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询