我正在创建一个桌面应用程序,需要将SDF文件安装到SpecialFolder.CommonDocuments
文件夹(Win 7中的C:\Users\Public\documents
)。在Visual Studio桌面部署项目中,如何在文件系统编辑器中指定此文件夹?
我尝试在文件系统编辑器中创建一个自定义文件夹,并将其指向“属性”窗格中的CommonDocuments文件夹,如下所示:
不幸的是,该规范不会构建。我不想硬编码文件夹路径,因为它在Windows版本之间有所不同。那么,如何在FileSystem Editor中指定CommonDocuments文件夹?谢谢你的帮助。
答案 0 :(得分:12)
我想出了这个并将其记录在内部用途。所以,我将在这里重印这篇文章:
Visual Studio部署项目不直接支持CommonDocuments文件夹,但我们可以使用启动条件编辑器添加该支持,该编辑器具有“搜索目标计算机”任务。我们将使用该任务在Windows注册表中搜索Public Documents文件夹的路径,并将结果分配给名为COMDOCFOLDER的安装程序属性(实际上是变量)。然后,我们将使用该变量在文件系统编辑器中设置自定义文件夹的路径。
以下是执行任务的步骤。首先,在Visual Studio部署项目中打开启动条件编辑器:
右键单击“搜索目标计算机”,然后从“上下文”菜单中选择“添加注册表搜索”。将出现一个新项目(见上文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部署项目中的文件系统编辑器:
右键单击“目标计算机上的文件系统”,然后选择“添加特殊文件夹>上下文菜单中的“自定义文件夹”。将出现一个新项目(见上文1)。重命名项Common Documents
。在属性窗格中(参见上面的2),将“Property”属性设置为COMDOCFOLDER
。我将'DefaultLocation'属性设置为Windows Vista及更高版本的CommonDocuments文件夹的硬编码值;只有在COMDOCFOLDER属性返回空值时才会使用此值,这不应该发生。安装程序现在有一个Common Documents文件夹,指向Public Registry文件夹,如Windows注册表中所指定。
答案 1 :(得分:0)
David Veeneman的答案很棒!帮了很多忙。 稍作修正:
右键单击“目标计算机上的文件系统”,然后选择“添加特殊文件夹>上下文菜单中的“自定义文件夹”。将出现一个新项目(见上文1)。重命名项目Common Documents。在属性窗格中(参见上面的2),将“Property”属性设置为
[COMDOCFOLDER]
这些方括号是必要的,否则在执行安装程序时会收到异常。