Avatar billede jadirir Nybegynder
17. august 2002 - 21:19 Der er 6 kommentarer

Alias problem

Hej

Vi er færdige med en database application som nu skal installeres hos kunden , men skal testes først. Efter lang tid fik vi fat Innoset up program. Men vi har problem med BDE som ikke kan finde Aliasen. Hvordan kan vi gør det ? Vi bruger interbase 6 og delphi 6.

Er der nogen der kan hjælpe os ?

Her er vores script filen :


[Tasks]
Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; MinVersion: 4,4

[Files]
Source: "c:\somscan.exe"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "C:\Downs\MiniReg.exe"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "MiniReg.exe"; DestDir: "{tmp}"
Source: "BdeInst.dll"; DestDir: "{tmp}"
Source: "AddAlias.exe"; DestDir: "{tmp}"



[Icons]
Name: "{group}\Mahamud"; Filename: "{app}\somscan.exe"
Name: "{userdesktop}\Mahamud"; Filename: "{app}\somscan.exe"; MinVersion: 4,4; Tasks: desktopicon

[Run]
Filename: "{app}\somscan.exe"; Description: "Launch Mahamud"; Flags: nowait postinstall skipifsilent
Filename: "{tmp}\MiniReg.exe"; Parameters: """{tmp}\BdeInst.dll"""
Filename: "{tmp}\AddAlias.exe";
Avatar billede pellelil Nybegynder
18. august 2002 - 10:38 #1
Hvis du bruger Interbase 6 så har du vel ikke noget at bruge BDE'en til ?
Avatar billede jadirir Nybegynder
19. august 2002 - 09:34 #2
Hvad skal vi gøre ? Kan du giv os nogle tips
Avatar billede pellelil Nybegynder
19. august 2002 - 09:52 #3
Du svarede ikke på hvad du skulle bruge BDE'en ti`? men hvis du vitterlig SKAL bruge den kunne noget tyde på at du tilgår den uden brug at IBX (IBO eller FIB). Du burde havde brugt en af disse 3, men nu hvor "skaden er sket", så hænger du på BDE'en indtil du skulle få lyst til at lave det om.

Med hensyn til installationer så bruger jeg selv kun Inno Setup (eller rettere "My Inno Setup Extentions"). Du kan sagtens få denne til såvel at installere BDEen som at oprettet dit Alias. Jeg bør (derhjemme) have et gammelt script hvori jeg netop gør det. Jeg vil se om jeg husker det (får først tid, sent i aften).

På Inno Setup's hjemmeside kan du finde en beskrivelse af hvad du skal gøre: http://www.jrsoftware.org/ishowto.phtml?a=bde

Såvidt jeg kan se kalder du AddAlias uden parameter og den ved således ikke hvilket alias det er du vil have den til at oprettet !?
Avatar billede jadirir Nybegynder
19. august 2002 - 13:34 #4
Helt enig med dig at bruge Inno setup , men problemet er hvilken parametre skal jeg bruge til AddAlias.exe. Jeg bruger Interbase 6. Vi chates i aften
Avatar billede pellelil Nybegynder
19. august 2002 - 13:41 #5
Har du kigget på ovenstående link?. Når du henter AddAlias.Zip så indeholder denne en tekst-fil (Alias.Txt) der bl.a. beskriver parametrene:
<SNIP>
  Paramstr(0): programname + path (standard parameter of OS)
  Paramstr(1): Name of alias: if begins with '-' then delete first then add
                              else only add if doesn't exist
  Paramstr(2): path to data directory
  Paramstr(3): BDE driver name
</SNIP>

ParamStr(0) "er du ikke herrre over", man de andre er dig. Jeg antager at du vil lave alias'et "MitAlias" og dette skal pege på folderen "C:\MitAlias\Data". De 3. parameter "bliver for egen regning" da jeg aldrig har taget fat i InterBase via BDE'en (da denne blot er et unødigt/generende lag):

<SNIP>
AddAlias MitAliase C:\MitAlias\Data Standard
</SNIP>
Avatar billede pellelil Nybegynder
20. august 2002 - 11:10 #6
Så kom jeg i nærheden af "mit projekt". For det første lavede jeg en lille ændring i sourcen til AddAlias således jeg kunne sætte flere parametre hvis der var behov for det.
<SNIP>
{
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 '-'
}

program AddAlias;

uses
  Windows, SysUtils, BDE;

var
  GAlias:    string  = 'New';
  GDriver:  string = szPARADOX;
  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: GAlias    := ParamStr(1);
      2: GAliasDir := ParamStr(2);
      3: GDriver  := ParamStr(3);
    end;
  end;

  //default alias
  if GAliasDir = '' then GAliasDir := ExtractFilePath(ParamStr(0))+'Data';

  //should delete alias first? separate alias name
  if GAlias[1] = '-' then
  begin
    FDelete := True;
    //GAlias := Copy(GAlias, 1, Length(GAlias)); Bug
    Delete(GAlias, 1, 1);                    //Fix by Savierhs Lopez Artega
  end else FDelete := False;

  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;

  //--- Add additional Parameters  (Pelle F. S. Liljendal)
  if ParamCount > 3 then begin
    for i := 4 to paramcount do
    begin
      FParams := FParams + ParamStr(i) + ' ';
    end;
  end;
  //---

  DbiInit(nil);
  try
    if FDelete then
      try
        DbiDeleteAlias(nil, PChar(GAlias));
      except
      end;

    try
      DbiAddAlias(nil, PChar(StrToOem(GAlias)),
                      PChar(StrToOem(FDrvName)),
                      PChar(FParams), True);
      DbiCfgSave(nil, nil, True);
    except
    end;

  finally
    DbiExit();
  end;

end.
//----------------------------------------------------------------------------------------
</SNIP>

Som nævnt har jeg ingen erfaring med BDE op mod en InterBase database, men i mit tilfælde skulle jeg oprette et ODBC aliast op mod en AS/400. Til dette formål skulle jeg bruge "min udvidelse" af AddAlias fordi jeg havde brug for at sætte flere parametre:

Fra Inno Setup Scripted kaldte jeg således AddAlias på flg måde:
<SNIP>
Filename: {tmp}\AddAlias.exe; Parameters: """-EGDTA"" ""EGDTA"" ""Client Access ODBC Driver (32-bit)"" "";SQLQRYMODE:SERVER"" "";ODBC DSN:EGDTA"" "";USER NAME:FCCSOFT"""; Components: ALIASEGDTA
</SNIP>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester