我尝试使用以下代码,但安装时没有创建ProgramData文件夹.我的要求是在用户提供的安装目录中安装一些文件,并在ProgramData文件夹(C:\ ProgramData\COMPANYNAME\APPNAME)中部署一些配置文件.代码如下.任何人都可以帮我确定问题吗?或实现此目的的另一种解决方案
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="APPNAME" />
</Directory>
<Directory Id="CommonAppDataFolder">
<Directory Id="CommonAppDataManufacturerFolder" Name="COMPANYNAME">
<Directory Id="MyAppDataFolder" Name="APPNAME">
</Directory>
</Directory>
</Directory>
</Directory>
</Fragment>
Run Code Online (Sandbox Code Playgroud) 我需要在安装过程中在"%allusersprofile%/ Program Data"下创建一个文件夹.
安装文件是使用VS 2003安装项目创建的,在其中您可以使用几个已知文件夹...但是我看到没有映射到%allusersprofile%或"%allusersprofile%/ Program Data".
我认为创建一个"自定义文件夹"(在VS安装项目中)并将TargetLocation设置为%allusersprofile%它可以工作,但在安装过程中它说我没有该文件夹的权限(我确实有).
你知道如何在VS Setup Project中定位该文件夹吗?
另外......我在Windows XP中工作,所以%allusersprofile%映射到"C:\ Documents and Settings\All Users",但我想我应该在"Program Data"文件夹中创建我的文件夹.
在Vista中,%allusersprofile%映射到"C:\ ProgramData",如果我直接在那里创建我的文件夹,它看起来是正确的.
知道如何针对这两种操作系统吗?
附加信息: 我正在尝试这样做以避免Vista中的新安全功能,当至少作为普通用户运行时,应用程序无法在Program Files文件夹下写入文件.所以我需要将可写文件放在不是"每个用户"的"common"文件夹中.
我在 .net 3.5 中使用 C#
我将我的程序数据保存在一个文件中:C:\Program Data\MyProgramName\fileName.xml
安装并运行我的应用程序一次后,我卸载了它(在卸载过程中我从“程序数据”中删除了所有文件),然后我重新安装了应用程序,并运行了它。
奇怪的是,我的应用程序启动时就好像程序数据中的文件存在一样 - 这意味着,即使数据文件被删除,我的应用程序中仍有旧数据。
运行时:
File.Exists("C:\Program Data\MyProgramName\fileName.xml")
Run Code Online (Sandbox Code Playgroud)
即使我确定该文件不存在,我也得到了“真实”。
当我以管理员身份运行应用程序然后文件不存在时,事情变得奇怪了。
经过研究,我发现在没有管理员权限的情况下运行我的应用程序而不是获取:“C:\Program Data\MyProgramName\fileName.xml”我得到“C:\Users\userName\AppData\Local\VirtualStore\ProgramData \MyProgramName\fileName.xml"
确实有一个文件存在于以前的安装中(我显然没有删除,因为我不知道它存在)。
所以很明显,程序数据下的文件有一些虚拟路径。
编辑 :
我发现在删除虚拟商店中的旧文件后,我的应用程序突然能够找到正确的文件。(我没有对 Program Data 下的文件进行任何更改。
我的问题是:
提前致谢
我的系统上安装了Windows 7 64位.我有一个关于"C:\ ProgramData\Application Data"文件夹的问题.它提到这里,并在这里说,"应用程序数据"是一个结点指向C:\ ProgramData.所以,我希望以下命令列出C:\ ProgramData文件夹的内容(我的ProgramData文件夹中包含McAfee,Microsoft,Adobe等文件夹..)..
cd/d"c:\ ProgramData\Application Data"
DIR
但是,我没有看到任何列出的内容...但是,如果我要更深入地遍历1个目录并列出内容,那么列出该目录下的所有文件夹...
cd/d"c:\ ProgramData\Application Data\McAfee
DIR
我不明白这种行为.有人会解释吗?
programdata ×4
c# ×1
filesystems ×1
installation ×1
installer ×1
windows ×1
windows-7 ×1
wix ×1