我如何在 WiX 安装程序脚本中实际使用 LinkerBindInputPaths PropertyGroup
Posted
技术标签:
【中文标题】我如何在 WiX 安装程序脚本中实际使用 LinkerBindInputPaths PropertyGroup【英文标题】:How do I actually use the LinkerBindInputPaths PropertyGroup in a WiX Installer script 【发布时间】:2013-08-05 17:42:04 【问题描述】:我有一个 WiX 安装程序脚本,它引用了我的 Visual Studio 解决方案文件夹根目录中的文件夹中的文件。在我的 .wixproj 中,我尝试设置 Properties
| Tool Setting
| Linker
到
-b $(SolutionDir)\WixSource
并得到一个错误,因为在 $SolutionDir 变量的中间是一个带空格的文件夹。所以,我尝试了
-b "$(SolutionDir)\WixSource"
并得到一个错误,抱怨在名称周围使用引号,并且显然我应该在带有空格的文件夹末尾放置一个双反斜杠。 --不能这样做,因为它在 $(SolutionDir)
宏内。
因此,根据关于 SO 的建议,我希望尝试使用 LinkerBindInputPaths
PropertyGroup,但该属性的实际用法严重缺乏文档。
我正在运行 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
的内容,但需要一些帮助来确定如何解决此问题...
【问题讨论】:
FWIW,WiX 不是“脚本”。如果你把这个神话放在一边,学习起来会更容易。 【参考方案1】:LinkerBindInputPaths
是项目组,而不是属性组。它位于您的 .wixproj MSBuild 项目文件中。例如:
<ItemGroup>
<BindInputPaths Include="$(MSBuildProjectDirectory)" />
<BindInputPaths Include="$(WIX_ROOT)src" />
<BindInputPaths Include="$(WIX_ROOT)bin" />
<BindInputPaths Include="$(WIX_ROOT)" />
</ItemGroup>
【讨论】:
所以,文档是错误的。好的。我最终得到了一个在不使用 ItemGroup 的情况下对我有用的解决方案,但至少 SO 上记录了正确的用法! 这将导致 Visual Studio 抛出有关无效参数的错误,除非您像这样添加“InProject”元数据:<BindInputPaths Include="..."><InProject>false</InProject> </BindInputPaths>
请参阅:(***.com/questions/19515397/…)
@SteveSheldon,这通常不是真的——例如,它对我来说就像今天的 VS2013 一样。具有命名绑定路径的 HeatDirectory 可能需要它?
如果我将它用作 msbuild 参数会怎样?目前我可以像这样使用单个源目录:/p:LinkerBindInputPaths=$outPath
如果我要构建 2 个以上的项目来分隔目录怎么办?那么使用/p:LinkerBindInputPaths=$outPath1 /p:LinkerBindInputPaths=$outPath2
或/p:LinkerBindInputPaths="$outPath1, $outPath2"
之类的方法是有意义的,但两者都不起作用,我也没有找到关于该参数的任何文档。以上是关于我如何在 WiX 安装程序脚本中实际使用 LinkerBindInputPaths PropertyGroup的主要内容,如果未能解决你的问题,请参考以下文章
Wix,PostgreSQL 安装,执行 Postgresql 脚本