Club Delphi  
    Paypal   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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-09-2007
Dado de baja Dado de baja is offline
Miembro
 
Registrado: ago 2007
Posts: 140
Poder: 20
Dado de baja Va por buen camino
Cita:
Empezado por mantrax Ver Mensaje
Supongase que tengo un sistema de escritorio para caja en una cadena de tiendas. ¿hay alguna aplicación que cuando tenga una nueva versión del sistema sea capaz de actualizarla solita en cada máquina que se encuentre instalada? algo tan simple como descargar el ejecutable y pegarlo en un directorio.

¿Cual de ellos realiza esa operación?
Hace algún tiempo hice algo parecido, pero no programé ni una linea de código.
Usé un sistema de sincronización de FTP. Cada tienda tenía un pequeño servidor de FTP.

Al crear una versión nueva, la ponía en una carpeta, lanzaba el sincronizador, y en un rato lo tenían todas las tiendas.
El sincronizador iba recorriendo los distintos servidores de FTP que tenia en su lista, tras comprobar el archivo/s lo enviaba si es necesario.

A mi me gustaba esta opción por el tema de las licencias y mantenimientos, ya que controlas quien y qué puede subir cada tienda.
__________________
Saludos Cordiales.
------------------
Responder Con Cita
  #2  
Antiguo 07-09-2007
Avatar de vroa74
vroa74 vroa74 is offline
Miembro
 
Registrado: jul 2006
Posts: 255
Poder: 21
vroa74 Va por buen camino
Hola a todos.

ya hice el instalador, la verdad me parece relativamente secillo.

Genere una maquina virtual con el VMWare con Windows xp, y ahi probeel instalador, al parecer funciono bien, aun me falta terminar dos secciones del sistemas.

He pensado que por estar probando el instalador en S.O. inmersos pueda que los resultado obtenidos no sean los indicados.

por otra parte Inno Setup no me esta respetando los subdirectorios que le anexo y aun no se por que.

Les seguire dando lata por aqui. muchas gracias a todos.
Responder Con Cita
  #3  
Antiguo 07-09-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
A que te refieres cuando dices esto:

Cita:
Empezado por vroa74 Ver Mensaje
por otra parte Inno Setup no me esta respetando los subdirectorios que le anexo y aun no se por que.
Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 08-09-2007
Avatar de Io
[Io] Io is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: San Fernando (Cádiz)
Posts: 259
Poder: 22
Io Va por buen camino
Cita:
Cita:
Empezado por Io
Yo he empezado hace muy poquito con la elaboración de un instalador. Me decante por innosetup , y ya he creado un instalador, en el que he incluido la instalación automática de Fb15 con la aplicación. A mi parecer en un primer momento parece difícil, pero cuando lo entiendes, te das cuenta que puedes hacer de todo.

Hola IO, yo uso innosetup con ISTool y estoy contentiiiisimo, pero no se como hacer lo que tu dices de la instalación automática de fb (en mi caso interbase).

también me interesa mucho saber como has logrado lo del actualizador que actualiza también la db.

¿ alguna pista ?
Perdona cecilio. por no haberte contestado antes , pero hasta hoy no me había dado cuenta.

Sobre instalar Fb15. He bajado de la página de Fb, el archivo comprimido donde vienen todo los archivos necesarios. Hay un archivo de texto donde te explica lo que debes de hacer para instalarlo, y eso es precisamente lo que hago. Con innosetup, le digo que copie los archivos necesarios, y despues ejecuto los ejecutables con los parámetros adecuados.

En estos momentos no tengo a mano el script, en cuanto lo consiga te lo adjunto.

Sobre el actualizador, es un poco más complicado(por lo menos como yo le he hecho), por que he utilizado código para cambiar el path de destino de la aplicación, el cual leo del registro de win. Pero currando un poco seguro que lo verás más claro. Lo mismo te digo con este script despues te lo pego.

Saludos

Chao.
Responder Con Cita
  #5  
Antiguo 08-09-2007
Avatar de Io
[Io] Io is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: San Fernando (Cádiz)
Posts: 259
Poder: 22
Io Va por buen camino
Bueno lo prometido es deuda

Código:
Instalador

[Setup]

;********************************
AppName=MiAplicación
AppVerName=MiAplicación x.xx
DefaultGroupName=MiAplicación Group
;********************************

OutputDir=.\
OutputBaseFilename=RotaInst
DefaultDirName={pf}\MiAplicación

[Languages]
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

[Types]
Name: "T_Client"; Description: "Instalación Cliente"
Name: "T_Server"; Description: "Instalación Servidor"

[Components]
Name: "C_Client"; Description: "Instalación Cliente"; Types: T_Client T_Server
Name: "C_Program"; Description: "Aplicacion y Programas"; Types: T_Client T_Server
Name: "C_Server"; Description: "Instalación Servidor"; Types: T_Server

[Icons]
Name: "{group}\Aplicaciones RM"; Filename: "{app}\MiAplicacion.exe"


[Registry]
Root: HKLM; Subkey:"SOFTWARE\MiEmpresA\MiAplicación"; Flags: uninsdeletekey



[Files]

;Aplicación
Source: "..\..\Proyecto\MiAplicación.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: C_Program

;Programa gestión usuarios
Source: "..\..\seguridad\security.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: C_Server

;Archivos necesarios para instalar el cliente Fb15
Source: ".\inst_Fb15\IDPLicense.txt"; DestDir: "{app}\Fb15"; Components: C_Client
Source: ".\inst_Fb15\IPLicense.txt"; DestDir: "{app}\Fb15"; Components: C_Client
Source: ".\inst_Fb15\bin\fbclient.dll"; DestDir: "{app}\Fb15\bin"; Components: C_Client
Source: ".\inst_Fb15\bin\instclient.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Client
Source: ".\inst_Fb15\bin\instreg.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Client


;Archivos necesarios para instalar el servidir Fb15
Source: ".\inst_Fb15\aliases.conf"; DestDir: "{app}\Fb15"; Components: C_Server
Source: ".\inst_Fb15\firebird.msg"; DestDir: "{app}\Fb15"; Components: C_Server
Source: ".\inst_Fb15\firebird.conf"; DestDir: "{app}\Fb15"; Components: C_Server
Source: ".\inst_Fb15\readme.txt"; DestDir: "{app}\Fb15"; Components: C_Server
Source: ".\inst_Fb15\security.fbk"; DestDir: "{app}\Fb15"; Components: C_Server
Source: ".\inst_Fb15\security.fdb"; DestDir: "{app}\Fb15"; Components: C_Server
Source: ".\inst_Fb15\bin\fb_inet_server.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\fb_lock_print.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\fbguard.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\fbserver.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\gbak.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\gdef.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\gfix.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\gpre.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\gsec.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\gsplit.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\gstat.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\ib_util.dll"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\install_classic.bat"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\install_super.bat"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\instsvc.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\isql.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\qli.exe"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\bin\uninstall.bat"; DestDir: "{app}\Fb15\bin"; Components: C_Server
Source: ".\inst_Fb15\help\help.fdb"; DestDir: "{app}\Fb15\help"; Components: C_Server
Source: ".\inst_Fb15\include\ib_util.h"; DestDir: "{app}\Fb15\include"; Components: C_Server
Source: ".\inst_Fb15\include\ib_util.pas"; DestDir: "{app}\Fb15\include"; Components: C_Server
Source: ".\inst_Fb15\include\ibase.h"; DestDir: "{app}\Fb15\include"; Components: C_Server
Source: ".\inst_Fb15\include\iberror.h"; DestDir: "{app}\Fb15\include"; Components: C_Server
Source: ".\inst_Fb15\intl\fbintl.dll"; DestDir: "{app}\Fb15\intl"; Components: C_Server
Source: ".\inst_Fb15\lib\fbclient_bor.lib"; DestDir: "{app}\Fb15\lib"; Components: C_Server
Source: ".\inst_Fb15\lib\fbclient_ms.lib"; DestDir: "{app}\Fb15\lib"; Components: C_Server
Source: ".\inst_Fb15\lib\ib_util_ms.lib"; DestDir: "{app}\Fb15\lib"; Components: C_Server
Source: ".\inst_Fb15\udf\fbudf.sql"; DestDir: "{app}\Fb15\udf"; Components: C_Server
Source: ".\inst_Fb15\udf\fbudf.dll"; DestDir: "{app}\Fb15\udf"; Components: C_Server
Source: ".\inst_Fb15\udf\ib_udf.sql"; DestDir: "{app}\Fb15\udf"; Components: C_Server
Source: ".\inst_Fb15\udf\ib_udf.dll"; DestDir: "{app}\Fb15\udf"; Components: C_Server

[Run]
;*********
; CLIENTE
;*********
;Se actualiza registro (Firebird instalado)
Filename: "{app}\Fb15\bin\instreg.exe"; Parameters: "i"; StatusMsg: "Actualizando Registro"; Flags: skipifdoesntexist runhidden waituntilterminated

;Se crea copia de gds32.dll en el directorio de sistema
Filename: "{app}\Fb15\bin\instclient.exe"; Parameters: "i g"; StatusMsg: "Instalando Cliente....."; Flags: skipifdoesntexist runhidden waituntilterminated

;**********
; SERVIDOR
;**********
;Se instala servidor (i), arranque automático (a), tipo superserver(s), se instala guardian(g)
Filename: "{app}\Fb15\bin\instsvc.exe"; Parameters: "i -a -s -g"; StatusMsg: "Instalando servicio....."; Flags: skipifdoesntexist runhidden waituntilterminated

;Se arranca servicio(start)
Filename: "{app}\Fb15\bin\instsvc.exe"; Parameters: "start"; StatusMsg: "Iniciando servicio....."; Flags: skipifdoesntexist runhidden waituntilterminated

;Se presetean usuarios
Filename: "{app}\security.exe"; Parameters: "user i"; StatusMsg: "Actualizando usuarios"; Flags: skipifdoesntexist runhidden waituntilterminated



[UninstallRun]
;**********
; SERVIDOR
;**********
;Se para servicio(stop)
Filename: "{app}\Fb15\bin\instsvc.exe"; Parameters: "stop"; StatusMsg: "Deteniendo servicio....."; Flags: skipifdoesntexist runhidden waituntilterminated

;Se desinstala servidor
Filename: "{app}\Fb15\bin\instsvc.exe"; Parameters: "r"; StatusMsg: "Desistalando servicio....."; Flags: skipifdoesntexist runhidden waituntilterminated


;*********
; CLIENTE
;*********
;Se borra copia de gds32.dll en el directorio de sistema
Filename: "{app}\Fb15\bin\instclient.exe"; Parameters: "r g"; StatusMsg: "Desinstalando Cliente....."; Flags: skipifdoesntexist runhidden waituntilterminated

;Se borra entrada registro (Firebird instalado)
Filename: "{app}\Fb15\bin\instreg.exe"; Parameters: "r"; StatusMsg: "Actualizando Registro....."; Flags: skipifdoesntexist runhidden waituntilterminated

[.code]

function Ya_Existe_Fb:boolean;
var
  aux :string;
begin
  if RegQueryStringValue(HKEY_LOCAL_MACHINE,'SOFTWARE\Firebird Project\Firebird Server\Instances','DefaultInstance', aux) then
    result:=(aux <> '')
  else
    result:=False;
end;


//Se crea aplicación
function InitializeSetup(): Boolean;
begin

  result:=True;

  if not UsingWinNT then
  begin
    result:=False;
    MsgBox('La versión de windows debe ser: Windows NT 4.0, 2000, XP', mbError, MB_OK);
  end
  else
  if Ya_Existe_Fb then
  begin
    result:=False;
    MsgBox('Ya se encuentra instalada una versión de FireBird', mbError, MB_OK);
  end;
end;



Actualizador
[Setup]


;************************
AppName=MiAplicación
AppVerName=MiAplicación x.xx
DefaultGroupName=MiAplicación Group
;************************

;No se crea directorio para la aplicación
CreateAppDir=no

OutputDir=.\
OutputBaseFilename=RMupdate
Compression=lzma
SolidCompression=yes

;No crea apunte en Panel de Control
CreateUninstallRegKey=no


[Languages]
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

[Files]
;El ejecutable se toma de la carpeta Proyecto
Source: "..\..\proyecto\MiAplicación.exe"; DestDir: "{code:GetDirect|p}"; Flags: ignoreversion; components: program

