Cambio de versión de GeneXus - Paso 1 - Crear el nuevo entorno de trabajo con la nueva versión

La primera etapa que hay que lograr en un proyecto de cambio de versión, es una instalación de GeneXus que tenga todo lo necesario para poder desarrollar, especificar, generar, compilar, empaquetar, instalar y probar la aplicación en la nueva versión, sin errores. 

Pre-requisitos. 

Leer con cuidado todos los pre-requisitos necesarios para la nueva versión e instalarlos. La información de esto, puede estar desparramada por varias paginas y diferentes sitios web. 

Los pasos que realizamos aquí son: 

Bajar la nueva versión y otras cosas necesarias. 

GeneXus

Ir al Download Center de GeneXus y bajar la nueva versión y paquetes relacionados. En mi caso tengo que bajar 
  • GeneXus
  • GeneXus Platform SDK
  • GAM para Oracle
  • GXFlow para Oracle 
  • Releases Notes de la versión

Bajar versiones compatibles de los patrones utilizados

En caso de usar algún patrón de la comunidad, es necesario bajar un instalador compatible con la versión.  Workwithplus, K2btools, Ignia, etc, etc. 

Control de Usuario (UC) compatibles. 

Revisar los controles de usuarios utilizados y ver si se necesita bajar alguna nueva versión de los mismos.  En caso de no tener una versión compatible o que se quiera cambiar alguno, hay que buscar UC alternativos o desarrollarlos para la nueva versión. 

Extensiones usadas. 

Si en el desarrollo utilizo extensiones, es necesario conseguir las versiones que sean compatible con la nueva versión, 
En nuestra instalación de desarrollo, instalamos: 
  • Recover Object - Para recuperar objetos borrados. 
  • LSI Extension - Para refactoring y análisis estático de objetos
  • KBSaveReorganization - Para salvar automáticamente las reorganizaciones
  • KBDoctor - Para borrar lo no usado y análisis estático de código
  • Security Scanner - Para revision de seguridad

Módulos

En caso de usar módulos distribuidos como binarios, conseguir una versión compatible. 

Instalar la nueva versión

Es importante tener claro el salto de versión que estoy realizando. 
Mi algoritmo es el siguiente :
Si hay cambio en el Compatibity Package Number entre la versión vieja y la nueva entonces CREO UNA INSTALACION VACIA. 
Si no hay cambio, INSTALO SOBRE UNA COPIA DE LA INSTALACION VIEJA. 

Por ejemplo, si paso de la versión GX16U9 a GX16U10, es un cambio menor, donde me van a seguir funcionando todas las extensiones y posiblemente todos los User Controls, entonces hago una instalación que SOBRESCRIBA los archivos. 

Ahora, si hago un cambio grande hago una instalación limpia. 
PASO IMPORTANTE: Renombrar la el directorio de la versión vieja (por ejemplo ponerle el nombre Gx16U9) para que el setup de GeneXus no borre la versión vieja, pues la vamos a necesitar. 
Instala la nueva versión, copio los UC de la instalación vieja a la nueva, y las extensiones y módulos de la versión vieja a la nueva. 

En el caso de GXFlow y GAM en Oracle, tenemos que forzar para que usen el driver de Oracle de 32 bits en sus reorganizaciones y deploy, para lo cual usamos el RegASM. 

Personalizar la instalación

En esta etapa haremos todas las personalizaciones necesarias en el genexus.exe.config para que funcionen como nosotros queremos. 

TimeOuts
<add key="TeamDevTimeOut" value="01:00:00"/>
<add key="ServerStatusTimeout" value="00:00:10"/>
<add key="ConnectivityTimeOut" value="00:00:15"/>

Para lograr tener lista de KB y datos del programa diferente por version
<add key="UserAppDataPath" value="D:\GeneXus\AppData\GX16U10" />
<add key="ProgramDataPath" value="D:\GeneXus\ProgramData\GX16U10" />

Para lograr que el update no cancele si no esta instalado un UC.
<add key="TreatMissingDependenciesAsErrors" value="false"/>

Personalizar shortcuts con /NoLastKB o /KB y /MeasureCommandTime en caso de requerilo

User Control que cambiaron

Comparar el directorio UserControls de la instalación de GX anterior, con la nueva y comparar todos los archivos que tengan diferencias. 

Todos aquellos que tienen diferencias y son usados, se agregan a una lista de cosas que hay que probar con mas cuidado. 

Por ejemplo, de la GX16u9 a GX16U10, cambio el javascript de TreeView, por lo tanto debe probarse varios objetos que use dicho control para ver si no hay problemas con el mismo. 

Hacer un zip con la instalación o subirla a un GIT. 


Una vez terminada la instalación, crear un zip o subirla a un GIT para que quede disponible para el resto del grupo de desarrollo. 

GXServer

Repetir los pasos para una instalación de GXServer en caso de necesitarse. 

Conclusiones - Entorno de trabajo

Esta etapa es tan aburrida como necesaria. Es de esas tareas que parecen sencillas pero se ha ido complicando a lo largo de los años. 

Hay mucho por automatizar en la misma pues la descarga, instalación y comparación podrían automatizarse casi en su totalidad.

Herramientas que se necesitan para esta etapa

Esta etapa seria buena manejar con la filosofía de Infraestructura como codigo

Para esto, seria necesario poder crear un entorno de desarrollo con GeneXus adaptado a mis necesidades con un script, que baje, instale y personalice todo lo necesario para poder desarrollar mi aplicación.  Para poder lograrlo se necesitan varias cosas, y un paso en el sentido correcto, es la GeneXus Matrix. 

Seria bueno tener una herramienta que analice una instalación GX, y haga un script para bajar, instalar y personalizar esta instalación. 

Una vez que lo tenemos como script, es MUCHO mas fácil crear una instalación mas actualizada. 


 

Comentarios

Entradas más populares de este blog

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Aplicación monolítica o distribuida?

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.