【发布时间】:2015-02-14 08:03:40
【问题描述】:
如何确定我的应用程序的哪些文件进入 Program Files (FOLDERID_ProgramFilesX64),哪些进入 ProgramData? (FOLDERID_ProgramData)?我不明白将我的应用程序的固定文件分成这两个类别的原因是什么,或者我应该如何决定哪个文件放在哪个类别中。
例如 - 我的应用程序显示的图像文件,它们是“程序”还是“数据”?
把所有东西都放在一个或另一个之下有什么问题吗?
该应用程序是为所有用户安装的,没有用户特定的配置文件或数据。
【问题讨论】:
-
注意-到目前为止,我从谷歌搜索的理解是
ProgramData实际上是指应用程序在运行时不应该更改的文件(尽管如果应用程序也有需要更改的文件在运行时,而不是基于每个用户,那么安装程序必须在 ProgramData 下设置 ACL 以允许这样做)。 -
每台机器上相同的文件应该放在 Program Files 中。在运行时而不是在安装时生成的全局文件必须放在 ProgramData 中,尽管除非绝对必要,否则应避免这样做。在每台机器上不同但在安装时生成的文件可以放在任何一个地方,但 ProgramData 可能更可取。
-
它用处不大,没有人真的想支持用户可以在没有备份机制的情况下覆盖彼此的文件的安装。仅适用于由多个程序或运行提升的程序使用的只读文件。如果您的图像文件是一个漂亮的大图像,例如多个程序显示在它们的初始屏幕中,那么它非常有用。倾向于被安装程序滥用,其中一些使整个目录可写。
-
@HansPassant:“很少使用”我想是相对的,但是有不少主流产品使用它;我的机器有 Microsoft Help、Adobe Acrobat、Adobe AIR、Minitab、Firefox、Skype 和 Symantec Endpoint Protection 等文件夹。请注意,我并不是说他们应该这样做。