【问题标题】:Visual Studio Installer: How to Target Windows Public Documents Folder?Visual Studio 安装程序:如何定位 Windows 公共文档文件夹?
【发布时间】:2011-07-31 20:39:06
【问题描述】:

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

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

很遗憾,该规范无法建立。我不想硬编码文件夹路径,因为它因 Windows 版本而异。那么,如何在文件系统编辑器中指定 CommonDocuments 文件夹?感谢您的帮助。

【问题讨论】:

    标签: visual-studio deployment installation


    【解决方案1】:

    David Veeneman 的回答很棒!帮助很大。 一点修正:

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

    [COMDOCFOLDER]

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

    【讨论】:

      【解决方案2】:

      我想出了这一点并将其记录下来以供内部使用。因此,我将在此处重新打印该文章:

      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 变量现在将保存公共文档文件夹的路径。

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

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

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

      【讨论】:

      • 非常感谢您发布此信息!你为我节省了很多时间来解决这个问题!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多