Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-05-2006
miguelml miguelml is offline
Miembro
 
Registrado: nov 2005
Posts: 24
Poder: 0
miguelml Va por buen camino
Como creo un instalable?

Hola, tengo una duda, como puedo crear un fichero instalable? se que el install shield y tal, los puede crear, mi problema es que, el programa que quiero poner en el instalabe, usa una base de datos en mySQL, y no se como se hacer para crear un instalable que tambien me instale lo basico para usar la base de datos que tengo en mysql, y ademas para crear o copiar la base de datos con las tablas y al ser posible con los datos que tengo.

Gracias! Saludos!
Responder Con Cita
  #2  
Antiguo 21-05-2006
JCarlosas JCarlosas is offline
Miembro
 
Registrado: abr 2006
Ubicación: Habana. Cuba
Posts: 103
Poder: 19
JCarlosas Va por buen camino
Hola.
Mira yo para resolver un problema similar lo que he hecho es lo siguiente.
1- Me ha bajado la version en .zip de MySQL 5. O sea la version que no hay que instalar.
2-Dentro del directorio donde radicara mi ejecutable he adicionado un directorio denominado DB (El nombre obviamente es irrelevante.) y dentro de dicho directorio he copiado todo lo que viene con MySQL, o sea ejecutables + BD.
3-Dentro de mi aplicacion intento primero conectarme a MySQL, sino lo logro mando a ejecutar a MySQL, espero unos segundos y vuelvo a intentar conectarme. Si todo esta OK en esta segunda vuelta debe realizar la conexion a MySQL pues ya esta levantado el servidor.


Aqui te envio los codigos que uso para hacer esta parte pues es mucho mas expliativo.
Yo uso ZeosLib para conectarme y
DM.conn Es el componente de conexion a la BD.

Código Delphi [-]
 
 try
  DM.Conn.Connected       := true;
 except  Begin
           DM.Conn.Connected       := false;
        end;
  end;  //try

   if (DM.Conn.Connected = false) and
      ((UpperCase(trim(tsConfig.Values[ServerConst])) = 'LOCALHOST') or
     (trim(tsConfig.Values[ServerConst]) = '127.0.0.1'))
     then Begin  //Si no me pude conectar  y la configuracion es localhost, mando a ejecutar al MySQL;
             //Mando a ejecutar el programa en la forma no visible y que no espere por el final de la ejecucion
            EjecutarPrograma(ExtractFilePath(Application.ExeName) + 'DB\mysql\bin\mysqld-nt.exe', false, false);
            //Me demoro unos 5 segundos despues de levantar MySQL para sincronizacion y vuelvo a mandar a conectarse
            Sleep(5000);
            try
             DM.Conn.Connected       := true;
            except  Begin
                     DM.Conn.Connected := false;
                   end;
            end;  //try
          end;   // if (DM.Conn.Connected = false) and
//Vefifico que se haya podido conectar esta vez. Si tampoco lo logro entonces muestro mensaje de que no me puedo conectar
 if DM.Conn.Connected = false then
                               Begin
                                  Showmessage(msgSinDBConxionVar);
                                  AccionSiNoConectadoABD; //Llamo a esta funcion para que haga lo que se tenga que hacer si no puedo conectarme definitivamente con MySQL
                               End;

El procedimiento que ejecuta el programa es este:

Código Delphi [-]
Function EjecutarPrograma(Programa : String; EsperarPorFinal : Boolean; Visible:Boolean): boolean;
 var
   Resultado : Boolean;
   pi : PROCESS_INFORMATION ;
   si :  STARTUPINFO;
 Begin
   FillChar(si,sizeof(si),0);  //Lleno de 0 la estrucutra
   si.cb := sizeof(si);
   if visible then  si.wShowWindow := SW_SHOWNORMAL
              else  Begin
                     si.wShowWindow := SW_HIDE;
                     //algunos programas son caprichosos y no les basta con la instruccion de arriba para oculatarse
                     //Por tanto lo mando para un lugar donde no se vea
                     si.dwFlags := STARTF_USEPOSITION;
                     si.dwX := 5550;
                     si.dwY := 5550;
                    end;

    Resultado :=CreateProcess( nil,
                               PChar(Programa),
                               nil,
                               nil,
                               false,
                               CREATE_NEW_PROCESS_GROUP,
                               nil,
                               nil,
                               si,
                               pi);
   if (EsperarPorFinal and Resultado) then  WaitForSingleObject(pi.hProcess,INFINITE);
   result := Resultado;
 End;

He realizado copy y pega de un fragmento de uno de mis programas y quizas se me quedo alguna variable por poner, pero supongo que con esto podras resolver.
Por supuesto al installshield le dices que adicione todo esos archivos como si fueran parte de tu programa, no hay que especificarle que es la BD.

Bueno pudiera existir alguna forma mas eficiente, pero al menos esta trabaja.
Saludos y buena suerte.
Juan Carlos

Última edición por JCarlosas fecha: 21-05-2006 a las 17:15:08.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Como creo un instalador Mariana Varios 9 12-02-2007 13:09:16
Como Creo una Consulta SQL esimon SQL 4 08-02-2006 17:33:52
como Incluir el ALIAS de una BD en el instalable franciscobucio Conexión con bases de datos 4 25-10-2005 15:31:33
Cómo hacerlo instalable ? K4RL0S Varios 1 03-01-2004 14:50:31
Como creo un Backup Mariana Varios 1 17-09-2003 05:59:24


La franja horaria es GMT +2. Ahora son las 03:03:33.


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