0

我正在使用 Wix Toolset 3.8 Visual Studio 插件。我创建了一个 WIX 设置库,它封装了一些将由各种服务部署项目使用的通用组件。此库包含对需要打包到每个部署中的多个解决方案文件的引用。

具有解决方案文件参考的通用 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 库中的解决方案文件,以供使用它的安装项目使用,而不管安装项目所在的目录如何?

4

1 回答 1

4

创建一个包含在您的创作中引用的文件的二进制 .wixlib。(这是命令行中的 -bf,.wixproj 中的 BindFiles 属性,Votive 中的“将文件绑定到库文件”复选框。)

于 2014-02-11T05:37:53.630 回答