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

 
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 17-10-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.562
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
 



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 06:43:53.


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