SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: giomar en Miércoles 20 de Agosto de 2003, 23:42
-
Como puedo registrar mis OCX o DLL desde VB.
Es posible hacer eso
-
Para registrar tu componente:
Shell "REGSVR32 /S RutaNombreComponente.ocx"
El modificador /S es para registrar en modo silencioso.
Si quieres desregistrar utiliza el modificador /U.
Suerte.
-
Lo probe y resulta, la verdad no se como no se me ocurrio probar con el SHELL.
El motivo por el cual hice esta consulta era por que estoy comenzando a crear componentes (simples pero bueno recien comienzo) y notaba que seria un poco fastidioso que el usuario que quizas queria abrir la aplicaion tubiera que hacer todo el proceso del registro como copiarlo a la carpeta SYSTEM o SYSTEM32 y ejecutar el comando de registro entonce se me ocurrio que el mismo programa lo haga pero el problema ahora es el SITEMA OPERATIVO como bien sabes las rutas de las carpetas donde se debe copiar el OCX o DLL cambian segun el sistema operativo.
Bueno parte de este inconveniente lo tengo resuelto ya que puedo saber por codigo que sistema operativo estoy uzando pero lo que desconozco es la ruta que tendria que especificar en cada uno para copiar el archivo y hacer el registro propiamente dicho.
Osea me explico se que para Win2000 la ruta es "C:WINNTsystem32....dll" o "C:WINNTsystem....dll" porque estoy trabajando con este sistema péro ¿De los demas desconozco?.
Ahora no se si me podrias facilitar esa informacion quizas tienes un listado ya perparado o estas mas informado sobre eso.
A si estas interezado puedo pasarte el codigo de como averiguar el sistema operativo lo pidemelo y te lo envio al instanste.
Saludos...
Y gracias por la ayuda anterior.
<Giomar>:comp:
-
Para averiguar en que directorio está instalado windows y cúal es el directorio del sistema (independientemente de la versión) puedes utilizar el siguiente código:
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Function WindowsSysDir() as String
Dim strDir As String
strDir = Space(255)
GetSystemDirectory strDir, 255
WindowsSysDir = left(strDir, Instr(1,strDir,Chr(0))-1)
End Function
Ten en cuenta que windows no siempre está instalado en el mismo directorio.
Espero que esto te sirva.
Suerte.
-
Generalmente el error se da cuando posterior a la instalacion de una aplicacion, modificamos el proyecto y le agregamos componentes OCX o DLLs.
Ahora....
Cuando ejecutamos esa aplicacion desde el cliente da el tipico error de que no esta registrado, etc , etc.
Como se puede hacer para atajar ese error desde la mismisima aplicacion, y poder determinar que OCX es el que no esta registrado y aplicarle todo el codigo que figura en las respuestas anteriores ?
Gracias
-
Gracias Brroz el resultado es mejor del que esperaba inclusive me ayuda a simplificar el codigo para lo que estaba pensando en hacer.
Por lo que veo Chiaravel me gano en la pregunta pues tambien empezaba a tener esa duda.
Si cada vez que ejecute mi aplicacion registro el componente pues quizas con el tiempo el registro de ese componente se malogre por decirlo de alguna manera entonces la pregunta seria:
¿Hay alguna forma de porder preguntar al sistema si dicho componente ya se encuentra regitrado? para ovbiar el registro del mismo cada vez que se ejecute la aplicacion.
Pienso que seria bastante interesante conocer eso, se podrian evitar muchos problemas.
Hasta la proxima
Un saludo a todos y muchas gracias por todo....
!De verdad a buena hora decide entrar en este Foro¡
:good:
-
Se podría probar con algo así:
Private Function ChkRegCom() as Boolean
On error Goto Error_Registro
Dim obj1 as Object
Set obj1 = CreateObject("NombreDeClase")
ChkRegCom = True
Salir_Registro:
Set obj1 = Nothing
Exit Function
Error_Registro:
If Err.Number <> 429 Then MsgBox(Err.Number & " " & Err.Description, vbCritical, "Error")
Resume Salir_Registro
End Function
Si no se puede crear la clase "NombreDeClase", se desencadenará un error 429 (el componente activeX no puede crear el objeto), con lo que abría que registrarlo.
También podríais crear una clave en el registro con datos de vuestra aplicación y chequearla antes de llamar al programa que crea los componentes.
Espero que esto sirva para vuestros propósitos.
Suerte.