类人猿同胞、睡莲叶和水轮!
我正在使用 VS 2008 在 C#/.NET/WPF 中开发 Windows 桌面应用程序。该应用程序需要在 Vista 和 XP 计算机上安装和运行。我正在开发一个安装/Windows 安装程序项目来安装该应用程序。
我的应用程序需要对 SQLCE 数据库文件 (.sdf) 以及与我正在使用的第三方控件相关的一些其他数据库类型文件进行读/修改/写访问。这些文件应在 PC 上的所有用户/登录名之间共享,其中任何一个都不需要成为管理员。当然,这意味着这些文件不能进入程序自己的安装目录(在 Vista 出现之前,这种事情经常发生,是的,是的!)。
我原以为解决方案会很简单。Vista 和 XP 都有用于此目的的共享应用程序数据文件夹。(Vista 中为“\ProgramData”,XP 中为“\Documents and Settings\All Users\Application Data”。) .NET Environment.GetFolderPath(SpecialFolder.CommonApplicationData) 调用用于查找给定 PC 上这些文件夹的路径,是的, 是的!
但我不知道如何将共享应用程序数据文件夹指定为安装项目中的目标。
安装项目提供了一个“Common Files”文件夹,但该文件夹用于共享程序组件(而不是数据文件),通常位于“\Program Files”下,并且具有与“\Program files”中其他任何内容相同的安全限制,是的是的!
安装项目提供了一个“用户的应用程序数据”文件夹,但这是一个每个用户的文件夹,这正是我想要避免的,是的,是的!
是否可以通过 VS 2008 安装项目以可靠的跨 Windows 版本的方式将文件添加到共享应用程序数据文件夹中?谁能告诉我怎么做?
我通过其他来源了解到了我的问题的答案,是的,是的!可悲的是,它没有解决我的问题!是什么让我——一个修理工?是的是的!
要将内容放入 VS2008 安装项目的 Common Application Data 文件夹的子目录中,请执行以下操作:
在解决方案资源管理器中右键单击您的安装项目,然后选择“查看 -> 文件系统”。
右键单击“目标计算机上的文件系统”并选择“添加特殊文件夹 -> 自定义文件夹”。
将自定义文件夹重命名为“通用应用程序数据文件夹”。 (这不是生成的文件夹的名称,它只是为了帮助您保持清晰。)
将文件夹的 DefaultLocation 属性更改为“[CommonAppDataFolder][Manufacturer]\[ProductName]”。请注意与应用程序文件夹的 DefaultLocation 属性的相似之处,包括单个反斜杠的奇怪使用。
有一个名为“Property”的文件夹属性,这个荒谬(但不可否认)的事实让您惊叹不已。
将文件夹的 Property 属性更改为“COMMONAPPDATAFOLDER”。
放置在“Common Application Data”文件夹中的数据文件将被复制到“\ProgramData\Manufacturer\ProductName”(在 Vista 上)或“\Documents and Settings\All Users\Application Data\Manufacturer\ProductName”(在 XP 上)安装程序已运行。
现在事实证明,在 Vista 下,非管理员无法修改/写入此处的文件。因此,所有用户都可以读取这些文件,但他们也可以在“\Program Files”中读取这些文件。那么,我想知道 Common Application Data 文件夹的意义何在?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)