miércoles 7 de octubre de 2009

Interfaz Zeusnet

Comenzare con una leve descripción de como esta la interfaz de Zeusnet.

La interfaz es un proceso de consola en .net pero ademas usa como referencia una Dll de visual Basic 6.0
y ahí es donde comienzan todos mis problemas, cada vez que abro el proyecto de la interfaz me pide abrir con visual basic 6 la dll para recompilarla, y al parecer cuando la paso desde mi pc a la maquina de produccion no hay caso que el proceso corra, ademas de este dilema, necesitamos que el proceso de consola se ejecute como un servicio windows.

Comenzare explicando como arreglar el problema de la dll y terminare con el tema del servicio.

Abro el proyecto de Visual basic de la dll "ZeusNet.Connector.ERP.dll" este proyecto está en la ruta de SVN :
http://vm_lkutscher:8080/svn/ZeusNet/relacionados/ZeusNet.Interfaz/ZeusNet.Connector.ERP/

lo abro y me voy al menu de proyecto y selecciono ZeusNet.Connector.ERP , selecciono propiedades y en "component" le coloco "Proyect Compatibility" , se va a desbloquear el texto y debo apretar los 3 puntos para indicarle la ruta de la DLL que funcionaba sin problemas.
Después de esto me voy a File y presiono make ZeusNet.Connector.ERP.dll, con esto actualizare la dll y estará con la compatibilidad que tenia la de producción.

Para que esta dll quede funcionando sin problemas en producción tenemos que ejecutar el comando de Unregister Dll.

"START REGSVR32 D:\Ultragestion\ZeusNetInterfaz\ZeusNet.Connector.ERP.dll /u"

despues de esto tenemos que instanciar la dll(según me explico Cesar Mansilla.) para esto ejecutamos el archivo .exe llamado "Project1.exe" que está en la maquina de producción "D:\Ultragestion\ZeusNetInterfaz\Project1.exe"

con esto queda generada la instancia despues vuelvo a ocupar el register dll con el comando
"START REGSVR32 D:\Ultragestion\ZeusNetInterfaz\ZeusNet.Connector.ERP.dll"

con eso queda operativa la dll sino se hace esto arrojará errores de casteo.

Ahora con el segundo tema que es el servicio de consola.

Como primeramente no se podía modificar el .exe pensé que lo mas optimo era generar un servicio windows que llamara a un .exe por un CMD.EXE asi no tenia que depender del .exe , así puedo llamar a cualquiera , este proceso lo deje en la ruta de SVN: http://vm_lkutscher:8080/svn/ZeusNet/relacionados/ZeusNet.Interfaz/ZeusNet.InterfazService
el problema que tenia este servicio es que siempre se conectaba con las credenciales de NT_system y yo necesitaba que ejecutara el proceso como Administrator, si lo configuraba para que lo ejecutara el administrador no lo tomaba y lo volvía a ejecutar como NT_SYSTEM , conversando con danilo loncomil me dijo que el hizo algo parecido antes y que habia usado IMPERSONATE , que era una linea en el App.config donde se le seteaba el usuario para usar Impersonate, al hacer esto y ejecutar el proceso por fin quedo corriendo como Administrador.


Deje las rutas en SVN para que hagan traza del código ya que es harto codigo y de mi punto de vista no vale la pena llenar el blog de tanto codigo , creo que es mejor una explicacion.


http://vm_lkutscher:8080/svn/ZeusNet/relacionados/ZeusNet.Interfaz/Library

aca deje los archivo de Tail.exe para ver el log de la app, Project1.exe para generar la instancia y un .bat que desintala y luego instala la dll del proceso.

Saludos.

PCBT: