Visual studio Visual Studio安装程序:如何将Windows公用文档文件夹作为目标?

Visual studio Visual Studio安装程序:如何将Windows公用文档文件夹作为目标?,visual-studio,deployment,installation,Visual Studio,Deployment,Installation,我正在创建一个桌面应用程序,需要将SDF文件安装到SpecialFolder.CommonDocuments文件夹(Win 7中的C:\Users\Public\documents)。在Visual Studio桌面部署项目中,如何在文件系统编辑器中指定此文件夹 我尝试在文件系统编辑器中创建一个自定义文件夹,并将其指向属性窗格中的CommonDocuments文件夹,如下所示: 不幸的是,该规范无法构建。我不想硬编码文件夹路径,因为它在Windows版本之间有所不同。那么,如何在文件系统编辑器

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

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


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

我想出了这个办法,并将其记录下来供内部使用。所以,我将在这里重印这段文字:

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

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

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

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

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


还有更多信息。

大卫·维尼曼的答案非常棒!帮助很大。 稍微更正一下:

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

[COMDOCFOLDER]


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

非常感谢您发布此消息!你帮我省了很多时间想办法解决这个问题!