我正在使用 Wix Toolset 3.8 Visual Studio 插件。我创建了一个 WIX 设置库,它封装了一些将由各种服务部署项目使用的通用组件。此库包含对需要打包到每个部署中的多个解决方案文件的引用。
这些依赖项以几种不同的方式在我的 wix 库片段中使用。例如:
<Binary Id="InstallationScript" SourceFile=".\Dependency1.vbs" />
<CustomAction Id="DependencyAction"
BinaryKey="InstallationScript"
VBScriptCall=""
Execute="deferred"
Return="check"
HideTarget="no"/>
<Component Id="DLL_Component" Guid="4745D9E2-0EBA-EE57-D8DB-677ADA9E9EC8">
<File Id="DLL1" Name="Dependency1.DLL" Source=".\Dependency1.dll" Vital="yes" KeyPath="yes" DiskId="1"/>
</Component>
无论我将文件作为链接添加到项目中还是将它们复制到项目目录中,以及我是在项目目录中引用它们还是使用它们原始位置的相对路径,WIX 设置库都构建得很好。当我将片段包含在我的 WIX 设置项目中以进行服务部署时,问题就出现了。
<Custom Action="DependencyAction" Before="InstallFinalize">
NOT INSTALLED AND NOT UPGRADINGPRODUCTCODE
</Custom>
安装项目在文件夹结构中的相对深度不同,因此相对路径不会指向与从 WIX 库引用时相同的位置。当我从 WIX 库中引用操作或功能时,我收到错误,例如The system cannot fine the file '.\Dependency1.dll'
XML 正在按原样读取并从安装项目位置而不是库项目位置引用,因此相对目录是错误的。我可以将 WIX 库中的相对路径设置为使用它的安装项目应该使用的路径,或者我也可以将解决方案文件复制到安装项目目录中,但是当然,这完全违背了使用通用 WIX 库。还有其他服务部署项目需要使用这个库。
所以问题是,我如何引用 WIX 库中的解决方案文件,以供使用它的安装项目使用,而不管安装项目所在的目录如何?