Visual Studio Installer:如何定位Windows公用文档文件夹?

时间:2011-04-07 16:28:12

标签: visual-studio deployment installer

我正在创建一个桌面应用程序,需要将SDF文件安装到SpecialFolder.CommonDocuments文件夹(Win 7中的C:\Users\Public\documents)。在Visual Studio桌面部署项目中,如何在文件系统编辑器中指定此文件夹?

我尝试在文件系统编辑器中创建一个自定义文件夹,并将其指向“属性”窗格中的CommonDocuments文件夹,如下所示:

Properties pane screenshot

不幸的是,该规范不会构建。我不想硬编码文件夹路径,因为它在Windows版本之间有所不同。那么,如何在FileSystem Editor中指定CommonDocuments文件夹?谢谢你的帮助。

2 个答案:

答案 0 :(得分:12)

我想出了这个并将其记录在内部用途。所以,我将在这里重印这篇文章:

Visual Studio部署项目不直接支持CommonDocuments文件夹,但我们可以使用启动条件编辑器添加该支持,该编辑器具有“搜索目标计算机”任务。我们将使用该任务在Windows注册表中搜索Public Documents文件夹的路径,并将结果分配给名为COMDOCFOLDER的安装程序属性(实际上是变量)。然后,我们将使用该变量在文件系统编辑器中设置自定义文件夹的路径。

以下是执行任务的步骤。首先,在Visual Studio部署项目中打开启动条件编辑器:

Launch Conditions Editor

右键单击“搜索目标计算机”,然后从“上下文”菜单中选择“添加注册表搜索”。将出现一个新项目(见上文1)。将其命名为Get Common Documents Folder。在属性窗格(参见上面的2)中,将“Property”属性(我们的变量名称)设置为COMDOCFOLDER,将“Root”属性(要搜索的注册表根密钥)设置为vsdrrHKLM ,并将'RegKey'属性(要查找的注册表项)设置为SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders。请注意,我们从'RegKey'属性中省略了根密钥。最后,将“Value”属性(我们在注册表项中搜索的值的名称)设置为Common Documents。 COMDOCFOLDER变量现在将保存Public Documents文件夹的路径。

接下来,转到Visual Studio部署项目中的文件系统编辑器:

File System Editor

右键单击“目标计算机上的文件系统”,然后选择“添加特殊文件夹>上下文菜单中的“自定义文件夹”。将出现一个新项目(见上文1)。重命名项Common Documents。在属性窗格中(参见上面的2),将“Property”属性设置为COMDOCFOLDER。我将'DefaultLocation'属性设置为Windows Vista及更高版本的CommonDocuments文件夹的硬编码值;只有在COMDOCFOLDER属性返回空值时才会使用此值,这不应该发生。安装程序现在有一个Common Documents文件夹,指向Public Registry文件夹,如Windows注册表中所指定。

有更多信息in this Microsoft Support How-To

答案 1 :(得分:0)

David Veeneman的答案很棒!帮了很多忙。 稍作修正:

  

右键单击“目标计算机上的文件系统”,然后选择“添加特殊文件夹>上下文菜单中的“自定义文件夹”。将出现一个新项目(见上文1)。重命名项目Common Documents。在属性窗格中(参见上面的2),将“Property”属性设置为

[COMDOCFOLDER]

这些方括号是必要的,否则在执行安装程序时会收到异常。