gpt4 book ai didi

Qt 应用程序。在 Mac/XP/Vista/Windows 7 上部署 : Any common access directory to put the License File?

转载 作者:行者123 更新时间:2023-12-04 13:35:11 26 4
gpt4 key购买 nike

我必须在以下环境中部署 Qt 应用程序:

  • Mac OS/X(>= Tiger 10.4 Intel Based,最高 Snow Leopard 10.6.+)
  • Windows XP
  • Windows Vista
  • Windows 7

我需要一个通用的访问目录来放置许可证文件,并且我需要机器的每个用户都可以对其进行读/写访问 - 不仅仅是管理员。

我检查了很多 Qt 函数,如下所示:

QString QDir::homePath()
QDir QDir::home ()
QString QDir::rootPath ()
QString QDir::tempPath ()

...但它们似乎都返回特定于用户或过于笼统的路径。

是否有任何 Qt 特定函数来获得通用的“应用程序路径”?

考虑到操作系统版本,我已经开始考虑创建自己的函数,但即使在这种情况下,我也感到有些失落。您是否知道任何好的资源可以为我上面提到的操作系统找到适合每个路径的路径?

最佳答案

这是对我自己问题的回答,但我会等着看是否有更好的解决方案。(也许我错过了一个 Qt 函数)。

我使用 QSettings 类进行了以下修改(@thequark:为灵感 +1):

---------------------------------------------
QString orgName = "fooOrg";
QString appName = "fooApp";
QSettings qsettings(QSettings::IniFormat, QSettings::SystemScope, orgName, appName);
QString iniFilepath = qsettings.fileName();
QString commAppPath = iniFilepath.left(iniFilepath.length() -
QString("/fooOrg/fooApp.ini").length());
---------------------------------------------

如您所见,我并没有真正使用 QSettings 对象,但是我只是得到它的文件路径,看看 Qt 将把它存储在哪里。

使用很重要:

  • QSettings::IniFormat:因为我们是对文件感兴趣 - 不是例如一个Windows 注册表位置
  • QSettings::SystemScope:因为我们想要一个特定的机器而不是用户特定的路径

以上代码针对 (1) iniFilepath (2) commAppPath 变量和各种 O/S 产生以下结果:

Mac 雪豹 10.6.7

  1. /Library/Preferences/Qt/fooOrg/fooApp.ini
  2. /库/首选项/Qt

Windows XP-SP3

  1. C:/Documents And Settings/All Users/Application Data/fooOrg/fooApp.ini
  2. C:/Documents And Settings/所有用户/应用程序数据

Windows 7 (64) 和 Windows Vista SP2

  1. C:/ProgramData/fooOrg/fooApp.ini
  2. C:/程序数据

虽然是 hack,但我认为这是一个很好的解决方案仅涉及内部 Qt 调用,不使用任何 O/S 特定函数。

如果您有任何更好的想法...请告诉我。

编辑 - PS:在 Mac OS-X 中,目录“/Library/Preferences”对于非管理员用户是不可写的。我最终使用了目录“/Users/Shared”。

关于Qt 应用程序。在 Mac/XP/Vista/Windows 7 上部署 : Any common access directory to put the License File?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6504799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com