Я действительно борюсь с WiX. У меня есть .NET сборки для установки, которые требуют регистрации для COM Interop, И они должны быть зарегистрированы в другой среде, которая требует вызова метода Register () в сборке .NET, которая находится в GAC. Этот метод регистрации представляет собой «черный ящик» со скрытым механизмом хранения, поэтому я не могу выполнить эту операцию декларативно.
Я понял, что декларативный подход лучше всего подходит для регистрации COM, но у меня есть две проблемы с использованием heat.exe:
RegAsm работает, но Heat.exe задыхается в моей сборке с сообщением:
heat.exe: предупреждение HEAT5151: возможно
не собирать данные из файла, который был
ожидается сборка:
C: [...] дллы..
Если этот файл не является сборкой, вы
могу проигнорировать это предупреждение. Иначе,
эта ошибка может быть полезна для
диагностировать сбой: исключение имеет
был брошен т
призывание.
Вторичная регистрация, которую мне нужно сделать, основывается на атрибуте [ComRegisterFunction], который обычно запускает дальнейшие действия во время регистрации сборки для COM-взаимодействия. Обычно это происходит, когда сборка регистрируется RegAsm.exe или вызывается System.Runtime.InteropServices.RegistrationServices. Итак, мне нужна эта функция ComRegisterFunction в моей сборке для выполнения во время установки.
Я не против принять декларативный подход к регистрации COM (или я не возражаю, если бы тепло работало на моей сборке), но мне нужно вызвать эту функцию ComRegisterFunction как часть установки. В идеале я хотел бы взглянуть на все устанавливаемые мной исполняемые файлы, подумать о них для любых методов с атрибутом [ComRegisterFunction] и вызвать эти методы, это будет сделано после установки всех файлов.
Как мне добиться этого в WiX? Или есть другой подход? Если это имеет какое-то значение, я использую интеграцию Visual Studio с Votive со ссылками на проекты.