Visual Studio 将项目设置为目标 Public 文档文件夹

Visual Studio Setup Project to target Public Documents folder

我正在使用 Microsoft 团队的扩展程序 Visual Visual Studio 2017 Installer Projects 为 Visual Studio 的桌面应用程序创建 MSI 安装程序。我已经成功创建了一个 SetUp 项目,并在 SetUp 项目的 File System Editor 中设置了所有必要的属性(桌面快捷方式、程序文件菜单等)。安装程序需要将 XML 文件部署到目标计算机上的 Public Documents 文件夹。 问题:如何定位安装程序将安装应用程序的用户计算机上的 Public 文档文件夹?

背景:此安装程序是为 MS Office VSTO Add-In for WORD 构建的,它的部署是通过 Windows 安装程序(而不是通过 ClickOnce)完成的。根据许可管理系统,他们的 XML 配置文件需要部署到应用程序目录,该目录不是我们的加载项目录,而是加载加载项的应用程序目录。在这种情况下,XML 文件的推荐位置是 public 文件夹,例如 Vista 和更高版本的 Windows.

上的 Public Documents 文件夹

我刚刚点击了 UI 的 VS2017 安装程序项目。我看不到指定 public 文档文件夹的方法。您可以添加用户定义的文件夹(右键单击 "file system" > 添加特殊文件夹 > 用户定义的文件夹)但仅限于 predefined properties of Windows Installer,不包括 public 文档文件夹。

如果您只需要安装到一个普通文件夹,而不要求它是 public 文档文件夹,您可以使用 CommonAppDataFolder 作为替代。指定用户定义文件夹的默认位置。

否则,您可以为安装程序项目编写调用 SHGetKnownFolderPath(FOLDERID_PublicDocuments,...) and assigns the result to a property. Then specify that property for DefaultLocation of user-defined folder. Here is a tutorial for writing a VB custom action 的自定义操作。

虽然我强烈建议完全摆脱安装程序项目并使用 WiX toolset instead which provides much more flexibility. It comes with a nice Visual Studio extension too. WiX already defines the property WIX_DIR_COMMON_DOCUMENTS that is initialized to the path of public documents folder. Example