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
  #21  
Antiguo 17-10-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por Lepe
El hecho de hacer un programa para añadir alias y otro para borrar, me parece demasiado, yo al menos cambiaría el nombre del programa "AddAlias" por "AliasManager" con una linea de comando:
"Robandome" la buena idea de Lepe les dejo aqui las modificaciones que hice.

Código Delphi [-]
 
{
program adds a alias to the BDE configuration file
 parameters:
   0: programname + path (standard parameter of OS)
   1: Name of alias
      if begins with '-' then delete first if exist
                         else do nothing if exist
   2: path to data directory
   3: BDE driver name
Bugfix: Savierhs Lopez Arteaga 3.1.2001
        AddAlias didn't delete alias with beginning '-'
 
      Modificación para una operación genérica
   1: Tipo de Operación  ( /ADD, /DEL)
   2: Nombre de Alias
   3: Ruta de Directorio de Datos
   4: Driver de BDE
}
 
program AliasManager;
uses
  Windows, SysUtils, BDE;
 
var
  GType:     string; //Tipo de Operación
  GAlias:    string;
  GDriver:   string;
  GAliasDir: string;
  FParams:   string;
  FDrvName:  string;
  FDelete:   boolean;
  i:         integer;
 
function StrToOem(const AnsiStr: string): string;
begin
  SetLength(Result, Length(AnsiStr));
  if Length(Result) > 0 then
    CharToOem(PChar(AnsiStr), PChar(Result));
end;

{-----------------------------------------------------------------------}
begin
  for i := 1 to ParamCount do
  begin
    case i of
      1: GType     := ParamStr(1);
      2: GAlias    := ParamStr(2);
      3: GAliasDir := ParamStr(3);
      4: GDriver   := ParamStr(4);
    end;
  end;
 
  // Tipo de Operación
  if GType = '/DEL' then
     FDelete := True
  else FDelete := False;
 
  //default alias
  if GAliasDir = '' then GAliasDir := ExtractFilePath(ParamStr(0))+'Tables';
  FDrvName := GDriver;

  //set Parameters, the driver and server name
  if (CompareText(GDriver, szCFGDBSTANDARD) = 0) or
     (CompareText(GDriver, szPARADOX) = 0)       or
     (CompareText(GDriver, szDBASE) = 0)         or
     (CompareText(GDriver, szFOXPRO) = 0)        or
     (CompareText(GDriver, szASCII) = 0)         then
  begin
    if (CompareText(GDriver, szCFGDBSTANDARD) = 0) then FDrvName := szPARADOX;
 
    //set parameters for the new alias
    FParams := Format('%s:"%s"',  [szCFGDBPATH, GAliasDir]) +
               Format(';%s:"%s"', [szCFGDBDEFAULTDRIVER, GDriver]) +
               Format(';%s:"%s"', [szCFGDBENABLEBCD, szCFGFALSE]);
  end else begin
    if (CompareText(GDriver, 'INTRBASE') = 0)
    then FParams := Format('%s:"%s"',  [szSERVERNAME, GAliasDir])
    else FParams := Format('%s:"%s"',  [szDATABASENAME, GAliasDir]);
    //add other Parameters here !!!!!!!!!!!!!!!!!
  end;
 
  DbiInit(nil);
  try
    if FDelete then
      try
        DbiDeleteAlias(nil, PChar(GAlias));
      except
      end
      else //Conserve este else
      try
        DbiDeleteAlias(nil, PChar(GAlias)); //Se debe borrar el Alias si existe
                                                     // ya que no hay una función que
                                                    // permita cambiar el Path
        DbiAddAlias(nil, PChar(StrToOem(GAlias)),
                         PChar(StrToOem(FDrvName)),
                         PChar(FParams), True);
        DbiCfgSave(nil, nil, True);
      except
      end;
  finally
    DbiExit();
  end;
end.
//----------------------------------------------------------------------

Por otro lado el programa de instalación se ve así

Cita:
[Files]
Source: "D:\Installers\AliasManager\AliasManager.exe"; DestDir: "{app}"

[Icons]
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"

[Run]
Filename: "{app}\AliasManager.exe"; Parameters: "/ADD MANAGER ""{app}""\tables PARADOX"

[UninstallRun]
Filename: "{app}\AliasManager.exe"; Parameters: "/DEL MANAGER"
Ya he probado instalando, reinstalando cambiando el path del sistema y desinstalando.

Hizo todo lo que se esperaba.

Saludos.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #22  
Antiguo 18-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo añadiría el StrToOem al FParams. Haciendo una prueba, si se ejecuta el programa desde la línea de comandos y se le pasa una ruta que tenga acentos, no la lee correctamente.

// Saludos
Responder Con Cita
  #23  
Antiguo 19-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 22
David Va por buen camino
Cita:
Empezado por egostar
[Files]
Source: "D:\Installers\AliasManager\AliasManager.exe"; DestDir: "{app}"

[Icons]
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"

[Run]
Filename: "{app}\AliasManager.exe"; Parameters: "/ADD MANAGER ""{app}""\tables PARADOX"

[UninstallRun]
Filename: "{app}\AliasManager.exe"; Parameters: "/DEL MANAGER"
Aquí hay algo que no entiendo y es donde pones el alias .

Imaginemos que tengo un alias , llamado Alias1 , dónde lo pondría ?

Con respecto a lo que dice román , de poner StrToOem(FParams) , a cual hay que ponerle esta función , quizás sólo a este :

DbiAddAlias(nil, PChar(StrToOem(GAlias)),
PChar(StrToOem(FDrvName)),
PChar(StrToOem(FParams)), True);

Un saludo
Responder Con Cita
  #24  
Antiguo 19-10-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por David
Aquí hay algo que no entiendo y es donde pones el alias .

Imaginemos que tengo un alias , llamado Alias1 , dónde lo pondría ?

Con respecto a lo que dice román , de poner StrToOem(FParams) , a cual hay que ponerle esta función , quizás sólo a este :

DbiAddAlias(nil, PChar(StrToOem(GAlias)),
PChar(StrToOem(FDrvName)),
PChar(StrToOem(FParams)), True);

Un saludo
Aqui te muestro donde.

Cita:
[Run]
Filename: "{app}\AliasManager.exe"; Parameters: "/ADD ALIAS1 ""{app}""\tables PARADOX"

[UninstallRun]
Filename: "{app}\AliasManager.exe"; Parameters: "/DEL ALIAS1"
Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 19-10-2006 a las 18:38:07.
Responder Con Cita
  #25  
Antiguo 24-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 22
David Va por buen camino
La instalación ya me funciona perfectamente .

Pero puestos a mejorar en este post , me pregunto si seria posible una instalación en red con los alias y todo .

Recuerdo que para instalar paradox en red , hay que instalar en BDE en los dos ordenadores . Hay que crear 2 unidades mapeadas , por ejemplo J e I . Hay que crear una carpeta dentro del directorio de la aplicación llamada por ejemplo net.

Los alias , ya no apuntan a app/tablas , sino a J:/tablas (J:\ unidad mapeada donde esta el programa ) y además en el BDE , en la página de Configuración , en Drivers -> Native -> Paradox , hay que poner la unidad mapeada I , en Net Dir , que corresponde a la carpeta {app\net} .

Hacer esto para instalar paradox en red no es dificil , lo haces una vez o dos y ya lo sabes para otras , pero pregunto , habría alguna posibilidad de hacer esto con el instalador Inno Setup .

O esto ya es demasiado
Responder Con Cita
  #26  
Antiguo 25-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Simplemente no uses unidades mapeadas.

Puedes usar rutas del tipo : "\\nombreservidor\nombrecarpeta".

Al ser compartida con acceso global, tambien comparte todas las subcarpetas. Esa carpeta tendrá una subcarpeta que se llama "net" y dentro es donde redireccionas el NETFILEDIR de tu session en paradox.

Al realizar la instalación con innosetup, lo mejor es hacerlo en una memoria USB, de esa forma tu cliente puede elegir qué ordenador de la red actuará como servidor, en un archivo se guarda la configuración de la instalación "Servidor", y despues al instalar en modo cliente se lee de ese archivo. Todo queda configurado correctamente.

Los alias pueden ser creados dinámicamente con Database.Session.AddStandardAlias así que tampoco es problema.

El problema de TODO es elegir un camino de los 300 que llevan al mismo fin.

Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
inno setup 5 Cosgaya Varios 0 10-01-2006 13:09:38
Inno Setup Ini? marceloalegre Varios 2 07-12-2005 20:49:17
Inno Setup tarco35 Varios 0 09-04-2005 16:48:01
Mas funcionalidad con Inno Setup alt126 Varios 3 20-12-2004 12:58:03
Script de Inno Setup muli Varios 1 11-09-2003 20:12:04


La franja horaria es GMT +2. Ahora son las 07:54:27.


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