;Archivo de configuración
Source: "..\..\ControlVersiones.html"; DestDir: "{code:GetDirect|v}"; components: version

;El Fuente se toma de la carpeta Proyecto
Source: "..\..\proyecto\*.dfm"; DestDir: "{code:GetDirect|f}"; Flags: ignoreversion; Components: sources
Source: "..\..\proyecto\*.pas"; DestDir: "{code:GetDirect|f}"; Flags: ignoreversion; Components: sources
Source: "..\..\proyecto\*.cfg"; DestDir: "{code:GetDirect|f}"; Flags: ignoreversion; Components: sources
Source: "..\..\proyecto\*.dof"; DestDir: "{code:GetDirect|f}"; Flags: ignoreversion; Components: sources
Source: "..\..\proyecto\*.res"; DestDir: "{code:GetDirect|f}"; Flags: ignoreversion; Components: sources
Source: "..\..\proyecto\*.dpr"; DestDir: "{code:GetDirect|f}"; Flags: ignoreversion; Components: sources

[Types]
Name: "compact"; Description: "Instalación compacta"
Name: "custom"; Description: "Instalación personalizada"; Flags: iscustom
Name: "full"; Description: "Instalación completa"

[Components]
Name: "program"; Description: "Ejecutable"; Types: full compact custom; Flags: fixed
Name: "sources"; Description: "Código Fuente"; Types: full custom
Name: "version"; Description: "Archivo versiones"; Types: full custom





;CONFIGURACIÓN NECESARIA PARA ACTUALIZAR BD
;COMENTAR ESTAS LÍNEAS CUANDO NO SEA NECESARIO ACTUALIZAR BD.
;*********************************************************************************************************************************************************
[Files]
Source: "..\..\control_configuracion\MODIF BD\Exe\Act_BD.exe"; DestDir: "{code:GetDirect|p}"; Flags: ignoreversion deleteafterinstall ; components: datos

[Components]
Name: "datos"; Description: "Actualización Base de Datos"; Types: full custom

[Run]
Filename: "{code:GetDirect|p}\Act_BD.exe"; Parameters: "auto -v 4-03.08.07 -c 3-19.01.07"; StatusMsg: "Actualizando Estructura BD"; Flags: skipifdoesntexist waituntilterminated
;*********************************************************************************************************************************************************


[.code]
const
  TIT_FUENTE ='Código Fuente';
  TIT_VERSION ='Archivo Versiones';
  REG_CLAVE_PROGRAM='SOFTWARE\RM\ROTA_SQL\APLICACION';
  REG_VALOR_PROGRAM='Path';

  REG_CLAVE_INSTALL='SOFTWARE\RM\SETUP\UPDATE';
  REG_VALOR_INSTALL_FUENTE='Fuente';
  REG_VALOR_INSTALL_VERSION='Version';

  CLASE_APLICACION='TfrmPrincipal';
var
  Dir_Exe,
  Dir_Fuente,
  Dir_Version :string;
  DataDirPage: TInputDirWizardPage;
  Num_Dirs :integer;


//Devuelve el directorio de destino segun parametro
function GetDirect( p :string):string;
begin
    if p = 'p' then
    begin
      if Dir_Exe <>'' then
        result:=Dir_Exe
    end
    else
    if p = 'f' then
    begin
      if Dir_Fuente <>'' then
        result:=Dir_Fuente
    end
    else
    if p = 'v' then
    begin
      if Dir_Version <>'' then
        result:=Dir_Version
    end;
end;




//Evento al confirmarlas carpetas de destino
function NextButDir(Sender: TWizardPage): Boolean;
var
  j:integer;
begin

//Comprobamos entradas no vacía
  result:=(Num_Dirs > 0);

  if result then
    for j:=0 to Num_Dirs -1 do
      result:=result and (DataDirPage.Values[j]<>'');

  if result then
    for j:=0 to Num_Dirs -1 do
      if DataDirPage.Values[j] <> '' then
        if DataDirPage.PromptLabels[j].caption = TIT_FUENTE then
          Dir_Fuente:=DataDirPage.Values[j]
        else
          Dir_Version:=DataDirPage.Values[j];
end;






//Evento de click en botón siguiente
function NextButtonClick(CurPageID: Integer): Boolean;
begin
  result:=True;

