在 mac 上部署的 qt 程序。配置文件在启动独立应用程序时不写入,在 qt creator 中 运行 时有效
qt program deployed on mac. config file not writing when standalone app launched, works when run from within qt creator
我有一个为 mac osx 开发的程序。当程序是来自 Qt 创建器的 运行 时,将在 myapp.app/Contents/MacOS 文件夹中创建一个日志文件和一个 config.cfg 文件,以及可执行文件。这是正确的行为,程序需要这些文件。
当我将应用程序独立部署到 运行 时(通过使用 macdeploymentqt 工具链接所需的库)应用程序启动并且 运行s 正确但是日志和 config.cfg 文件不会写入 myapp。app/Contents/MacOS 文件夹,因此无法读入设置。
有没有办法解决这个问题?有人遇到过这个吗?
米奇
出于安全原因,osx 可能不允许您写入已安装应用程序的捆绑包位置,因为当多个用户使用您的应用程序时可能会发生冲突。
要跨平台,您可以改为:
QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)
解析为
~/Library/Application Support/<APPNAME>
和
C:/Users/<USER>/AppData/Local/<APPNAME>
或 windows.
上的同等学历
您永远不应该写入应用程序包,无论是 Mac 还是 Windows。即使在 Windows 上,如果您的用户不是管理员,它也不会工作。这个想法最后一次在 Windows 95 上有意义——甚至在 Windows NT 上也没有。别这样。
我有一个为 mac osx 开发的程序。当程序是来自 Qt 创建器的 运行 时,将在 myapp.app/Contents/MacOS 文件夹中创建一个日志文件和一个 config.cfg 文件,以及可执行文件。这是正确的行为,程序需要这些文件。
当我将应用程序独立部署到 运行 时(通过使用 macdeploymentqt 工具链接所需的库)应用程序启动并且 运行s 正确但是日志和 config.cfg 文件不会写入 myapp。app/Contents/MacOS 文件夹,因此无法读入设置。
有没有办法解决这个问题?有人遇到过这个吗?
米奇
osx 可能不允许您写入已安装应用程序的捆绑包位置,因为当多个用户使用您的应用程序时可能会发生冲突。
要跨平台,您可以改为:
QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)
解析为
~/Library/Application Support/<APPNAME>
和
C:/Users/<USER>/AppData/Local/<APPNAME>
或 windows.
上的同等学历您永远不应该写入应用程序包,无论是 Mac 还是 Windows。即使在 Windows 上,如果您的用户不是管理员,它也不会工作。这个想法最后一次在 Windows 95 上有意义——甚至在 Windows NT 上也没有。别这样。