La forma más fácil (y Rob M va a despotricar acerca de cómo esto es incorrecto ) es sólo para usar SelfRegCost=1
en la etiqueta del archivo de la DLL.
Esto está mal, porque deberíamos controlar explícitamente el registro de la DLL, no permitiéndole simplemente ejecutar código arbitrario a través de DllRegisterServer. La teoría es que una DLL no debería hacer nada más que colocar las entradas apropiadas en el registro cuando se llama a DllRegisterServer. Desafortunadamente, muchos de ellos hacen más que eso, por lo que el registro automático podría ser la única forma de hacer que su instalación funcione.
También es incorrecto, porque eso significa que el sistema de instalación de Windows no sabe nada acerca de esas claves de registro, y lo que debería y no debería estar allí. Eso significa que la reparación no funcionará, y posiblemente la desinstalación no se limpiará correctamente, etc.
De lo contrario, puede generar el código de WiX apropiado apuntando heat.exe
a su DLL e integrando su salida en su WiX actual proyecto. Obtendrá una variedad de etiquetas Class, ProgID, TypeLib y Registry. Es posible que deba editar manualmente esa salida para que compile.
Espero que ayude.
Así que, básicamente copiar/pegar la salida de heat.exe y cambiar las rutas apropiadas, etc? – Davy8
Me gusta poner el wxs que el calor creado en un fragmento al que hace referencia la wx principal. ¿Cuáles fueron las opciones que pasaste al heat, que no registraron el dll? – CheGueVerra
Por lo general, tengo que mover la clase y las etiquetas de programación en la etiqueta de archivo y, posiblemente, editar algunas de las claves de registro. Específicamente, si la DLL es una DLL .NET, deberá proporcionar identificadores únicos para las claves de registro que hacen referencia a mscoree.dll o las colisiones con las generadas automáticamente. –