2012-05-09 19 views
8

Si no se auto registra. entonces, ¿cómo realizamos el registro dll COM mientras instalamos usando WIX?registrando com dll en wix

Según el tutorial, utilicé el ejemplo ComPlusApplication (no .net dll). Pero no está funcionando. No se registra

Puedo registrarme usando regsvr32 desde la línea de comando con éxito. Leí sobre no crear acciones personalizadas para registrar com dlls.

SO ¿cuál es el mejor enfoque? Si necesitamos usar calor, ¿dónde escribimos los comandos y agregamos el resultado de wxs al proyecto principal?

+0

Aunque solicitó una forma de registrarse, podría considerar no registrar los componentes COM. Los modelos COM sin registro le permiten usar COM dlls sin tocar el registro. Ver: http://msdn.microsoft.com/en-us/library/ms973913.aspx – harper

Respuesta

17

Yo recomendaría fuertemente con la función Heat.exe Wix para cosechar todos los datos necesarios para registrar el componente COM y luego hacer referencia al fragmento en sus .wxs presentar la siguiente manera:

<ComponentGroupRef Id="FooBar.dll" /> 

o incluirlo en su archivo .wxs así:

<?include FooBar.dll.wxi?> 

este método le da un control total sobre lo que sucede durante el registro/Anulación de la inscripción del componente Com.

Sin embargo, puede seguir utilizando Regsvr32 en un proyecto Wix. Pero depende de la correcta ejecución de las funciones RegisterServer/UnregisterServer en el componente COM

<CustomAction Id="RegisterFooBar" 
        Directory="INSTALLDIR" 
        ExeCommand='regsvr32.exe /s "[INSTALLDIR]FooBar.dll"'> 
    </CustomAction> 
    <CustomAction Id="UnregisterFooBar" 
        Directory="INSTALLDIR" 
        ExeCommand='regsvr32.exe /s /u "[INSTALLDIR]FooBar.dll"'> 
    </CustomAction> 

Publique sus acciones a la secuencia de instalación.

<InstallExecuteSequence> 
     <Custom Action="RegisterFooBar" After="InstallFinalize">NOT Installed</Custom> 
     <Custom Action="UnregisterFooBar" After="InstallFinalize">REMOVE="ALL"</Custom> 
    </InstallExecuteSequence> 
+0

Utilicé la herramienta de calor para generar y luego copié la salida a mi archivo .wxs. – rakheep

+0

@rakheep: Si encuentra que una respuesta es útil, hágala por favor. Cuando haya recibido una o más respuestas correctas, seleccione la mejor respuesta. – JOG

+0

Parece que falta el comando anular el registro en su publicación anterior. También tuve que usar este método cuando no pude extraer la información del registro usando heat para 1 dll particular. Trabajó para todos menos 1 en un proyecto en particular. –

2

Puede intentar utilizar el programa heat.exe, y luego hacer referencia al fragmento en su código wix.

archivo heat.exe -Gg salida privado

Como en:

archivo heat.exe my.dll -Gg salida privado my.wxs

Sal. Si se agrega el modificador -gg se generarán las guías, de lo contrario, se puede omitir si se desean agregar manualmente.

Cuestiones relacionadas