У меня есть сборка .NET 4.0, которую нужно сделать COM-видимой во время установки. Я использую WiX (версия 3.5), поэтому логичным вариантом является создание фрагмента WiX с высокой температурой. Это работает нормально, за исключением того, что, как бы я ни крутил ручки на жаре, CodeBase RegistryValues по умолчанию имеет значение «file: /// C: /Windows/Microsoft.Net/assembly/GAC_32 / ...», в то время как сборка, безусловно, не установлен в этом каталоге.
Итак, записи в реестр добавляются правильно во время установки, но указывают на несуществующую сборку. Печальный день. У меня эта проблема возникает даже в простейшем варианте использования ("heat asm.dll -out asm.wxs").
Пока варианты кажутся такими:
Обработайте установку сборки в другом месте в проекте WiX, затем вручную измените объявления CodeBase во фрагменте, прежде чем передавать его остальной части цепочки инструментов WiX.
Вручную добавьте атрибут Assembly = ". Net" в тег файла (http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/net-COM-registration-with-heat-td3606182.html)
Преобразуйте фрагмент с помощью XSLT (http://blog.accentient.com/2010/06/03/AddingHEATOutputToTheGAC.aspx)
Ни один из этих вариантов не выглядит особенно привлекательным. Есть ли автоматический способ сделать это, не возясь с XSLT?