【问题标题】:How can I maintain file reference integrity from a WIX Setup Library如何维护 WIX 设置库中的文件引用完整性
【发布时间】:2014-02-10 20:38:05
【问题描述】:

我正在使用 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 库中的解决方案文件,以供使用它的安装项目使用,而不管安装项目所在的目录是什么?

【问题讨论】:

    标签: wix wix3.8 votive wixlib


    【解决方案1】:

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

    【讨论】:

    • 啊...我在“构建”选项卡底部找到了“将文件绑定到库文件”复选框,看到它在项目文件中添加了 BindFiles 和 LibBindFiles 属性,并发现 Votive = Visual Studio 加载项。链接正在按照我现在预期的方式工作。 .wixlib 较大,表示文件绑定在里面。更重要的是,源引用仅在构建 .wixlib 期间相关。当相关项目引用功能、组件或操作时,无论该项目的相对位置如何,它们都会自动链接。
    • 对于其他可能有同样问题的人...我发现项目属性 Build Tab 并没有始终如一地显示“将文件绑定到库文件”复选框。我在 VS2010 和 VS2012 中看到了同样的问题。如果窗口在垂直方向上足够小,需要滚动条,则您不能向下滚动到足够低以查看此复选框。但是,如果您给窗口足够的空间使其不需要滚动条,则复选框会显示在底部。或者,编辑项目文件并将属性手动添加到 Debug 和 Release PropertyGroup 节点。
    • 请提交一个错误。如果这是 Visual Studio 中的问题,我不确定我们是否可以修复它,但滚动应该可以。
    • 谢谢!我们将在下一次分诊会议上进行查看。
    猜你喜欢
    • 2011-11-26
    • 2021-09-21
    • 2011-03-06
    • 1970-01-01
    • 2018-06-21
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    相关资源
    最近更新 更多