Самый простой способ (и Роб М будет разглагольствовать о том, что это неправильно ) - просто использовать SelfRegCost=1
в теге File для DLL.
Это неправильно, потому что мы должны явно контролировать регистрацию DLL, не позволяя ей просто запускать произвольный код через DllRegisterServer. Теория заключается в том, что DLL не должна делать ничего, кроме размещения соответствующих записей в реестре при вызове DllRegisterServer. К сожалению, многие из них делают больше, поэтому самостоятельная регистрация может быть единственным способом заставить вашу установку работать.
Это также неправильно, потому что это означает, что система установки Windows ничего не знает об этих разделах реестра, а также о том, что должно и не должно быть. Это означает, что восстановление не будет работать, и, возможно, деинсталляция не очистит должным образом, и т. Д.
В противном случае вы можете сгенерировать соответствующий код WiX, указав heat.exe
на свою DLL и интегрировав ее вывод в текущий проект WiX. Вы получите различные теги Class, ProgID, TypeLib и Registry. Возможно, вам придется вручную отредактировать этот вывод, чтобы получить его для компиляции.
Надеюсь, это поможет.