Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
程序文件中的安装路径:一些问题 我正在开发一个QT 5 C++的Windows(XP到10及以上)软件。到目前为止,默认安装路径为C:\Users\Public\Kontiki。 然而,我读到这可能不是一个好的实践,我宁愿将它安装在C:\ProgramFiles\Kontiki中。 这就是我打算做的_C++_Qt_Program Files - Fatal编程技术网

程序文件中的安装路径:一些问题 我正在开发一个QT 5 C++的Windows(XP到10及以上)软件。到目前为止,默认安装路径为C:\Users\Public\Kontiki。 然而,我读到这可能不是一个好的实践,我宁愿将它安装在C:\ProgramFiles\Kontiki中。 这就是我打算做的

程序文件中的安装路径:一些问题 我正在开发一个QT 5 C++的Windows(XP到10及以上)软件。到目前为止,默认安装路径为C:\Users\Public\Kontiki。 然而,我读到这可能不是一个好的实践,我宁愿将它安装在C:\ProgramFiles\Kontiki中。 这就是我打算做的,c++,qt,program-files,C++,Qt,Program Files,然而,我有两个主要关切 关注1 “我的安装”文件夹中的文件包括.exe、.dll和文档。 但是,它还包括用户参数(.txt文件)。用户必须能够在我的程序中的GUI帮助下更改这些参数。问题是,当我的软件位于程序文件中时,无法执行此操作,因为它们没有写入程序文件的权限。我应该做的是将.txt参数文件放在AppData中。所以我要做的是: 在安装时(使用NSIS安装程序),我会将.txt参数文件写入$APPDATA 在我的Qt程序中,我将使用QStandardPaths::AppDataLocatio

然而,我有两个主要关切

关注1 “我的安装”文件夹中的文件包括.exe、.dll和文档。 但是,它还包括用户参数(.txt文件)。用户必须能够在我的程序中的GUI帮助下更改这些参数。问题是,当我的软件位于
程序文件
中时,无法执行此操作,因为它们没有写入
程序文件
的权限。我应该做的是将.txt参数文件放在
AppData
中。所以我要做的是:

  • 在安装时(使用NSIS安装程序),我会将.txt参数文件写入
    $APPDATA
  • 在我的Qt程序中,我将使用
    QStandardPaths::AppDataLocation
    所有这些都表明,我担心的是,我不确定NSIS安装程序
    $APPDATA
    的路径是否始终与Qt使用
    QStandardPaths::AppDataLocation
    返回的路径相同。例如,可能在新版本的Windows上会有一些差异或其他东西。也许这不是一个合法的担忧,但我想核实一下
  • 关注2
    如果程序安装在
    ProgramFiles
    中,我是否可能会遇到UAC问题(例如,如果用户不是管理员)或其他问题


    非常感谢你的帮助

    如果程序安装在
    ProgramFiles
    中,则用户可以执行该程序而不会出现任何问题(无论管理员状态如何)

    但是,如果应用程序必须更新任何文件(.txt文件),那么用户帐户中的任何目录都是一个好地方。对于这种情况,大多数应用程序都使用
    文档
    文件夹

    而且
    ProgramFiles
    目录并不是特定于用户的

    最好的方法是为要放置要更新的文件的目录创建一个用户环境变量(在任何意外情况下易于修改)。以编程方式读取NSIS文件和应用程序中的环境变量并使用它

    环境变量ex:


    PROJECTDIR--C:\Users((USERID))\Documents\PROJECTDIR

    非常感谢您的回答。我希望所有用户共享相同的参数。然后,我的想法是将参数放在C:\ProgramData\Mysoft中,这是通用数据位置。然而,据我所知,这是一个只读位置,用户将无法在那里保存其参数。。。我想我没有选择权,我必须在用户路径中选择一个路径?如果是这样,我必须将位置设置为C:/Users/alecs26/AppData/Roaming/TestPath。问题是,如果我在软件安装时创建.txt参数文件,这个用户就可以了,但是如果其他用户登录,他的AppData位置将没有任何文件。我可以检测到没有文件,并在此位置使用默认参数创建文件。这是个好主意吗?是的。。。。如果您想共享信息,请尝试写入到每个人都有写入权限的远程位置。。。。