//  Despues de la página selección componentes
    if CurPageID = wpSelectComponents then
  begin
//  Si se ha seleccionado cualquiera de los dos componentes se abre ventana de directorios
    if IsComponentSelected('sources') or IsComponentSelected('version') then
    begin
      DataDirPage := CreateInputDirPage(CurPageID,
        'Otros elementos que se copiarán.', '',
        'Seleccione la carpeta donde se copiarán los siguientes elementos, despues haga click en siguiente.',
        True, '');

      DataDirPage.OnNextButtonClick:=@NextButDir;

      Num_Dirs:=0;

      if IsComponentSelected('sources') then
      begin
        DataDirPage.Add(TIT_FUENTE);
        DataDirPage.values[Num_Dirs]:=GetDirect('f');
        Num_Dirs:=Num_Dirs +1;
      end;

      if IsComponentSelected('version') then
      begin
        DataDirPage.Add(TIT_VERSION);
        DataDirPage.values[Num_Dirs]:=GetDirect('v');
        Num_Dirs:=Num_Dirs +1;
      end;
    end;
  end;
end;



procedure getDirectorios;
var
  aux: string;
begin

  Dir_Exe:='';
  Dir_Fuente:='';
  Dir_Version:='';

//Directorio actual aplicación
  if RegQueryStringValue(HKEY_LOCAL_MACHINE, REG_CLAVE_PROGRAM,REG_VALOR_PROGRAM, aux) then
    if aux <> '' then
      Dir_Exe:=ExtractFilePath(aux);

//Directorio Fuente
  RegQueryStringValue(HKEY_LOCAL_MACHINE, REG_CLAVE_INSTALL,REG_VALOR_INSTALL_FUENTE, Dir_Fuente)

//Directorio Version
  RegQueryStringValue(HKEY_LOCAL_MACHINE, REG_CLAVE_INSTALL,REG_VALOR_INSTALL_VERSION, Dir_Version)


//Directorio Fuentes
  if Dir_Fuente='' then
    Dir_Fuente:=Dir_Exe+'\fuente';

//Directorio Versiones
  if Dir_Version='' then
    Dir_Version:=Dir_Exe+'\Version';
end;


//Se crea aplicación
function InitializeSetup(): Boolean;
begin

  getDirectorios;

  if Dir_Exe = '' then
  begin
    result:=False;
    MsgBox('La aplicación no se encuentra instalada', mbError, MB_OK);
  end
  else
  begin
//  Comprobamos que la aplicación no se encuentre ejecutandose
    if FindWindowByClassName(CLASE_APLICACION)<> 0 then
    begin
      result:=False;
      MsgBox('La aplicación actualmente se está ejecutando.', mbError, MB_OK);
    end
    else
      result:=True;
  end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
//Instalación terminada
  if CurStep=ssPostInstall then
  begin
    RegWriteStringValue(HKEY_LOCAL_MACHINE, REG_CLAVE_INSTALL,REG_VALOR_INSTALL_FUENTE, Dir_Fuente);
    RegWriteStringValue(HKEY_LOCAL_MACHINE, REG_CLAVE_INSTALL,REG_VALOR_INSTALL_VERSION, Dir_Version);
  end;
end;

Espero que te sirva

Última edición por dec fecha: 08-09-2007 a las 18:53:12.
Responder Con Cita
  #6  
Antiguo 09-09-2007
Dado de baja Dado de baja is offline
Miembro
 
Registrado: ago 2007
Posts: 140
Poder: 20
Dado de baja Va por buen camino
Muchas Gracias, IO.

Ya estoy mirando lo que dices.
__________________
Saludos Cordiales.
------------------
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 generar un id UREÑA Conexión con bases de datos 9 20-05-2007 00:56:47
como generar txt de un query en SQL?? danytorres MS SQL Server 12 05-08-2005 20:36:03
¿Como Generar Ejecutable con BDE? zugazua2001 Varios 4 14-12-2004 23:27:39
como generar un informe ? maruenda Impresión 1 24-11-2004 17:52:24
Como generar esto? nefy SQL 2 02-04-2004 17:34:46


La franja horaria es GMT +2. Ahora son las 00:52:51.


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