Mrc*_*ief 10 wix wix3.5 votive
我正在使用最新的奉献(Wix v3.5)并创建了一个简单的Wix VS 2010安装项目.我添加了我的网站参考并将Harvest选项设置为true.
既然我INSTALLDIR指向IISROOT下的文件夹,我得到这个light.exe错误:
[filepath]:错误LGHT0231:组件'cmp93982C4086FF8C75F07339DD7CEA8152'的密钥文件路径为'TARGETDIR\webdir ... [filename] .xml'.由于此路径不是以其中一个标准目录(如ProgramFilesFolder)为根,因此该组件不符合自动生成guid的条件.(如果路径包含可能的标准目录,例如在ProgramFilesFolder下嵌套名为"Common Files"的目录,也可能发生此错误.)
虽然我理解这个错误背后的原因,但我不一定同意它的理性(也许我不理解Wix MSI一代的固有工作原理).
我该如何解决这个错误?
提供一些背景信息:
我正在尝试与Team Build一起设置它.我可以使用旧格式并对文件夹运行Heat/Harvest任务来绕过此问题,但不想使用旧版路由.
我没有使用基于工作流的新构建定义,因此不确定如何合并此自定义任务.
每次构建安装项目时我都需要运行收获,因为我不想手动跟踪数百个文件.
Ste*_*ngs 10
问题是因为该组件植根于TARGETDIR,WiX无法用于自动生成guid.您可以添加Directory/@ComponentGuidGenerationSeed到此组件上方的目录以避免此问题.通过添加此属性,您现在必须负责确保组件不会跨升级安装到两个不同的目录.
在Windows Installer中,组件需要具有在修补程序,次要升级和主要升级之间不会更改的guid.为方便起见,WiX可以使用组件的目录层次结构作为种子为您生成版本5 UUID.但是,TARGETDIR没有资格这样做.
我相信原因是TARGETDIR跨安装的更改(它设置为具有最多可用空间的驱动器).其中一个组件规则是" 每个组件必须存储在一个文件夹中 ".如果TARGETDIR在主要升级之间进行了更改,那么您最终可能会尝试将同一组件安装到第二个文件夹中.