Rutina par Registrar CsFoxySmtp.dll

223 views
Skip to first unread message

adem adem

unread,
Jul 2, 2023, 11:26:12 AM7/2/23
to publice...@googlegroups.com

Hola amigos;
estoy registrando la dll CsFoxySmtp.dll con un archivo bat, que lo tengo en la raíz del proyecto,de la siguiente manera:
En archivo bata va lo siguiente:

@echo off
echo Registrando EMAIL ...
echo Por favor espere un minuto...
%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe C:\MiProyecto\CsFoxySmtp.dll /register /codebase /tlb

En el pgr:

IF !FILE("CsFoxySmtp.tlb")
    cArchivo = ADDBS(SYS(5) + SYS(2003))  + "Archivo.bat"
   =ShellExecute(0,"runas",cArchivo,"","",0)
STRTOFILE("Success", "CsFoxySmtp.tlb", 0)
ELSE
ENDIF

Hasta aquí  todo funciona bien, resulta que al generar el Instalador del programa, los antivirus y el microsoft windows defender me borra el instalador, por culpa del archivo bat.
así que intente registrar la dll CsFoxySmtp.dll segun he leido en en esta conversación:
que hay que registrarla de la manera siguiente:

LOCAL  DLLFile As String
DLLFile = "c:\la\ruta\a\tu\file.dll"
Declare Long DllRegisterServer In (DLLFile)
=DllRegisterServer()

y el  DLLFile seria en el caso:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe /codebase E:\swsetup\VFPSP2HOTF3\calsywin\email\CsFoxySmtp.dll

 bueno en mi caso en el pgr inicial tengo lo siguiente:

IF !FILE("CsFoxySmtp.tlb")           
LOCAL  DLLFile As String
DLLFile = "%SYSTEMROOT%\WINDOWS\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /codebase C:\MiProyecto\CsFoxySmtp.dll"
Declare Long DllRegisterServer In (DLLFile)
=DllRegisterServer()
ELSE
ENDIF

Pero me sale un error; de que no se encuentra el punto DLLRegisterServer en la DLL.


Nueva imagen de mapa de bits.bmp


No se que es lo que estoy haciendo mal.

ESPERO Vuestra generosidad y un millón de gracias
Un saludo

Marcelo Barberis

unread,
Jul 2, 2023, 3:47:25 PM7/2/23
to publice...@googlegroups.com
hola buenas tardes, yo tambien utilizo esta libreria para mis aplicaciones, yo a diferencia de lo que tu comentas de como tu deseas tenerlo, yo lo tengo separado y lo ejecuto manualmente el archivo .bat, pero te puedo dar algunas ideas quizas tu puedas hacerlo y no tendrias ningun problema.
Puedes usar TEXT - ENDTEXT  en lo que tu tienes el bat
@echo off
echo Registrando EMAIL ...
echo Por favor espere un minuto...
%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe C:\MiProyecto\CsFoxySmtp.dll /register /codebase /tlb
digamos algo asi:
TEXT TO xsql TEXTMERGE NOSHOW PRETEXT 15
-->> AQUI pones lo que tienes en tu .bat
ENDTEXT
luego creas tu archivo bat y siguiente paso lo ejecutas y por ultimo lo borras
=STRTOFILE(xsql, nombrearchivobat)
oShell = CREATEOBJECT("WScript.Shell")
oShell.Run(nombrearchivobat,0,.T.)

puedes usar esta idea, que el sistema cree el bat y despues lo ejecutas y por ultimo lo borras
Solo es una idea nada mas...

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/CAMbvQjHBY9%3DSrVp6ST5xewvEeFFMmLYkyBDdSrEcDi4mE5gxcg%40mail.gmail.com.


--
Marcelo Barberis Gutierrez
Sistemas Informaticos
Villa Montes - Bolivia
Telef.: +591-76830544

adem adem

unread,
Jul 2, 2023, 3:55:11 PM7/2/23
to publice...@googlegroups.com
Gracias Marcel, voy a proba, te comentaré. 
Un saludo. 



HernanCano

unread,
Jul 4, 2023, 2:31:39 PM7/4/23
to Comunidad de Visual Foxpro en Español
Lo lamento, colega.

La respuesta que Irwin dió sí fue con " Declare Long DllRegisterServer In (DLLFile) ", pero infortunadamente no es la forma de proceder con el registro de librerías como la de Antonio. Irwin corrigió un mensaje más abajo.

Antonio en su propio portal menciona cómo hacerlo (está basado en REGASM.EXE), y por lo tanto deberás utilizar un mecanismo como el que te propone Alex basado en WScript.Shell.


>> así que intente registrar la dll CsFoxySmtp.dll segun he leido en en esta conversación:
>> que hay que registrarla de la manera siguiente:

>> LOCAL  DLLFile As String
>> DLLFile = "c:\la\ruta\a\tu\file.dll"
>> Declare Long DllRegisterServer In (DLLFile)
>> =DllRegisterServer()

>> y el  DLLFile seria en el caso:
>> C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm.exe /codebase E:\swsetup\VFPSP2HOTF3\calsywin\email\CsFoxySmtp.dll

Germán Fabricio Valdez

unread,
Jul 4, 2023, 2:44:26 PM7/4/23
to Comunidad de Visual Foxpro en Español
esta bien como registras la libreria de antonio de la primera forma en el bat.
pero lamentablemente el antivirus la detecta como falso positivo.
asi que exclui la carpera del cliente del antivirus, y colocala ahi adentro y despues registrala.

adem adem

unread,
Jul 22, 2023, 3:08:31 PM7/22/23
to publice...@googlegroups.com
Hola gente, Gracias German, gracias Hernan Cano, por las sugerencias..
Gracias Marcelo, por tu aporte,y ayuda, no he podido probar por unas circunstancias,  por fin está hecho casi como lo indicaste,
y la verdad va de maravilla. Aquí está el código por si alguien lo quiere utilizar..

DECLARE INTEGER ShellExecute IN shell32.DLL ;
   INTEGER hndWin, ;
   STRING cAction, ;
   STRING cFileName, ;
   STRING cParams, ;
   STRING cDir, ;
   INTEGER nShowWin

Contenido = "@echo off" +chr(10)+chr(13)+;
"echo Registrando EMAIL ..."+chr(10)+chr(13)+;
"echo Por favor espere un minuto..."+chr(10)+chr(13)+;
"%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe C:\
Mi_Programa\CsFoxySmtp.dll /register /codebase /tlb"

Arch=fcreate(ADDBS(SYS(5) + SYS(2003)) + "Archivo.bat")
fputs(Arch,Contenido)
FCLOSE(Arch)


IF !FILE("CsFoxySmtp.tlb")
    cArchivo = ADDBS(SYS(5) + SYS(2003))  + "Archivo.bat"
   =ShellExecute(0,"runas",cArchivo,"","",0)
STRTOFILE("Success", "CsFoxySmtp.tlb", 0)
DELETE FILE "C:\Mi_Programa\Archivo.bat"
ELSE
ENDIF

Y DE NUEVO OS AGRADEZCO VUESTRA GENEROSIDAD..Un Saludo 

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages