提问者:小点点

跨平台C++应用程序存储在哪里?


我想在本地存储千兆字节的媒体--并且在卸载应用程序时让它们自动删除。 我发现了这个问题,但它需要qt库,而且只存储app设置。

我猜Windows,Mac和Linux都遵循着一个惯例。 是否有任何std助手-或类似的-用于存储应用程序数据,跨平台。

如果没有,在每个平台上,我需要存储这些信息的路径是否有一个约定? 我计划为每个操作系统创建一个安装程序,所以知道这些路径会很有用,这样我就可以在这里安装我的其他数据。


共2个答案

匿名用户

我想在本地存储千兆字节的媒体--并且在卸载应用程序时让它们自动删除。

普通但熟练的用户能够将介质复制到其他地方,并定期备份磁盘。

但是,大多数C++程序都有一个接受程序参数的main,您可以常规地提供程序参数来删除数据。 请确保正确记录您的设计。

看这个答案。 在Unix或POSIX系统(Linux,MacOSX,FreeBSD.。。。)上,您可能接受--clean-all-the-muss程序选项。

我猜Windows,Mac和Linux都遵循着一个惯例。

据我所知,这个猜测是错误的。

更一般地,阅读有关包管理器的内容。 他们有很多。 请参见guix以获得一个有趣的示例。 Debian和Fedora有不同的。 研究GNU stow和autoconf。

您可能需要使用数据库,可能是SQLite或PostgreSQL。

在Linux上,请参见Advanced Linux Programming then syscalls(2)以及有关systemd的更多信息。

在Windows上,阅读有关WinAPI的内容。

是否有存储这些路径的约定

Linux有hier(7),但是一些Linux发行版(包括Android)没有遵循这一标准。

我的推荐:研究一些接近你目标的开源软件的C++代码。 你可以在github,gitlab或SoftwareHeritage上找到其中的一些。 另见POCO。

匿名用户

“Application Uninstall”事件对操作系统是可见的,因此您最好找到一些特定于操作系统的钩子来注册回调,以便自己删除本地文件。

编辑:C++STL是一段代码(库),用于编写运行在某些OS之上的应用程序,因此STL不是查找应用程序安装/卸载事件的地方,这些事件是OS级别的事件。 但是没有什么可以阻止您为任何操作系统编写卸载程序应用程序。 问题是由谁执行,如何执行,何时执行。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(跨|平台|c++|应用程序|存储)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?