Permitir que se registren automáticamente los ocx

694 views
Skip to first unread message

arti...@gmail.com

unread,
Nov 11, 2014, 5:14:17 AM11/11/14
to publice...@googlegroups.com
Hola, tengo una aplicación que usa varios ocx y dll, y cuando hago una instalación tengo que abrir una ventana de comando 'como administrador' para registrar
los ocx y dll en el sistema, ¿ Alguien sabría decirme si existe alguna manera de que esto se ejecute de forma automatizada ?, he pensado en un archivo bat que
ejecute el proceso, pero claro, el problema es la protección de w7 o w8 que hay que 'ejecutar como administrador' ¿ Cómo puedo hacer esto ?

Ricardo Pina

unread,
Nov 11, 2014, 6:34:51 AM11/11/14
to Grupo VFP
Hola

Puedes utilizar Installshiell o similar para instalar registrar las ocx y dll, si sigues con la idea del archivo bat, nuestra deidad google nos ilumina con este link

http://support2.microsoft.com/kb/2782915/es


Saludos
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

ZeRoberto

unread,
Nov 11, 2014, 7:01:23 AM11/11/14
to publicesvfoxpro
Inno Setup es la voz

Luis Maria Guayan

unread,
Nov 11, 2014, 7:44:24 AM11/11/14
to publice...@googlegroups.com
Aquí tienes varios artículos del Blog:

http://comunidadvfp.blogspot.com/search/?q=OCX

Luis María Guayán
Tucumán, Argentina
_____________________________
http://comunidadvfp.blogspot.com

aquilino

unread,
Nov 12, 2014, 4:20:22 AM11/12/14
to publice...@googlegroups.com
Utilizo algo parecido a estos, con archivos bat en windows 7 y 8., esto permite abrir la ventana para dar permiso de instalacion y el usuario no tiene que ejecutar como administrador.

*!*  Primero crear un comando bat para registrar clases
*!*  lo llamamos regserver.bat y tendra la siguiente instruccion

  regsvr32.exe %1        
 
*!*  esto es  ejecutar el registro de la ocx, dll. que le pasaremos como parametro

*!*  en caso de querer eliminar un activex del registro creamos el fichero unregserver.bat
 
 regsvr32.exe -u %1   
 
*!*  Estos dos ficheros los creamos en el directorio del ejecutable de nuestra aplicación
 
*!* Luego creamos nuestro prg (o clase, procedure..etc)
*!* en nuestro caso registrarocx.prg


PROCEDURE registrarocx
PARAMETERS lcocxname, lcocxrefname


&& lcocxname                     Nombre del activex con su extension
&& lcocxrefname                  Nombre Interno Activex

DECLARE INTEGER ShellExecute ;
IN SHELL32.DLL ;
INTEGER nWinHandle,;
STRING cOperation,;   
STRING cFileName,;
STRING cParameters,;
STRING cDirectory,;
INTEGER nShowWindow

DECLARE INTEGER RegOpenKey IN Win32API INTEGER nHKey, STRING @cSubKey, INTEGER @nResult
DECLARE INTEGER RegCloseKey IN Win32API INTEGER nHKey

*!* Para saber si una clase esta registrada y si no lo esta, registrarla

*!* =OcxRegistrado(lcocxrefname) && Atencion: Aqui va la referencia o nombre interno del ActiveX:
                                         && Los archivos OCX tienen una referencia o nombre interno,
&& para averiguar cual es agregamos este a un formulario de VFP,
&& lo seleccionamos y revisamos la propiedad OleClass y ese será el nombre que utilizaremos.
&& --Jesus Caro V en Como saber si un Ac ya fue registrado 19/12/2007 Comunidad Vfp Español--
                                         && Ej. para ms chart seria "=OcxRegistrado("mschart20lib.mschart.2")"
FUNCTION OcxRegistrado(cClase)
LOCAL npos, lEsta, lcdirocx
 
nPos = 0
lEsta = RegOpenKey(-2147483648, cClase, @nPos) = 0
 
IF lEsta=.T.
Wait windows "Esta registrada"
RegCloseKey(nPos)
ELSE
wait windows "Pulse SI y ACEPTAR en las siguientes ventanas para actualizar su programa"
lcdirocx = FULLPATH("lcocxname")
=SHELLExecute(0, "RunAs","regserver.bat", lcdirocx,"", 1)
   
&& Para desregistrar seria lo anterior pero con unregserver.bat
ENDIF
ENDFUNC
ENDPROC
Reply all
Reply to author
Forward
0 new messages