收集文件导致LGHT0231错误



我使用最新的votive (Wix v3.5)并创建了一个简单的Wix VS 2010安装项目。我添加了我的网站参考,并将Harvest选项设置为true

现在,因为我的INSTALLDIR指向IISROOT下的文件夹,我得到这个light.exe错误:

[filepath]: error LGHT0231:组件'cmp93982C4086FF8C75F07339DD7CEA8152'有一个带路径的密钥文件"TARGETDIR webdir…(文件名). xml"。因为这条路径没有根在一个标准目录(如ProgramFilesFolder)中,此组件不符合具有自动的生成的guid。(此错误也可能发生,如果路径包含可能是标准目录,例如嵌套带有name的目录ProgramFilesFolder下的"Common Files"

虽然我理解这个错误背后的原因,但我不一定同意它的合理性(也许我不理解Wix MSI生成的内在工作原理)。

如何解决这个错误?


提供一些上下文:

我正试着把这个和团队建设结合起来。我可以使用旧格式并对文件夹运行Heat/Harvest任务来绕过此问题,但不想走旧路线。

我还没有充分使用基于构建定义的新工作流,所以不确定如何合并这个自定义任务。

我需要在每次构建安装项目时运行harvest,因为我不想手动跟踪数百个文件。

问题在于该组件植根于TARGETDIR,而WiX不能使用它来自动生成向导。可以将Directory/@ComponentGuidGenerationSeed添加到该组件上方的目录中以避免此问题。通过添加此属性,您现在必须负责确保组件不会在升级期间被安装到两个不同的目录中。

在Windows Installer中,组件需要有一个不会在补丁、小升级和大升级之间改变的向导。为了方便起见,WiX可以使用组件的目录层次结构作为种子为您生成一个版本5的UUID。但是,TARGETDIR不符合此条件。

我认为原因是TARGETDIR在安装过程中发生了变化(它被设置为具有最多空闲空间的驱动器)。其中一条组件规则是"每个组件必须存储在一个文件夹中"。如果TARGETDIR在主要升级之间发生了变化,那么您最终可能会尝试将相同的组件安装到第二个文件夹。

相关内容

  • 没有找到相关文章

最新更新