AutoUpdate de cliente en Crm

En una organizaciones con docenas/cientos de puestos cliente mantener las máquinas actualizadas puede ser una tarea difícil de conseguir.

Para este propósito contamos con varios mecanismos que nos harán la vida más fácil (o al menos lo intentarán). A continuación paso a describir como echar a andar uno de estos mecanismos: La herramienta ClientPatchConfigurator.exe.

 

Esta herramienta está contenida en el directorio %crm install dir%\Tools, y se ejecuta en modo texto pasándole como parámetro un fichero XML que contenga las opciones de configuración. Para hacerlo todo mucho más gráfico vamos a ir paso a paso realizando todas las opciones necesarias.

 

1. Nos bajamos el parche que queramos instalar en todos los clientes, y lo guardamos en cualquier carpeta del servidor de Crm, por ejemplo en D:\parches

2. Abrimos una ventana de comandos y vamos a D:\parches y escribimos:

CRMv4.0-KB[numero]-i386-Client-INTL.exe /x

3. Esto habrá extraído todos los ficheros contenidos en el paquete del parche. A continuación los cortamos y los pegamos en la carpeta %crm install dir%\crmweb\crmpatches. Notese que tendremos que crear dicha carpeta la primera vez que la usemos.

4. De vuelta a %crm install dir%\Tools, crearemos un nuevo fichero de texto que renombraremos como update.xml. Lo editamos y pegamos lo siguiente (después explico qué es cada cosa).

 <ClientPatches> 
 <Create> 
     <ClientPatchInfo>
         <PatchId>{85F5616A-F266-4E0B-BB4C-39B5B3AECE5C}</PatchId>
         <Title>Duplicates in Outlook with Shared Calendars, Tasks or Contacts</Title>
         <Description>Descripcion</Description>
         <IsMandatory>true</IsMandatory>
         <IsEnabled>true</IsEnabled>
         <ClientType>OutlookDesktop,OutlookLaptop</ClientType>
         <LinkId>CRMv4.0-KB949086-i386-Client-INTL.exe</LinkId>
     </ClientPatchInfo> 
 </Create> 
 </ClientPatches>
  • El Guid contenido entre las etiquetas PatchId lo obtenemos del fichero config.xml que obtuvimos en el paso 3.
  • El título y la descripción no son relevantes, sólo las ponemos a modo informativo para poder distinguir los distintos parches cuando tengamos varios parches preparados para la autoactualización.
  • Las opciones IsMandatory e IsEnabled de los pasos 7 y 8 se ponen a True cuando queremos publicar un fix, y a false (sí, ambas se ponen a false) cuando queramos despublicarlo. Nótese que si no lo despublicamos, el fix seguirá siendo considerado como obligatorio cada vez que conectemos un nuevo cliente. Después haré un pequeño anexo para mostrar como despublicar un fix.
  • ClientType nos dice el tipo de cliente para el que el parche estará disponible: Desktop, Laptop, o ambos.
  • LinkId muestra el nombre del fichero .exe que descomprimimos en el paso 2.

Nota: Podemos poner múltiples secciones <ClientPatchInfo>, una para cada parche, en el mismo fichero.

5. Ahora, de nuevo en modo texto, vamos al directorio Tools y ejecutamos:

microsoft.crm.tools.clientpatchconfigurator.exe update.xml

6. Ya podemos olvidarnos del servidor e ir a la máquina cliente. En ella, abrimos un editor de registro y localizamos la clave:

HKEY_LOCAL_MACHINE\Software\Microsoft\MSCRMClient

7. Hacemos click con el botón derecho y le damos a New - String. Le damos el nombre AutoUpdateDownloadUrl, y el valor https://servername/crmpatches

Una imagen vale más que mil palabras:

regkey

8. Y como dijo mi ídolo el de bricomanía: "así de fácil, así de sencillo" hemos habilitado un fix para que sea publicado en cada nuevo cliente :o)

Nótese que la actualización no es transparente al usuario, sino que éste recibe una pantalla al arrancar Outlook que le pide instalar los nuevos parches publicados. Si el parche esta marcado como 'IsMandatory', Crm no funcionará a menos que el usuario acepte la instalación.

 

ANEXO: ¿Cómo despublicar un parche?

Antes de mostrar como despublicar un fix, hemos de entender qué hemos conseguido con los pasos 1-8 arriba citados. Básicamente, lo que hemos hecho ha sido añadir una fila a una tabla de la base de datos. En dicha fila, a parte del ID del fix, se marca también si el fix está disponible (IsEnabled) y si es obligatorio (IsMandatory).

Por tanto, para que un fix no sea necesario, tenemos dos posibilidades:

a) Marcarlo como no-habilitado

b) Borrar la fila de la base de datos

 

Opcion a)

Para el paso a, volvemos a ejecutar el paso 5. previa modificación del fichero XML marcando:

 <IsMandatory>false</IsMandatory>
 <IsEnabled>false</IsEnabled>

Por supuesto el resto de filas se quedan como estaban.

 

Opcion b)

Para eliminar por completo la entrada de la tabla (asumiendo que no vamos a necesitar volver a instalar este fix de nuevo), ejecutaremos la sentencia del paso 5. pero con el siguiente fichero xml:

 <ClientPatches>  
 <Delete>
     <PatchId>{5406B219-A1AC-1111-8695-72292C8195AC}</PatchId>
 </Delete> 
 </ClientPatches>

 

Podéis encontrar más información sobre este tema en la Guía de Implementación de Crm 4.0

 

Por Luis Mazario