WiX 4项目收割时HarvestFileAutogenerateGuids属性失效求助
在WiX 4中收割项目时生成显式Guid的解决方法
WiX 4对收割(Harvest)相关的配置做了不少调整,你遇到的属性无效问题,大概率是因为沿用了WiX 3的全局属性名,或者配置位置不对。以下是具体的解决步骤:
直接在HarvestProject元素上设置GenerateGuidsNow属性
WiX 4中,GenerateGuidsNow是HarvestProject的直接属性,而非WiX 3里的全局HarvestProjectsGenerateGuidsNow。只要在收割配置里显式开启这个属性,就能生成固定的显式Guid:<HarvestProject Project="..\YourTargetProject\YourTargetProject.csproj" GenerateGuidsNow="true" OutputDirectory="HarvestedOutput" ComponentGroupName="TargetProjectComponents" SuppressFragments="false" />全局生效的配置方式(针对所有收割项目)
如果要让所有HarvestProject都生成显式Guid,可以在wixproj文件的PropertyGroup里设置HarvestGenerateGuidsNow属性(注意属性名去掉了WiX 3里的"Projects"后缀):<PropertyGroup> <HarvestGenerateGuidsNow>true</HarvestGenerateGuidsNow> </PropertyGroup>关闭增量收割避免缓存干扰
如果之前已经收割过项目,WiX 4默认的增量收割(IncrementalHarvesting)会复用旧的wxs文件,导致Guid还是*。可以在HarvestProject里关闭增量收割,或者手动删除之前生成的收割文件后重新构建:<HarvestProject ... IncrementalHarvesting="false" />验证Heat工具参数(如果直接调用Heat)
如果你是直接调用WiX的Heat命令行工具,需要加上-gg参数(对应GenerateGuidsNow),示例命令:heat project ..\YourProject\YourProject.csproj -gg -out Harvested\YourProject.wxs
按照以上配置重新构建项目,收割生成的wxs文件里的组件就会带有固定的显式Guid,而不是*了。
内容的提问来源于stack exchange,提问作者ElDog
相关产品推荐
相关产品推荐

