首先让我建立一些背景背景。我已经做了我能做的一切来禁用我的系统上的fips。如果它仍然启用,那么它太深了,甚至我的系统管理员都不能用他的凭据把它拿出来。
另外,我已经添加了:我可以在我的系统上找到的每个msbuild.exe.config。
那就是说我害怕了:
异常类型:System.InvalidOperationException
堆栈跟踪: 在System.Security.Cryptography.MD5CryptoServiceProvider..ctor() 在Microsoft.Tools.WindowsInstallerXml.Common.GenerateIdentifier(String prefix,Boolean fipsCompliant,String [] args) 在Microsoft.Tools.WindowsInstallerXml.Extensions.DirectoryHarvester.HarvestDirectory(String path,String relativePath,Boolean harvestChildren) 在Microsoft.Tools.WindowsInstallerXml.Extensions.DirectoryHarvester.Harvest(String argument) 在Microsoft.Tools.WindowsInstallerXml.Harvester.Harvest(String argument) 在Microsoft.Tools.WindowsInstallerXml.Tools.Heat.Run(String [] args)
深入研究代码我发现了类和方法:
Microsoft.Tools.WindowsInstallerXml.Common.GenerateIdentifier
Source for above class on github
有一个参数将切换到fips兼容算法。问题是,我似乎无法弄清楚如何通过heat.exe获取该值并进入它。我尝试了许多命令行配置,但似乎都没有。
我不是主要的.NET开发人员,因此可能会遗漏一些非常明显的东西。
答案 0 :(得分:0)
Heat.exe不支持符合FIPS标准的ID;它总是使用MD5。这是一个合理的功能请求,但是,如果您想在http://wixtoolset.org/issues/处提交一个请求。
答案 1 :(得分:0)
此问题的存在是因为heat.exe目前不支持传递符合fips的参数。已请求此功能http://wixtoolset.org/issues/4368/