En el desarrollo de extensiones para Microsoft Dynamics 365 Business Central, es crucial manejar adecuadamente los procesos de instalación y reinstalación. Este proceso es esencial para asegurar que las configuraciones iniciales se implementen correctamente y que cualquier reinstalación no pase desapercibida, permitiéndonos tomar las acciones necesarias. Aquí te presento un ejemplo práctico que puedes aplicar en tus proyectos para gestionar de manera eficiente estos procesos.
¡Vamos manos a la obra! 🤯
Controlando la instalación con elegancia
En este ejemplo, estamos utilizando una codeunit
con el subtipo Install
. Esta es la clave para controlar el comportamiento durante la instalación de una extensión en Business Central. A continuación, te muestro el código inicial:
codeunit 60003 "Install"
{
Subtype = Install;
trigger OnInstallAppPerCompany();
var
MyAppInfo: ModuleInfo;
begin
NavApp.GetCurrentModuleInfo(myAppInfo); //Obtener información sobre el módulo que se está ejecutando actualmente
Aquí, se define una unidad de código (codeunit
) con el subtipo Install
. Esta codeunit se ejecuta automáticamente cuando se instala la extensión. Dentro del trigger
OnInstallAppPerCompany
, obtenemos la información del módulo actualmente en ejecución utilizando NavApp.GetCurrentModuleInfo(MyAppInfo)
. Esto nos proporciona un objeto ModuleInfo
con los detalles del módulo, lo cual es crucial para determinar si la instalación es nueva o una reinstalación.
Diferenciando entre instalación y reinstalación
El siguiente paso es identificar si la instalación es fresca o si se trata de una reinstalación. Esto se realiza comprobando la versión de los datos:
if myAppInfo.DataVersion = Version.Create(0, 0, 0, 0) then // A 'DataVersion' of 0.0.0.0 indicates a 'fresh/new' install
HandleFreshInstall()
else
HandleReinstall(); // Si no es una instalación nueva, entonces estamos reinstalando la misma versión de la extensión
end;
En este fragmento, se comprueba si DataVersion
es igual a 0.0.0.0
. Una versión de datos de 0.0.0.0
indica que es una instalación nueva. Si es así, se llama al procedimiento HandleFreshInstall
, de lo contrario, se llama a HandleReinstall
, lo que nos permite manejar adecuadamente la reinstalación.
¿Qué hacer en una instalación nueva?
Cuando detectamos una instalación nueva, podemos configurar elementos iniciales, como mensajes de bienvenida, configuraciones básicas, o cualquier otra acción que necesitemos realizar solo una vez. Aquí es donde entra en juego el procedimiento HandleFreshInstall
:
local procedure HandleFreshInstall();
begin
//evento al instalar
end;
En este procedimiento, aunque en este ejemplo no he incluido código específico, es donde se podrían definir todas las acciones necesarias para una instalación fresca. Posibles usos incluyen:
- Configuración inicial: Establecer configuraciones predeterminadas o crear registros básicos necesarios para que la extensión funcione correctamente desde el primer uso.
- Mensajes de bienvenida: Preparar un mensaje o guía de bienvenida para el usuario, que les ayude a familiarizarse con la extensión.
- Inicialización de datos: Poblar tablas con datos iniciales o establecer variables globales importantes para la extensión.
Gestionando la reinstalación como un profesional
Las reinstalaciones pueden ser tan críticas como las nuevas instalaciones, ya que podrían implicar la necesidad de reajustar configuraciones o ejecutar scripts de “parcheo”. El procedimiento HandleReinstall
se encarga de estas situaciones:
local procedure HandleReinstall();
begin
// Realice el trabajo necesario al reinstalar la misma versión de esta extensión en este inquilino.
// Algunos usos posibles:
// - Servicio de devolución de llamada/telemetría que indica que se reinstaló la extensión
// - Trabajo de 'parcheo' de datos, por ejemplo, detectando si se han modificado nuevos registros 'base' mientras trabajaba 'sin conexión'.
// - Configurar el mensaje de "bienvenida" para el próximo acceso del usuario.
end;
}
En este procedimiento, nuevamente no he incluido código específico en este ejemplo, pero aquí es donde se pueden implementar varias acciones importantes en caso de una reinstalación, tales como:
- Telemetría o callbacks: Enviar información a un servicio externo que registre que la extensión ha sido reinstalada, lo cual puede ser útil para análisis o monitoreo.
- Aplicación de parches: Detectar y aplicar cambios en los datos, como modificaciones en registros base, que podrían haber ocurrido mientras la extensión no estaba activa o estaba en una versión anterior.
- Ajustes adicionales: Modificar configuraciones o preparar el entorno para el usuario que vuelve a acceder a la extensión, asegurando que todo esté en orden después de la reinstalación.
Beneficios y aplicaciones prácticas
Este ejemplo muestra cómo podemos manejar las instalaciones y reinstalaciones de manera efectiva en Business Central. Al identificar si la instalación es nueva o una reinstalación, podemos asegurarnos de que el entorno esté configurado correctamente y que se realicen las acciones necesarias, como ajustes de configuración o la ejecución de scripts específicos. Implementar este enfoque en tus extensiones puede ahorrarte tiempo y evitar problemas futuros, mejorando la experiencia general del usuario.
Conclusión
Gestionar adecuadamente las instalaciones y reinstalaciones en Business Central es fundamental para garantizar un entorno de trabajo óptimo. Este código es un excelente punto de partida para implementar prácticas sólidas en tus extensiones, asegurando que cada instalación se maneje de manera efectiva y eficiente.
Si quieres ver el código completo, está en GitHub.
¡Espero que esta guía te haya sido útil! Hasta la próxima. 😊