我正在开发一个项目,需要在 MSI 安装程序中处理 System.IO.Compression.Native.dll 的版本降级。这个问题在 GitHub 上进行了讨论,建议使用 WiX 的 CompanionFile 功能来解决版本冲突。
GitHub问题供参考:
.NET 7 中 System.IO.Compression.Native.dll 的版本降级导致 Microsoft 安装程序损坏 #82518
重现步骤:
解决方法:
建议的解决方法是使用 WiX 的 CompanionFile 功能。具体来说,将 System.IO. Compression.dll 配置为 System.IO. Compression.Native.dll 的伴侣。
问题:
我知道我需要设置 CompanionFile 属性,但我正在使用 WiX 的收集功能,它会自动生成组件和文件 XML 元素。因此,我无法直接编辑这些元素来添加 CompanionFile 属性。
问题:
参考资料:
任何有关如何处理这种情况的帮助或指导将不胜感激!
根据讨论,我知道如果我可以直接编辑 XML,配置应该如下所示:
<Component Id="Comp_Compression" Guid="*">
<File Id="System_IO_Compression_dll" Source="@(Path to System.IO.Compression.dll)" KeyPath="yes" />
<File Id="System_IO_Compression_Native_dll" Source="@(Path to System.IO.Compression.Native.dll)" CompanionFile="System_IO_Compression_dll" />
</Component>
但是,我需要在使用收获功能时实现此配置。
我遇到了同样的问题,这是解决方案:
按照您的描述使用压缩文件
为了收获,使用 xslt 转换文件(如果您使用 heat.exe,则将 -t 参数与 file.xslt 一起使用,或者在 WIX4 中,您可以在项目文件中定义它)
在转换文件中写入如下内容:
这包括一切...
除了...