Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-06-2007
pvazquez pvazquez is offline
Registrado
 
Registrado: jun 2007
Posts: 2
Poder: 0
pvazquez Va por buen camino
Instalador

He creado un aaplicacion cliente a la que entre otra variables tengo que indicarle la ip a la que se tiene que conectar.

Quiero hacerlo desde el instalador pero no se como.

Se que tengo que agregar cuadros de dialogo en el instalador para despues asignar los valores a las variables de mi codigo.

Pero no se:
1- donde se guarda la informacion que se pone en los cuadros de dialogo.
2- Como asignar ese valor a las variables en mi codigo.

Agradezco toda la ayuda.

He programado en .NET pero he visto que aqui utilizan el installshield y este programa tb puede usarse en VS.NET
Responder Con Cita
  #2  
Antiguo 19-06-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, el InstallShield me a parecido muy bueno para instalar aplicaciones y toda la cosa... Pero creo que en tu caso seria mas conveniente que usaras el InnoSetup que seguramente te permitirá personalizar con mas flexibilidad el asunto.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 19-06-2007
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Te comento lo que hago yo, que no quiere decir que sea la mejor forma, pero a mí me da resultado: Tanto la dirección IP del servidor, como el path de la base de datos, último usuario que ha accedido, modo de acceso, etc... las guardo en el registro de windows. La instalación la hago normal, con el InstallShield o un pequeño programa de copia y registro de librerias, dependiendo del caso, pero cuando la aplicación se ejecuta por primera vez y detecta que estas variables de entorno no tienen valor o no existen, saco una pantalla de configuración para que el usuario o instalador ponga los valores correspondiente. Además, saco esta ventana cada vez que hay un problema de conexión, por si el servidor se estropea y es necesario redireccionar el acceso a la BD a otra máquina de la red.
Responder Con Cita
  #4  
Antiguo 20-06-2007
pvazquez pvazquez is offline
Registrado
 
Registrado: jun 2007
Posts: 2
Poder: 0
pvazquez Va por buen camino
Gracias por las respuestas, miraré el innosetup a ver que tal, pero...
afxe me parece acertada esa idea, incluso en la ayuda de microsoft explican mas o menos eso, lo que pasa es que:

Como se guarda la información en el registro??, al ponerla en los cuadros de dialogo?? Me podrías indicar como??

Por otro lado, como asigno el valor a las variables de mi código??

Gracias afxe, espero tu respuesta.
Responder Con Cita
  #5  
Antiguo 20-06-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por pvazquez
Gracias por las respuestas, miraré el innosetup a ver que tal, pero...
afxe me parece acertada esa idea, incluso en la ayuda de microsoft explican mas o menos eso, lo que pasa es que:

Como se guarda la información en el registro??, al ponerla en los cuadros de dialogo?? Me podrías indicar como??

Por otro lado, como asigno el valor a las variables de mi código??

Gracias afxe, espero tu respuesta.
Aquí en el foro hay varios ejemplos de como manejar el registro, pero si no te basta con ello podrás usar la ayuda y buscar información acerca de la clase TRegistry.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 20-06-2007
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Sobre TRegistry

Jhonny tiene razón, en la ayuda viene todo muy bien documentado, no obstante te propongo una introducción simple:

Código Delphi [-]
 
  vPath   := '';
  vIP     := '';
  vIP     := Lee_Registro(HKey_Local_Machine, 'SOFTWARE\MiEmpresa\DATABASES\', 'IP',     '127.0.0.1' );
  vPath   := Lee_Registro(HKey_Local_Machine, 'SOFTWARE\MiEmpresa\DATABASES\', 'Path',   ''   );
  vUsua   := Lee_Registro(HKey_Current_user, 'SOFTWARE\MiEmpresa\USERS\'    , 'Codigo', '1'  );
  if (Trim(vPath) = '') then begin
    InputQuery('Crear/Cambiar Servidor de Datos', 'Direccion IP Servidor:', vIP);
    InputQuery('Crear/Cambiar Servidor de Datos', 'Nueva Base de datos:', vPath);
  end;
  if Trim(vPath) = '' then begin
    MsgError('No ha definido correctamente el servidor de datos');
    Application.Terminate;
    EXIT;
  end;
 
 
    DM.MiBaseDatos.DatabaseName := vIP+':'+vPath;
    try
      DM.MiBaseDatos.Open;
      Escribe_Registro(HKey_Local_Machine, 'SOFTWARE\MiEmpresa\DATABASES\', 'IP', vIP);
      Escribe_Registro(HKey_Local_Machine, 'SOFTWARE\MiEmpresa\DATABASES\', 'Path', vPath);
      Try
        QryUsu.Open;
        QryUsu.FetchAll;
        if QryUsu.Locate('CODIGO', vUsua, [loCaseInsensitive]) then
          ShowMessage('Bienvenido ' + QryUsuNOMBRE.AsString);
      except
        on E: Exception do begin
           MsgError('Ocurre algún problema al acceder a los datos: ' + #10+#13 + E.Message);
           Application.Terminate;
        end;
      end;
    except
      on E: Exception do begin
         MsgError('Ocurre algún problema al abrir la base de datos: ' + #10+#13 + E.Message);
         Application.Terminate;
      end;
    end;

Ya te adjunto las dos rutinas de lectura y escritura...

Código Delphi [-]
 
Function Lee_Registro(Raiz :HKEY; Seccion, Clave, ValorPorDefecto: String): String;
var
  Reg: TRegistry;
begin
  Result := ValorPorDefecto;
  Reg    := TRegistry.Create;
  try
    Reg.RootKey := Raiz;
    if Reg.OpenKey(Seccion, False) then Result := Reg.ReadString(Clave);
    if Result = '' then Result := ValorPorDefecto;
    Reg.CloseKey;
  finally
    Reg.Free;
  end;
end;
 
Procedure Escribe_Registro(Raiz :HKEY; Seccion, Clave, Valor: String);
var
  Reg: TRegistry;
begin
  Reg    := TRegistry.Create;
  try
    Reg.RootKey := Raiz;
    Reg.OpenKey(Seccion, True);
    Reg.WriteString(Clave, Valor);
    Reg.CloseKey;
  finally
    Reg.Free;
  end;
end;

No sé si habré copiado algo mal, pero seguro que te dará una idea. No dejes de leer la ayuda para afianzar los conocimientos sobre TRegistry.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
instalador Max_E. Varios 3 28-02-2007 19:42:07
instalador carlosmbrizuela PHP 2 17-01-2007 16:01:15
Instalador jdattoli OOP 2 14-07-2005 22:22:02
Instalador Franklim Varios 2 20-04-2004 12:46:01
Instalador VolaRe Varios 1 09-02-2004 21:09:20


La franja horaria es GMT +2. Ahora son las 16:49:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi