1

我正在使用 WiX 构建一个 MSI 安装程序,用于重新分发我的 MinGW64 应用程序。这需要将 MinGW dll 与可执行文件一起发送。

libstdc6.dll 文件没有版本控制。最干净的方法是什么?

我试过了:

  1. 将伴随文件添加到 dll 组件,指向主应用程序 exe,它是版本化的。但是,wix 抱怨我无法为 dll 设置伴侣
  2. 将 dll 放在主应用程序 exe 组件中,但在每个 wix 常见问题解答、howto 和论坛中都不鼓励这样做......
  3. 向 dll 文件元素添加属性DefaultVersion="!(bind.FileVersion.mainapp.exe)"以覆盖(缺失的)dll 版本。乍一看,这似乎可行,但 wix 正在发出与此相关的警告:

C:\Users\Etienne\Documents\coding\ocean\ocean.wxs(116):警告 LGHT1103:DefaultVersion '!(bind.FileVersion.mainapp.exe)' 用于没有版本的文件'libstdc6.dll' . 此文件的任何条目都不会放在 MsiFileHash 表中。对于未版本化的文件,指定与实际文件不同的版本可能会导致在修复或修补期间出现意外的版本控制行为。版本化资源以消除此警告。

解决这个问题的最佳方法是什么?

谢谢,

艾蒂安

4

1 回答 1

2

恕我直言,您最好的选择是选项 #2。所有规则都假定可执行代码将被正确版本化,因此最好将其部署为各自组件的 KeyPath。由于 .dll 没有版本控制,因此将其作为带有版本控制文件的数据文件是次佳选择。

虽然,为了记录,对 .dll 进行版本控制是迄今为止最优化的解决方案。:)

于 2013-05-10T14:12:33.667 回答