installation - squarespace - Registrar un servidor COM con WiX
wix installer tutorial (3)
Hay una herramienta "Tallow" incluida con Wix. Puede usarlo para generar entradas de registro correctas de forma automática. Luego, simplemente configura su instalación de wix para escribir esas entradas. Selfreg no debe ser usado.
He estado tratando de determinar la mejor solución de caso para registrar un servidor COM utilizando WiX para crear un paquete de Windows Installer y estoy luchando.
En este Archivo de ingeniería de implementación posterior : HOWTO: utilice Regsvr32.exe con WIX , hay una solicitud abierta para "Configurar policía" para tomar medidas enérgicas contra el uso de regsvr32 a través de una acción personalizada de exe. Conozco los males del uso de regsvr32
cuando se registra en el sistema y no en el usuario, pero también recuerdo que OleSelfRegister
puede tener problemas de un boletín de soporte de Microsoft (lo siento, no puedo encontrar el enlace) y creo que recomendaron el uso de regsvr32
.
¿Algún consejo?
Como señaló @Trampster, heat.exe no hace un buen trabajo al recopilar entradas de registro de los servidores COM. Lo intenté pero los resultados fueron incompletos.
En cambio, siguiendo los consejos de Monitor Registry Accesses (InstallSite Tools: Monitoring) , utilicé InstallShield RegSpyUI. Supuestamente incluye versiones de Installshield v7 y versiones posteriores, incluida la versión de evaluación. Esta información puede estar desactualizada; Puedo confirmar que no viene con el Installshield LE bastante inútil que viene con VS2013.
Afortunadamente, tenía una copia de InstallShield 2010 y esta viene con RegSpyUI.
De todos modos, RegSpyUI era muy fácil de usar: apúntalo al COM .exe, extrae la información del registro en un archivo .reg. Luego usa calor para cosechar esto en un archivo .wxs que puedes agregar a tu proyecto Wix
heat reg <some.reg> -gg -o <some.wxs>
Entonces solo se trata de modificar cualquier ruta codificada que apunte a la ubicación del COM .exe para que refleje la carpeta de instalación deseada.
por ejemplo, si el archivo .wxs creado por RegSpyUI + heat tiene algo como esto
<Fragment>
<DirectoryRef Id="TARGETDIR">
<Component Id="blah" Guid="{xxxxxxxxxxxxxxxxxxxxxxxxx}" KeyPath="yes">
<RegistryKey Key="TypeLib/{xxxxxxxxxxxxxxxxxxxxxx}/4.1/0/win32" Root="HKCR">
<RegistryValue Value="C:/Users/you/projects/MyProject/dependencies/installation/COMFOO.exe" Type="string" />
</RegistryKey>
</Component>
</DirectoryRef>
</Fragment>
y estás instalando en tu archivo wix principal a
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="COMPANY" Name="My Company">
<!--This is the actual installation folder-->
<Directory Name="MyProduct" Id="MYPRODUCT">
simplemente edite la ruta del valor RegistryValue @ a ... " [MYPRODUCT]/COMFOO.exe
"
Lea "No use las tablas SelfReg y TypeLib" en:
https://msdn.microsoft.com/en-us/library/bb204770#no_selfreg
Para WiX, eche un vistazo al elemento Componente en la referencia de esquema en:
http://wixtoolset.org/documentation/manual/v3/xsd/wix/component.html
Tome nota de ciertos elementos secundarios, como AppId , Class , ProgId , Registry , etc. La técnica adecuada es usar COM extraction
para reflejar la información de registro y emitirla declarativamente en su instalador para que MSI pueda encargarse de ella sin salir del proceso a algún código (como DllRegisterServer()
) que podría fallar y tampoco proporcionar Información de MSI sobre la huella del componente desde una perspectiva de reparación y publicidad.