Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Actualizar mi programa por red (https://www.clubdelphi.com/foros/showthread.php?t=32550)

raorre 03-08-2007 10:48:53

gracias
 
pues muchas gracias enviamelo a raorre@hotmail.com, gracias otra vez.:cool:

Novás 30-08-2007 13:47:17

Para solventar el problema de las actualizaciones automáticas yo uso un control llamado UltilMind Autoupgrader Pro, el problema es que creo que es un control propietario mas vale la pena, con dos líneas de código solventas el problema.

Un saludo

martinzcr 30-08-2007 22:19:25

Actualizar sistema y base de datos
 
Hola a todos!

No se si corresponda que ponga esto aca.... por favor, sepan disculpar si no es así.

Yo tengo un problema similar con las actualizaciones. La parte de actualización de archivos la puedo resolver como se plantea en este el hilo. mi problema esta relacionado con la actualización de la estructura de la base de datos (utilizo firebird 1.5).
Actualmente, si una actualización además de cambios en el ejecutable tiene modificaciones, tengo cambios para la estructura de la base de datos, me toca ir a la PC que tiene la base de datos y correr los scripts manualmente.

Quisiera saber si alguno tiene una idea de como automatizar este proceso.:confused::confused::confused:

Saludos y gracias!

Novás 31-08-2007 10:59:39

No se si es lo mejor pero te diré como lo hago yo. Creo otra aplicación la cual será llamada desde el programa que será actualizado. Desde este último compruebas si existe el programa de actualización para la base de datos, si existe lo ejecutas y tras la ejecución lo borras(para que no se ejecute la próxima vez).

El siguiente código que te pongo es trabajando con una base de datos mysql y con los controles zeos.

Código Delphi [-]
type
  tSQL=record
    tabla : string[15];
    consulta : string;
  end;

{$R *.dfm}

procedure TFrmPrincipal.FormShow(Sender: TObject);
const
  NumConsultas=3;
var
  i, j     : integer;
  Nombre   : String;
  UserName : String;
  Fichero  : TIniFile;
  pc       : string;
  Correcto : boolean;
  consultas : array of tSQL;
begin
  Animate1.Active:=True;
{ RELLENO LAS CONSULTAS QUE DEBO REALIZAR }
  SetLength(consultas,NumConsultas);

  consultas[0].tabla:='Config';
  consultas[0].consulta:='Alter table Config add column PorcentajePVD float';

  consultas[1].tabla:='Config';
  consultas[1].consulta:='create table Abonos(IdAbono INT AUTO_INCREMENT,Fecha DATE NOT NULL,NumAbono INT NOT NULL,'+
                         'CierreCaja BOOL DEFAULT 0 NOT NULL,Usuario CHAR(10)NOT NULL,TipoIVA INT NOT NULL DEFAULT 16,'+
                         'PRIMARY KEY  (IdAbono))';

  consultas[2].tabla:='Config';
  consultas[2].consulta:='create table DetallesAbono(IdDetalleAbono INT AUTO_INCREMENT,RefInterna CHAR(8) NOT NULL,'+
                         'Descripcion CHAR(50) NOT NULL,Cantidad INT NOT NULL,PrecioVenta FLOAT NOT NULL,'+
                          'IdAbono INT NOT NULL,PRIMARY KEY(IdDetalleAbono))';


{ ME CONECTO CON LA BASE DE DATOS }
  j:=length(Application.ExeName);
  j:=j-14;
  Nombre:='';
  Username:=Application.ExeName;
  for i:=1 to j do
    Nombre:=Nombre+Username[i];
  Fichero:=TIniFile.Create(Nombre+'\Config.ini');
  pc:=Fichero.ReadString('CONEXION','Pc','192.168.1.2');

  Correcto:=False;
  while not Correcto do
  begin
    try
      Conexion.Connected:=False;
      Conexion.HostName:=trim(pc);
      Conexion.Connected:=True;
      Correcto:=True;
    except
      if MessageDlg('No se encuentra el ordenador central. ¿Desea especificar su ubicación?',
                    mtConfirmation, [mbYes, mbNo], 0) = mrYes then
      begin
        pc:=InputBox('Especifique nombre servidor',
                     'Introduzca la IP del servidor o su nombre de red'+#13+
                     'Ejemplos: '+#13+
                     '192.168.1.2'+#13+
                     'centralita',
                     PC);
      end
      else
      begin
        Correcto:=True;
        Application.Terminate;
      end;
    end;
  end;
{ RECORRO EL ARRAY DE CONSULTAS Y LAS VOY EJECUTANDO }
  for i:=low(consultas) to high(consultas) do
  begin
    TbTabla.TableName:=consultas[i].tabla;
    TbTabla.Active:=True;
    CConsulta.SQL.Clear;
    CConsulta.SQL.Add(consultas[i].consulta);
    try
      CConsulta.ExecSQL;
    except
    end;
    TbTabla.Active:=False;
    CConsulta.Close;r
  end;
{ MUESTRO UN MENSAJE DE INFORMACIÓN Y TERMINO EL PROGRAMA }
  Animate1.Active:=False;
  ShowMessage('El proceso de actualización de la base de datos ha terminado.');
  Application.Terminate;
end;

seoane 31-08-2007 11:09:18

Solo comentar que el programa que puse como ejemplo (agent.zip) cuando descarga un ejecutable llamado autorun.exe, además de descargarlo lo ejecuta. De esta manera puedes crear un programa que actualice la base de datos.

martinzcr 31-08-2007 21:08:07

Gracias gente... voy a probar con eso y luego les comento como me fue

Saludos! ;)

verito_83mdq 03-02-2011 19:23:52

Se puede reabrir este hilo??


La franja horaria es GMT +2. Ahora son las 05:12:42.

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