使用 Heat 采集时如何使用 bind.FileVersion?

mat*_*tyB 3 wix heat wix3.8

我以前用过...

<?define PRODUCTVERSION="!(bind.FileVersion.MyLibrary.dll)" ?>
Run Code Online (Sandbox Code Playgroud)

...定义一个版本变量以在我的安装程序中使用。我第一次使用 Heat.exe 将安装程序(包括 MyLibrary.dll)中所需的文件/文件夹收集到名为 Source.wxs 的文件中。

如果我尝试构建安装程序,则会收到以下错误:

Unresolved bind-time variable !(bind.FileVersion.MyLibrary.dll)
Run Code Online (Sandbox Code Playgroud)

这就像声明的 Product.wxs 文件PRODUCTVERSION无法看到包含 MyLibrary.dll 详细信息的 Source.wxs 文件,但我知道这不是真的,因为如果我设置,PRODUCTVERSION="1.0.0.0"则安装程序会构建所有这些文件已正确安装。

我怎样才能bind.FileVersion“看到”MyLibrary.dll?

编辑

如果我使用 Source.wxs 中的非人类友好文件 ID(见下文),我可以让它工作,但这真的是最好的解决方案吗?

  <?define PRODUCTVERSION="!(bind.fileVersion.fil023E197261ED7268770DDE64994C4A55)" ?>
Run Code Online (Sandbox Code Playgroud)

der*_*asp 5

SuppressUniqueIds切换到更容易,您也可以在文档true中看到这一点。结果,您的 ID 中将有一个文件名而不是 GUID。