2

我使用 heat.exe 生成了一个 .wxs 文件,其中列出了我要安装的所有文件。我告诉 heat 把它们放在一个 ComponentGroup 中,这样我就可以从另一个(手工生成的).wxs 文件中引用它们。

但是,自动生成的文件规范如下所示:

<Component Id="cmp10D34854E51FC71E0A65900015642460" Directory="dir82EF0D8D89A5B984406E0CCDF2A5E5BC" Guid="*">
    <File Id="fil65369E1F7C8702A7B78CF393C06A9C7B" KeyPath="yes" Source="SourceDir\CHANGELOG.md" />
</Component>

由于源以“SourceDir”开头,因此在 light.exe 中出现以下错误:

: error LGHT0231 : The component 'cmp10D34854E51FC71E0A65900015642460' has a key file with path 'TARGETDIR\vwf-windows-build\CHANGELOG.md'.  Since this path is not rooted in one of the standard directories (like ProgramFilesFolder), this component does not fit the criteria for having an automatically generated guid.  (This error may also occur if a path contains a likely standard directory such as nesting a directory with name "Common Files" under ProgramFilesFolder.)

知道我需要做什么才能使其正常工作吗?

4

1 回答 1

4

有趣的是,当我今天问类似的问题时,我没有找到您的问题(使用 heat.exe 处理放置在 WindowsVolume 中的文件 - GUID 问题)。

您在组件的目录属性中指定的文件夹在哪里?自动生成的 GUID(heat 的 -ag 开关)对于组件来说不是随机的,而是取决于目标文件夹。错误消息基本上告诉您将组件放入以标准目录为根的目录(例如 [ProgramFilesFolder])或提供静态 GUID。您可以通过在收获期间设置开关 -gg 而不是 -ag 来实现后者:

heat dir HeatDir -out harvested.wxs -var var.SourceDir -cg MyComponentGroup -dr MyInstallDir -g1 -ag -ke -srd -scom -sreg

但请注意,生成的 GUID 现在是随机的。如果您使用 heat 以自动方式更新安装程序项目,这可能会导致升级安装过程中出现问题。

希望有帮助。

于 2014-07-10T17:17:50.337 回答