3

我有一个 WiX 安装程序脚本,它引用了我的 Visual Studio 解决方案文件夹根目录中的文件夹中的文件。在我的 .wixproj 中,我尝试设置Properties| Tool Setting| Linker

-b $(SolutionDir)\WixSource

并得到一个错误,因为在 $SolutionDir 变量的中间是一个带空格的文件夹。所以,我尝试了

-b "$(SolutionDir)\WixSource"

并得到一个错误,抱怨在名称周围使用引号,并且显然我应该在文件夹的末尾加上一个双反斜杠,其中包含空格。 --不能这样做,因为它在$(SolutionDir)宏内部。

因此,根据关于 SO 的建议,我希望尝试使用LinkerBindInputPathsPropertyGroup,但该属性的实际使用情况严重缺乏文档。

我正在运行 WiX 3.7,以下是不允许的...

在谷歌搜索时,我被告知它需要进入<Package>元素内部,例如:

<Package ...>
    <PropertyGroup>
        <LinkerBindInputPaths ???/>
    </PropertyGroup>
</Package>

WiX 文档@ http://wix.sourceforge.net/manual-wix3/msbuild_task_reference_light.htm

指定链接器用于定位所有文件的活页夹路径。这相当于 light.exe 中的 -b 开关。命名的 BindPath 是通过在提供的路径后面加上等号 ("=") 的 2 个或更多字符的存储桶名称来创建的。

由于没有从谷歌搜索中找到示例,我无法破译“2 个或更多字符的存储桶名称”是什么,或者是否有任何规则。

我希望能够指定类似的东西$(var.SolutionDir)\WixSource,但需要一些帮助来确定如何解决这个问题......

4

1 回答 1

6

LinkerBindInputPaths是项目组,而不是属性组。它位于您的 .wixproj MSBuild 项目文件中。例如:

<ItemGroup>
  <BindInputPaths Include="$(MSBuildProjectDirectory)" />
  <BindInputPaths Include="$(WIX_ROOT)src" />
  <BindInputPaths Include="$(WIX_ROOT)bin" />
  <BindInputPaths Include="$(WIX_ROOT)" />
</ItemGroup>
于 2013-08-05T20:35:15.643 回答