Install

Install

Setup program (source)
BDE installation problems with InstallShield
Overriding default InstallShield target directory


Setup program (source)

Question




Answer


A:

{ this is a setup program for an application I wrote.

  Maybe it's useful to others who are about to write their

  own Setup-programs.



  Dr. Norbert Hartkamp

  hartkamp@uni-duesseldorf.de

  n-hartkamp@nadeshda.gun.de

}



{file setupscl.pas}

program Setupscl;



uses

  Forms,

  Setupsc1 in 'SETUPSC1.PAS' {Form1};



{$R *.RES}



begin

  Application.CreateForm(TForm1, Form1);

  Application.Run;

end.



{file setupsc1.pas}

unit Setupsc1;



interface



uses

  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

  Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, LZExpand, DdeMan;



const ProgName   = 'SCL90.EXE';

      LZProgName = 'SCL90.EX_';

type

  TForm1 = class(TForm)

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    Panel1: TPanel;

    Label1: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    Label2: TLabel;

    Label6: TLabel;

    Label7: TLabel;

    Panel2: TPanel;

    Label8: TLabel;

    Label9: TLabel;

    Label10: TLabel;

    ProgrammpfadEdit: TEdit;

    DatenpfadEdit: TEdit;

    Label11: TLabel;

    Label12: TLabel;

    Panel3: TPanel;

    Label14: TLabel;

    AuswerterEdit: TEdit;

    Label15: TLabel;

    Inst1Edit: TEdit;

    Inst2Edit: TEdit;

    Inst3Edit: TEdit;

    CheckBox1: TCheckBox;

    Panel4: TPanel;

    Image1: TImage;

    Label13: TLabel;

    Label16: TLabel;

    Label17: TLabel;

    DdeClientConv1: TDdeClientConv;

    Image2: TImage;

    Label19: TLabel;

    Label20: TLabel;

    Label18: TLabel;

    Panel5: TPanel;

    Label21: TLabel;

    Label22: TLabel;

    Label23: TLabel;

    Label24: TLabel;

    Label25: TLabel;

    Label26: TLabel;

    procedure FormPaint(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

  private

    { Private-Deklarationen }

  public

    { Public-Deklarationen }

    DialogNo            : byte;

    WinDir              : array [0..144] of char;

    Programmverzeichnis : string[127];

    Datenverzeichnis    : string[127];

  end;



var

  Form1: TForm1;



implementation



{$R *.DFM}



procedure TForm1.FormPaint(Sender: TObject);

var   Rows, Height:Integer;

begin

  Height:=(ClientHeight + 255) div 256;

  for Rows := 0 to 255 do

  begin

    Canvas.Brush.Color := RGB(0,0,Rows);

    Canvas.FillRect(Rect(0,(255-Rows)*Height,ClientWidth,((255-Rows)+1)*Height));

  end;

  Canvas.Font.Size := 32;

  Canvas.Font.Color:= clBlack;

  Canvas.Brush.Style := bsClear;

  Canvas.TextOut(13, 13, 'Setup SCL-90-Auswertung');

  Canvas.Font.Color:= clYellow;

  Canvas.TextOut(10, 10, 'Setup SCL-90-Auswertung');

  Canvas.Font.Size := 11;

  Canvas.Font.Style:= [fsBold];

  Canvas.Font.Color:= clWhite;

  Canvas.TextOut(10, ClientHeight-(ClientHeight div 20), '=AE N.Hartkamp, 1996');

end;



procedure TForm1.FormCreate(Sender: TObject);

var fileHandle: THandle;

    fileBuffer: Array [0..40] of Char;

begin

  BorderStyle := bsNone;

  WindowState := wsMaximized;

  BitBtn1.Top := trunc(ClientHeight * 0.90);

  BitBtn2.Top := trunc(ClientHeight * 0.90);

  BitBtn1.Left:= trunc(ClientWidth  * 0.80);

  BitBtn2.Left:= trunc(ClientWidth  * 0.60);

  DialogNo := 0;

  FillChar(WinDir, SizeOf(WinDir), #0);

  GetWindowsDirectory(WinDir, 144);

  ProgrammpfadEdit.Text := StrPas(WinDir);

  ProgrammpfadEdit.Text := ProgrammpfadEdit.Text[1] + ':\SCL90R';

  DatenpfadEdit.Text := ProgrammpfadEdit.Text;

  AuswerterEdit.Text := 'Anwendername';



  { Get user name and company name }

  fileHandle := LoadLibrary('USER');



  if fileHandle >= HINSTANCE_ERROR then begin

    If LoadString(fileHandle, 514, @fileBuffer, 40) <> 0 Then

       AuswerterEdit.Text :=3D StrPas(fileBuffer);

    FreeLibrary(fileHandle);

  end;



  Inst1Edit.Text := 'Bezeichnung der Institution';

  Inst2Edit.Text := 'Bezeichnung der Institution (Fortsetzung)';

  Inst3Edit.Text := '- z.B.: Angabe der Abteilung -';

  CheckBox1.Checked := true;



  Panel1.Left := (ClientWidth  div 2) - (Panel1.Width  div 2);

  Panel1.Top  := (ClientHeight div 2) - (Panel1.Height div 2);



  Panel2.Left := (ClientWidth  div 2) - (Panel2.Width  div 2);

  Panel2.Top  := (ClientHeight div 2) - (Panel2.Height div 2);



  Panel3.Left := (ClientWidth  div 2) - (Panel3.Width  div 2);

  Panel3.Top  := (ClientHeight div 2) - (Panel3.Height div 2);



  Panel4.Left := (ClientWidth  div 2) - (Panel4.Width  div 2);

  Panel4.Top  := (ClientHeight div 2) - (Panel4.Height div 2);



  Panel5.Left := (ClientWidth  div 2) - (Panel5.Width  div 2);

  Panel5.Top  := (ClientHeight div 2) - (Panel5.Height div 2);

end;



procedure TForm1.BitBtn2Click(Sender: TObject);

begin

  Close;

end;



procedure TForm1.BitBtn1Click(Sender: TObject);

var aResultStr : array[0..144] of char;

    strIniPath : array[0..144] of char;

    ResultStr  : string[144];

    fromStruct : TOFStruct;

    toStruct   : TOFStruct;

    ret        : word;

    fromHandle : integer;

    toHandle   : integer;

    BDEOk      : boolean;

    CurPath    : string[144];

    Ok         : Longint;

    i          : word;

    DDE_Link   : Boolean;

    Macro      : string;





  function iif(cond : boolean; exp1, exp2 : string) : string;

  begin

    if cond then result := exp1 else result := exp2;

  end;



begin

  if DialogNo = 0 then begin

    ret := GetProfileString('IDAPI', 'CONFIGFILE01', 'NIX', aResultStr,

 80);

    ResultStr := StrPas(aResultStr);

    BDEOk := (ResultStr <> 'NIX') and FileExists(ResultStr);

    if not BDEOk then begin

      Panel1.Hide;

      MessageDlg('Installationsfehler:'+#13#13+

                 'Bevor Sie das SCL-90 Auswertungsprogramm installieren'+

#13+

                 'k=F7nnen, m=B3ssen Sie die Database-Engine installieren

.'+#13#13+

                 'F=B3hren Sie dazu das Program SETUP.EXE von'+#13+

                 'der BDE-Diskette 1 aus.', mtError, [mbOk], 0);

      Close;

    end;

  end;

  Inc(DialogNo);

  case DialogNo of

    1: begin

         Panel1.Hide;

         Panel2.Show;

         ProgrammpfadEdit.SetFocus;

       end;

    2: begin

         GetDir(0, CurPath);

         Ok  := 0;

         ret := IOResult;

         {$I-}

         ChDir(ProgrammpfadEdit.Text);

         if IOResult <> 0 then ok := 1;

         ChDir(DatenpfadEdit.Text);

         if IOResult <> 0 then if ok = 0 then ok := 2 else ok := 3;

         if ok <> 0 then begin

           case ok of

             1 : CurPath := 'Das Programmverzeichnis ist ';

             2 : CurPath := 'Das Datenverzeichnis ist ';

             3 : CurPath := 'Programm- und Datenverzeichnis sind ';

           end;

           Panel2.Hide;

           if MessageDlg(CurPath + 'nicht vorhanden'+#13+

                        iif(ok=3,'Sollen die Verzeichnisse ', 'Soll das

 Verzeichnis ') +

                        'angelegt werden?', mtConfirmation, [mbYes, mbNo]

, 0) = mrNo

             then begin

               Panel2.Show;

               Dec(DialogNo);

               if odd(Ok) then ProgrammpfadEdit.SetFocus

                          else DatenpfadEdit.SetFocus;

             end else begin

               MkDir(ProgrammpfadEdit.Text);

               MkDir(DatenpfadEdit.Text);

               DialogNo := 2;

               ret := IOResult;

               Ok  := 0;

             end;

         end;

         ChDir(CurPath);

         if Ok = 0 then begin

           Panel2.Hide;

           Panel3.Show;

           AuswerterEdit.SetFocus;

         end;

       end;

    3: begin

         Panel3.Hide;

         Panel4.Show;

         Invalidate;

         Application.ProcessMessages;

         ResultStr := ProgrammpfadEdit.Text;

         if ResultStr[length(ResultStr)] <> '\' then ResultStr := ResultStr

         + '\';

         StrPCopy(strIniPath, ResultStr + 'SCL90.INI');

         WritePrivateProfileString('Passwort', 'Passwort', '=C1=C2=BF',

         strIniPath);



         StrPCopy(aResultStr, DatenpfadEdit.Text);

         WritePrivateProfileString('Vorgaben', 'Datenpfad', aResultStr,

         strIniPath);



         StrPCopy(aResultStr, Inst1Edit.Text);

         WritePrivateProfileString('Vorgaben', 'Inst1'    , aResultStr,

         strIniPath);



         StrPCopy(aResultStr, Inst2Edit.Text);

         WritePrivateProfileString('Vorgaben', 'Inst2'    , aResultStr,

         strIniPath);



         StrPCopy(aResultStr, Inst3Edit.Text);

         WritePrivateProfileString('Vorgaben', 'Inst3'    , aResultStr,

         strIniPath);



         StrPCopy(aResultStr, AuswerterEdit.Text);

         WritePrivateProfileString('Vorgaben', 'Auswerter', aResultStr,

         strIniPath);



         WritePrivateProfileString('Vorgaben', 'TWerte',    '1', strIniPath);



         fromHandle := LZOpenFile(LZProgName, fromStruct, OF_READ);

         ResultStr  := ProgrammpfadEdit.Text;

         if ResultStr[length(ResultStr)] <> '\' then ResultStr := ResultStr

         + '\';

         StrPCopy(aResultStr, ResultStr+ProgName);

         toHandle   := LZOpenFile(aResultStr, toStruct, OF_CREATE);

         ok := LZCopy(fromHandle, toHandle);

         if ok < 0 then begin

           case ok of

             LZERROR_BADINHANDLE  : ResultStr := 'Das Handle, das die

             Quelldatei bezeichnet, ist nicht g=B3ltig.';

             LZERROR_BADOUTHANDLE : ResultStr := 'Das Handle, das die

             Zieldatei bezeichnet, ist nicht g=B3ltig.';

             LZERROR_BADVALUE     : ResultStr := 'Der eingegebene Parameter

             ist au=DFerhalb des erlaubten Bereichs.';

             LZERROR_GLOBALLOC    : ResultStr := 'F=B3r die ben=F7tigten

             Puffer steht nicht gen=B3gend Speicher zu'+ 'Verf=B3gung.';

             LZERROR_GLOBLOCK     : ResultStr := 'Das Handle, das die

             internen Datenstrukturen bezeichnet, ist nicht'+

                                                 'g=B3ltig.';

             LZERROR_READ         : ResultStr := 'Die Quelldatei hat ein

             ung=B3ltiges Format.';

             LZERROR_UNKNOWNALG   : ResultStr := 'Die Quelldatei ist mi=

t einem unbekannten Algorithmus komprimiert worden.';

             LZERROR_WRITE        : ResultStr := 'Es steht nicht gen=B3=

gend Platz f=B3r die Ausgabedatei zur Verf=B3gung.';

           end;

           MessageDlg('Fehler beim Expandieren von SCL90.EXE:'+#13#13+

                      ResultStr, mtError, [mbOk], 0);

         end else

         begin

           Panel4.Hide;

           Ok := 0;

           with DdeClientConv1 do begin

             DDE_Link := FALSE;

             DDE_LINK := SetLink('ProgMan','ProgMan');

             if DDE_LINK = TRUE then

             begin

               OpenLink;

               Macro := ' [CreateGroup ("SCL-90-Auswertung")]';

               StrPCopy (aResultStr, Macro);

               if not ExecuteMacro(aResultStr, False) then

                 MessageDlg('Programmgruppe konnte nicht eingerichtet

                 werden...',

                            mtInformation, [mbOK],  0) else

               begin

                 Macro := ' [ShowGroup("SCL90AUS.GRP",1)]';

                 StrPCopy (aResultStr, Macro);

                 ExecuteMacro(aResultStr, False);

                 ResultStr  := ProgrammpfadEdit.Text;

                 if ResultStr[length(ResultStr)] <> '\'

                   then ResultStr := ResultStr + '\'+ProgName;



                 Macro := ' [AddItem('+ResultStr+

                          ', "SCL-90-Eingabe", )]';

                 StrPCopy (aResultStr, Macro);

                 if not ExecuteMacro(aResultStr, False) then

                   MessageDlg('Programm konnte nicht in Gruppe eingef=B3g=

t werden...',

                              mtInformation, [mbOK],  0) else

                 begin

                   Panel4.Hide;

                   Panel5.Show;

                 end;

               end;

               CloseLink;

             end; { if DDE_LINK = TRUE }

           end; { with DdeClientConv1 do }

         end; { ok > 0 }

       end { DialogNo = 3 }

    else Close; { => end of program }

  end; { of case }

end; { TForm1.BitBtn1Click }



end.



{ file setupscl.dfm }

object Form1: TForm1

  Left = 200

  Top = 99

  Width = 435

  Height = 300

  Caption = 'Form1'

  Font.Color = clWindowText

  Font.Height = -13

  Font.Name = 'System'

  Font.Style = []

  PixelsPerInch = 96

  TextHeight = 16

end





{ file setupsc1.dfm }

object Form1: TForm1

  Left = -4

  Top = -4

  Width = 648

  Height = 488

  BorderIcons = []

  Caption = 'Form1'

  Color = clBlack

  Font.Color = clBlack

  Font.Height = -43

  Font.Name = 'Arial'

  Font.Style = [fsBold, fsItalic]

  PixelsPerInch = 96

  WindowState = wsMaximized

  OnCreate = FormCreate

  OnPaint = FormPaint

  TextHeight = 49

  object BitBtn1: TBitBtn

    Left = 648

    Top = 512

    Width = 97

    Height = 33

    Caption = 'Weiter...'

    Font.Color = clBlack

    Font.Height = -13

    Font.Name = 'System'

    Font.Style = [fsBold]

    ParentFont = False

    TabOrder = 0

    OnClick = BitBtn1Click

    Kind = bkOK

  end

  object BitBtn2: TBitBtn

    Left = 528

    Top = 512

    Width = 97

    Height = 33

    Font.Color = clBlack

    Font.Height = -13

    Font.Name = 'System'

    Font.Style = [fsBold]

    ParentFont = False

    TabOrder = 1

    OnClick = BitBtn2Click

    Kind = bkCancel

  end

  object Panel1: TPanel

    Left = 128

    Top = 112

    Width = 400

    Height = 217

    TabOrder = 2

    object Label1: TLabel

      Left = 25

      Top = 40

      Width = 147

      Height = 16

      Caption = 'Herzlich Willkommen! '

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = [fsBold]

      ParentFont = False

    end

    object Label3: TLabel

      Left = 25

      Top = 64

      Width = 294

      Height = 16

      Caption = 'Dieses Setup-Programm richtet das SCL-90-R'

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = [fsBold]

      ParentFont = False

    end

    object Label4: TLabel

      Left = 25

      Top = 80

      Width = 266

      Height = 16

      Caption = 'Eingabe- und Auswertungsprogramm auf '

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = [fsBold]

      ParentFont = False

    end

    object Label5: TLabel

      Left = 25

      Top = 96

      Width = 126

      Height = 16

      Caption = 'Ihrer Festplatte ein.'

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = [fsBold]

      ParentFont = False

    end

    object Label2: TLabel

      Left = 25

      Top = 120

      Width = 337

      Height = 16

      Caption = 'Wenn Sie das Programm nicht installieren m=F7chten,'

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = [fsBold]

      ParentFont = False

    end

    object Label6: TLabel

      Left = 25

      Top = 136

      Width = 265

      Height = 16

      Caption = 'k=F7nnen Sie den Vorgang jetzt abbrechen.'

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = [fsBold]

      ParentFont = False

    end

    object Label7: TLabel

      Left = 25

      Top = 160

      Width = 341

      Height = 16

      Caption = 'Um fortzufahren dr=B3cken Sie bitte die Eingabetaste..=

.'

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = [fsBold]

      ParentFont = False

    end

  end

  object Panel3: TPanel

    Left = 120

    Top = 104

    Width = 401

    Height = 225

    Font.Color = clBlack

    Font.Height = -13

    Font.Name = 'System'

    Font.Style = []

    ParentFont = False

    TabOrder = 4

    Visible = False

    object Label14: TLabel

      Left = 16

      Top = 22

      Width = 64

      Height = 16

      Caption = 'Auswerter'

    end

    object Label15: TLabel

      Left = 16

      Top = 70

      Width = 260

      Height = 16

      Caption = 'Bezeichnung der Institution (drei Zeilen)'

    end

    object AuswerterEdit: TEdit

      Left = 16

      Top = 40

      Width = 177

      Height = 24

      TabOrder = 0

      Text = 'AuswerterEdit'

    end

    object Inst1Edit: TEdit

      Left = 16

      Top = 88

      Width = 345

      Height = 24

      TabOrder = 1

      Text = 'Inst1Edit'

    end

    object Inst2Edit: TEdit

      Left = 16

      Top = 120

      Width = 345

      Height = 24

      TabOrder = 2

      Text = 'Inst2Edit'

    end

    object Inst3Edit: TEdit

      Left = 16

      Top = 152

      Width = 345

      Height = 24

      TabOrder = 3

      Text = 'Inst3Edit'

    end

    object CheckBox1: TCheckBox

      Left = 16

      Top = 184

      Width = 161

      Height = 17

      Caption = 'Anzeige mit T-Werten'

      TabOrder = 4

    end

  end

  object Panel2: TPanel

    Left = 128

    Top = 112

    Width = 401

    Height = 185

    TabOrder = 3

    Visible = False

    object Label8: TLabel

      Left = 16

      Top = 16

      Width = 274

      Height = 16

      Caption = 'Bitte geben Sie das Programmverzeichnis'

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = [fsBold]

      ParentFont = False

    end

    object Label9: TLabel

      Left = 16

      Top = 32

      Width = 198

      Height = 16

      Caption = 'und das Datenverzeichnis ein:'

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = [fsBold]

      ParentFont = False

    end

    object Label10: TLabel

      Left = 16

      Top = 68

      Width = 71

      Height = 16

      Caption = 'Programm:'

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = [fsBold]

      ParentFont = False

    end

    object Label11: TLabel

      Left = 16

      Top = 100

      Width = 42

      Height = 16

      Caption = 'Daten:'

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = [fsBold]

      ParentFont = False

    end

    object Label12: TLabel

      Left = 14

      Top = 136

      Width = 341

      Height = 16

      Caption = 'Um fortzufahren dr=B3cken Sie bitte die Eingabetaste...'

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = [fsBold]

      ParentFont = False

    end

    object ProgrammpfadEdit: TEdit

      Left = 104

      Top = 64

      Width = 225

      Height = 24

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = []

      ParentFont = False

      TabOrder = 0

      Text = 'ProgrammpfadEdit'

    end

    object DatenpfadEdit: TEdit

      Left = 104

      Top = 96

      Width = 225

      Height = 24

      Font.Color = clBlack

      Font.Height = -13

      Font.Name = 'System'

      Font.Style = []

      ParentFont = False

      TabOrder = 1

      Text = 'DatenpfadEdit'

    end

  end

  object Panel4: TPanel

    Left = 152

    Top = 160

    Width = 337

    Height = 113

    Font.Color = clBlack

    Font.Height = -13

    Font.Name = 'System'

    Font.Style = []

    ParentFont = False

    TabOrder = 5

    Visible = False

    object Image1: TImage

      Left = 256

      Top = 40

      Width = 33

      Height = 33

      Picture.Data = {

        055449636F6E0000010001002020100000000000E80200001600000028000000

        2000000040000000010004000000000080020000000000000000000000000000

        0000000000000000000080000080000000808000800000008000800080800000

        C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000

        FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF333333FFFFFFFFFFFFFFFFF

        FFFFFFFFFF33FF33FFFFF11FFFFFF1111FFFFFFFFFF3FFFFFFFFFFF115FF11FF

        1155FFFFFFF33FFFFFFFFFFF115511F511F55FFFFFF33FFFFFFFFF11111511F5

        11F55FFFFFF33FFFFFFFF11FF11511F511F55444FFF33FFFFFFFF11F511F1145

        11F55FF4FFFF33FFFFF9911F5119119511F55FF4FFF3333FFFFFF11F51191199

        11F55FF4FFFFFFFFFFFFFF111199511114F55FF4FFFFFFFFFFFF999995996699

        55556666FFF3333FFFF99FF99F99449944F66FF6FF33FFF33FF99FF99F994499

        64F66F56F33FFFFFFFF99FF99F99F69966F66556F33FFFFFFFF99FF99F996699

        66566556F33FFFFFFFFF9999FFF9999566566556F333FFFFFFFFFF22FFFF6655

        66566556FF33FFFF3FFFFFFF22FF665566566556FFF33FFF33FFFFFFF22FF666

        62556666FFFFF333F3FFFFF222CCF255F2CCCC5FFFFFFFFFFFFFFF22FF22CC25

        5CCFFCC5F3F333FFFFFFFF22AA22FCCFACCAFCCFF33FF33FFFFFFF22FFACCCCC

        ACCAACC1FF3FF33FFFFFFF22FFCCA2CCACCAACCFFFFF333FFFFFFFF22ACCAACC

        ACCAACCFFFFF33FFFFFFFFFFAACCAACCACCAACCFFFF33FFFFFFFFFFFAACCAACC

        ACCAACCFFFF33FF3FFFFFFFFAAFCCCCAA1CCCCFFFFF33F33FFFFFFFFAAFFAA1A

        A11AA1FFFFFF333F3FFFFFFFFAAAA11FAAAA11FFFFFFFFFFFFFFFFFFFFFFFF11

        11FFF11100000000000000000000000000000000000000000000000000000000

        0000000000000000000000000000000000000000000000000000000000000000

        0000000000000000000000000000000000000000000000000000000000000000

        0000000000000000000000000000000000000000000000000000000000000000

        00000000}

    end

    object Label13: TLabel

      Left = 24

      Top = 24

      Width = 117

      Height = 16

      Caption = 'Einrichtung l=F5uft...'

    end

    object Label16: TLabel

      Left = 24

      Top = 48

      Width = 166

      Height = 16

      Caption = 'Erstellen von SCL90.INI...'

    end

    object Label17: TLabel

      Left = 24

      Top = 72

      Width = 198

      Height = 16

      Caption = 'Kopieren der Programmdatei...'

    end

  end

  object Panel5: TPanel

    Left = 120

    Top = 80

    Width = 353

    Height = 281

    Font.Color = clBlack

    Font.Height = -13

    Font.Name = 'System'

    Font.Style = []

    ParentFont = False

    TabOrder = 6

    Visible = False

    object Image2: TImage

      Left = 24

      Top = 16

      Width = 33

      Height = 33

      Picture.Data =3D {

        055449636F6E0000010001002020100000000000E80200001600000028000000

        2000000040000000010004000000000080020000000000000000000000000000

        0000000000000000000080000080000000808000800000008000800080800000

        C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000

        FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF333333FFFFFFFFFFFFFFFFF

        FFFFFFFFFF33FF33FFFFF11FFFFFF1111FFFFFFFFFF3FFFFFFFFFFF115FF11FF

        1155FFFFFFF33FFFFFFFFFFF115511F511F55FFFFFF33FFFFFFFFF11111511F5

        11F55FFFFFF33FFFFFFFF11FF11511F511F55444FFF33FFFFFFFF11F511F1145

        11F55FF4FFFF33FFFFF9911F5119119511F55FF4FFF3333FFFFFF11F51191199

        11F55FF4FFFFFFFFFFFFFF111199511114F55FF4FFFFFFFFFFFF999995996699

        55556666FFF3333FFFF99FF99F99449944F66FF6FF33FFF33FF99FF99F994499

        64F66F56F33FFFFFFFF99FF99F99F69966F66556F33FFFFFFFF99FF99F996699

        66566556F33FFFFFFFFF9999FFF9999566566556F333FFFFFFFFFF22FFFF6655

        66566556FF33FFFF3FFFFFFF22FF665566566556FFF33FFF33FFFFFFF22FF666

        62556666FFFFF333F3FFFFF222CCF255F2CCCC5FFFFFFFFFFFFFFF22FF22CC25

        5CCFFCC5F3F333FFFFFFFF22AA22FCCFACCAFCCFF33FF33FFFFFFF22FFACCCCC

        ACCAACC1FF3FF33FFFFFFF22FFCCA2CCACCAACCFFFFF333FFFFFFFF22ACCAACC

        ACCAACCFFFFF33FFFFFFFFFFAACCAACCACCAACCFFFF33FFFFFFFFFFFAACCAACC

        ACCAACCFFFF33FF3FFFFFFFFAAFCCCCAA1CCCCFFFFF33F33FFFFFFFFAAFFAA1A

        A11AA1FFFFFF333F3FFFFFFFFAAAA11FAAAA11FFFFFFFFFFFFFFFFFFFFFFFF11

        11FFF11100000000000000000000000000000000000000000000000000000000

        0000000000000000000000000000000000000000000000000000000000000000

        0000000000000000000000000000000000000000000000000000000000000000

        0000000000000000000000000000000000000000000000000000000000000000

        00000000}

    end

    object Label19: TLabel

      Left = 24

      Top = 64

      Width = 256

      Height = 16

      Caption = 'Die Einrichtung des SCL-Programms ist'

    end

    object Label20: TLabel

      Left = 24

      Top = 80

      Width = 103

      Height = 16

      Caption = 'abgeschlossen.'

    end

    object Label18: TLabel

      Left = 24

      Top = 112

      Width = 294

      Height = 16

      Caption = 'Das SCL-Programm verwendet ein Passwort, '

    end

    object Label21: TLabel

      Left = 24

      Top = 240

      Width = 260

      Height = 16

      Caption = 'Eingabetaste dr=B3cken, um zu beenden...'

    end

    object Label22: TLabel

      Left = 24

      Top = 128

      Width = 254

      Height = 16

      Caption = 'um bestimmte Programmfunktionen zu '

    end

    object Label23: TLabel

      Left = 24

      Top = 144

      Width = 63

      Height = 16

      Caption = 'sch=B3tzen.'

    end

    object Label24: TLabel

      Left = 24

      Top = 160

      Width = 300

      Height = 16

      Caption = 'Dieses Passwort k=F7nnen Sie jederzeit =F5ndern.'

    end

    object Label25: TLabel

      Left = 24

      Top = 176

      Width = 235

      Height = 16

      Caption = 'Das voreingestellte Passwort lautet:'

    end

    object Label26: TLabel

      Left = 144

      Top = 208

      Width = 39

      Height = 22

      Caption = 'SCL'

      Font.Color = clBlack

      Font.Height = -19

      Font.Name = 'Arial'

      Font.Style = [fsBold]

      ParentFont = False

    end

  end

  object DdeClientConv1: TDdeClientConv

    ServiceApplication = 'ProgMan'

    ConnectMode = ddeManual

    Left = 88

    Top = 32

  end

end



{ file scl90.ex_ (UUencoded) }

begin 644 SCL90.EX_

M4UI$1(CP)S-!90`H``#_35H``0$```#_"``0`/__"``)`/3Q]?!``@,.#1T+

M`03P,PU##5,-8`FZ$``._Q^T"&J#"(9T!(PT!)*RA$"M!T0)B!A*B(M`24A1]8V(H\#)2&AW!$"_[;6

M$0)W]!$"?%0BW5;H$0*Y8"+22"(H^A%K`EAR(GUR(IT%`@'_"7-C;#DP+D4#

M6$5@#:(MLBW"+=3D(M(`S_+"!!8W1U86R?;'DL('2!`8(`;O]O=3D"!A(&9U;G]C

M=3D&EO;F%LA`7_+CP@271S(&_W;FQYC`!A64\86YD@C+W=3DV%N0C!O(&UO?V1I9GD@:70P,O\V

M('5S92!W:?MT:((Q6_L`(>5Y!"?J)"OP(`#E=3DJE$B2K$,OLTVM

M0FS)3:-,CB3?3:U"R_]-K4,!%EVD2TDP*UVM0DU+7:-,:6%=3DTJU"

M`/\QP%#_-D8!N/T"/62A'``K!B#_`/C7_A@#<>!FM&(@``=3DQX&8'<9X$=3DD0!Z*01>P=3DS

M(MPE=3DW5B@#YE%&`*@/L^9A1@`^AW_[CU_^AE19]`'H`^9+\``'4#Z;.S8G:]

M"`MR)?Y0Z.%01E4(DG(&/G(1GG`RHG`V_E`(.\A@=3D0G*4=3D1@@W1YNG068Y)S

M)G;#=3D13V3G9V!B9ZH2``*RM&",MC(@N`!M=3DA`W#G,=3D)2'H3C=3D`BC(.;G<:,B

MY&?C4$W*!+D`@W+$8CX!0"%R__\V'`#H7_U0Z,N`_<]C0%>".H$>`)OH1F2`

M9_T^8T6!R_[$4@2A8``!1@3^_U`[!AH`?`:A]QH`*9>"]R88`/\#1@;$/CH!

M`__XB?B,PHE&_#N)5M]0_(M6XE?*5`\ZZ#+]-V'*4,=3DM&H(\J7)Y@(O_4E#_

M4!>`[CYCZ&3]RH5^!#;W_W7\'9#ZZ*;_?AJ0,<`VB47\*Y+_^C'`HQP`_P;S

M'@#08)R!=3D5G_#DT>.Y!@`).`0Y(%-Y#Y8+-C>8`D_XG'CO_"!E?_-A@`L'T@

M%7JA2`'WV!Z-!N-IP@)+@Y"`OV6\@+.2__J#?@8`=3DP/I_YH`Q'X()HH%_SP@

M@(_^O_2#P-=3D095Z/[__NL^/`AU+H/_/AP``'XE_P[TWY'?E%CGDB;&!2#V

M])+\??N3_.L,//,'=3D:5Q7&-&"/]._P;I7?__=3DOS__W;ZZ&/^@#XVZA1@!4"'

M!DN#C7X&HQ97)G9%@J26%)!"C8]^ZA97`7,$=3D)!""?_`=3D!^#?NP2=3D8\#Z)S\

MI:*@IY=3DCQO^#/F(``+``?O\!0(A&_8I&_?2(@J:4`I!'",!U+-_&!F8``6AS

M`^C;E/O\J73R#[6_^]X*L0"@<`'IH/\.;V(`OW$>8+]P'F#G_S9BE$/LK`8Q

MP/>)1OB00HA&^XK[1OL;H!.#?O@`?W8+_T[XL`@^8ZOK+,Z0*-*0),I02/](

M.T;X=3DAJ*5N_[BT;XR)`#^":?B!7_1OAPL#YC@/]^^PUT#8`^-[H48*6VL!IU

MGYR]^':VL747G[;&!0JJL!.P#3YCXW3XO(#"@'>D_I]`Q@9D``&A&/KF@!I#

M93H!B18\S0&R@097%,5SE8`^Y3B+

MZST!+M-`^E%0/0+'`'4+,=3D`,@/I10#WU`TK3`U'3,#T&`/MU!V.Q_NLD/0?[

M`'7V51<]!`!U40PETP%A_5$*W5<(PU.A!`F`^E`4@/^R""S1&O[WP*$^`9FY

M`@![]_D*,#!$G:_4.CN]EH#NX#^B[@A

MJ^@$/656QK[@&G+68\'6X+*G4.BMU>/^`<#^Q'X$)HE%RIB`_"#S!JGMXW/0

MH?]&`;$$T^`#PD36X"#S#.CHW>GSYM""D*?1X-%.\U'V#AWV$)XG]A+HSO8(

M:$#`=3D-\)@'X$`\2@H_>>WZ%`?0^*EX#@H(@_A7`!_P9BH9)AP]ZR^W/WN!&U

MIK``_7WGH?_'1OP!`/?K`__#@'[\T>?_T>>!QV0`'@?^RY`Z1@1U'R:*?T4!

M.D;_=3D18D`"\",.10)``#,0"T8/_H8/WK!H-^_.<,=3DM4/0(!_W4)BD8*4.AWW_[K1CT`+A66_OOK.'31!>C__NLW+CT(2A$)_W+0

M2=3D#?!>@3_^NZT`[_0W8,[0(C$4"#P`!6`<#_^HM6_%]>C6;K_A]'@`JEE0+$

M?O\&)H-]"`!T'Z\F_W4.HQ`,HQ`(#)!"F1`QP"/PKA-CL0'&X$J$EA2D%ZV3

MF1&)10K@MQ/"'?6D^AV2&(%]`O^QUW4:N/__NOO__R/P%":)51:ZMQ(8(_`:

MZR69$<>/10*RUS,K,R9&(%44,B3M$QP](!X1+:>432+9!3<@42"PUU`@!(#_

M`":-A8``C,+45_$](`XS)A`](!(FY\9%,$2*B'-2_S;]4F!@4`"_Y@`>=3DJF@

MNO]98/\V$&!@U1)@8!1@8!8`=3D/\V(9JS8">&R`">8YR40SR*_O.C@>R6`*$V

M`?^+%C@!HZX`B?,6L(9@BG.)`*&T[P`+!K9S<.E]`-^XY@",VGH3C;Y7:/\6

M;I`F8&`DTJ`!^LRD&&%R,Q9Y3,>?!T#`)XU^Z*BHMZ46MS*@I+;0->O3B(8^

MF(MP.M^AF@"C1+-AN`#U?Q,W1O@]HT@`QW\&2@`&`+\Z[2!`IT0>92U':UVC

M1EQDFNHCP[A0/63K(NLBOV.N`&V+3C"C-B/`.`$S(_Y*-%W+B``#`:'_`04`

M6P`#`*:O`?\`$:9`JZI``:JF0+BJ0!>F0,FJ0!:JID#.ND3?PD3DND3U6L)$

M^KI$!`*[0Q7R0*K%01KR1"OZ1##R1$&J^D1&\D10\D1A^D1FJO)$=3D_I$?/)$

MAO)$EZKZ1)SR1*WZ1++R1,.J^D3(\D30\D`2GD`RKP,#`">>0$"24$*^GD!0

M`P(`5YY`5JJB4"V>0&:24+2>0&TJHE`)GD!ZLE2!HE"U0*L!DZI4J))0*)Y`

MMZJ24$2>0-"24*.>0/&JDE"EGD#ZDE"GGD`$KP0#`*2>0"<"8$"JGD`[`F`^

MGD!:"F1OKA)C`(T$BU/T$F0150438SPZ8#V>0%$Z8'U\ID"4!?\`")Y`WQP&

M`@`AID"'!K?_`!J>0*4&0V.NU&I@36&_8F`"GD!E!W<#`&BF0(,'_[Q1*P"=3D

MBF`#ID"QBF!]857(@F!MGD#?@F!QGD"UZ8)@;I@!DYANF`$ID#"ENID`PGK8PCZ8(UA+0&L:<)N>0!H*]EMC`PM38Z`+`@!]79Y`O@L#`+.>0%7*

M0G3>0G3Q0G3]0G2K!PQ#0.0J@*UA[BJ`?K5@`101`P"NGD!5)GJ`K9Y`.7J`.:9`7T,1_P`*

MID!-DH!6K8``4I*`%:9`7)*$U6:2@!FF0&NB@P%][Q$!`#&>0(P1!*X@0`4`

MGY*`$'Q@HOC2@MZ-?&!%58OL'O\+P'1-C`:X`'^)-I@`B3Z:3##_G`")'IX`

MC`:'H``S4J4.,/*R]X`@_O*R,]*HP'4&0O^H`G4!0H@6PGX<0,``__^+Y>8P

M_[C_3,TA65OK_P0SR3/;H[(`_XO!"\-T#(/[__]T!X[#)HL>]H^@#K0*D+8`

M@S[UN%H"1EHV-KD*`/^@L@`RY+O5`/_H30"Y$`"AMK\`N]T`Z$%:,;OOX@#H

M.!*1N\0`?QY34%"X$!")`_J(D+1*D,0>K@",7M#DGCR@A.0B0,+TG4>9:+U&&N@.V^@4(=3D*CH0Y+W@%"CL/\#.P:D`'(?Z'](`'-%@SZD`^#_(*&P`XL>I@!_@^L,

M.\-W$L>@?^L+Z$,`)`_CMPSI@)/QEHA*.P=3D_H6@!S$W6G[NB_

M#@!R"^A%#I"B_P"+PXS"PU"A_Z8`Z+'_`]V7C9RRRCL.+

MV?\F@3X``%10=3D7]3]L,#=3D4Z^E[#__B:+-`OV=3D`;_.]YW\W0\)HG?-R:)1P)M

MHB:C_P@`!0P`.P:F_P!T0^@%`":)]QV+WYFP`W<")NL[-Z40BZ'P!R:+_T0"

M)@%'`OC#??FM`#O#=3D/A3'Y6Y[HRD);0SP(QDD!;^>*#:=3D!2AH@".]\`FH7B@

MPW7V)OV)6,",P*.B`.O_O#/`AP:Z`,OW@SZZWR`!RZ&Z_P#IP/R+]#:._BK`

M.U4"?P=3D\%-\F.P5R#Y/`!GS_"'\')CM%!'?_`WV#8[BK!R#,;`#OZCH#:C#@#+N,K_`.EN_+HSTHO_W!XVQ'\(

M-L7W=3DP3\;+&PUZNX_8!QLJNKC45TJ^V,;;#__P32,\"Y_PX`\ZL&5P97^[E/

MDJ$)K#K(=3DO\$BLCC"*P*P/]T`ZKB^#+`JG[3,A_*"`"+W.7`CPHVBT\!F`.LD4@:_5P[H*`!:6M%5_0)!KC=3D!C/2Z/_L_G4*)H-_&O);`7TGHH\@K#P-=3D/\,

M/!IT$3OS=3D?WSLO##._-T":S_/`IT`4XSP,/WN/(&J?<"`+[D+FDPZ%'_NO1[W`(CB,](SR000_P)"S2$M@`"#[=3DJCH#/`X,#*B]#\!!%7$(V5@`"Y@/4`

M*.-SAN`SVSO8]W0@@'40&G0#0W_K\HO3*]"Y09"P5!-1$5SA%^",VNG`"O;E

MP`8V%/#\._=3DS_P<#\0/Y3D_]G_.D_([:9-`\T@@^M1`&-HI'!"[P.=3D!6O4`!

M)\1@'IY`,,R"?(>`Q&"$``4!4<1@4G6!QR!`S5%QHD"IGD!YGZ)`M8`!*P(%

M)(*Y-AX@C5%,`P6\@E>L+B`-<`%<+B`1Q&`6ZBI@''Q@&D8B`P%$4035<;O`

MVF`=3D?&`'7B)7!0`?VF`??&`B;B)7!0`UVF`>?&`X?B)7!0!2VF`@?&!7CB)`

MFBVJ+;HMRBW:+>0F!>0IQ8``,U"T@.0E6T$H2?]N86-T:79E(`Q@ZX0&3?HF'4$`@#@!,?\D'D#`P,`D0"%!@%Q!$3-!0DM!&)%%

M05A,\]


BDE installation problems with InstallShield

Question


I have a customer that installed our application that includes the BDE.

Quattro Pro now comes up with an error message "Cannot load language

driver".  Has anyone else experienced anything like this?

Answer


This problem is common with multiple BDE applications. What probably

happened is that the used installed your application and specified a new

directory for IDAPI. This would have update you WIN.INI in two(2) sections

[IDAPI] and [Borland Language Drivers]. You should have an entry in you

WIN.INI such as the following.



[Borland Language Drivers]

LDPath=C:\IDAPI\LANGDRV



Now load BDE Configuration Utility, click on Paradox and look at the

language driver. This is the driver that QPW is trying to load from the

path mentioned above. See if the driver exists in that directory.


Overriding default InstallShield target directory

Question


When using InstallShield Express, the installer always uses "C:\Program

Files" as the default directory, regardless of whether or not you want

it.

Answer


The default value of the Express Directory Specifier  is

[WindowsDrive]:\Program Files\[CompanyName]\[AppName].  You can

overwrite this default.  (This means that any Program Group assigned a

Destination Directory of , along with the uninstall-related

files that Express includes with your setup, will be installed to this

default directory.)



Go to the Express Dialog Boxes dialog, highlight Choose Destination

Location, and click the Settings tab.  In the textbox, enter your

default installation directory. Please do not hardcode this entire

entry, but instead use Directory Specifiers.



For example, the entry "\Test" would cause your setup to create

a root directory named "Test," and this directory would be placed in the

drive on which your end user's Windows directory is installed (most

likely C:). This setting will apply even if you don't include the Choose

Destination Location dialog in your setup.



Note: Do not use the  specifier to indicate the default

destination directory in the Choose Destination Location dialog.



(For more information on Express Directory Specifiers, please refer to

the "Express Directory Specifiers" topic in Express Help.)




Close    To Top
  • Prev Article-Programming:
  • Next Article-Programming:
  • Now: Tutorial for Web and Software Design > Programming > delphi > Programming Content
    Photoshop Tutorial
     

    Special Effect

      3D Effect
      Photoshop Articles
    Programming Tutorial
     

    C/C++ Tutorial

      Visual Basic
      C# Tutorial
    Database Tutorial
     

    MySQL Tutorial

      MS SQL Tutorial
      Oracle Tutorial
    Geek Tutorial
     

    Blogging Tutorial

      RSS Tutorial
      Podcasting Tutorial
    Graphic Design Tutorial
      Coreldraw Tutorial
      Illustrator Tutorial
      3D Tutorials
    Webmaster Articles
     

    Domain Service

      Web Hosting
      Site Promotion
    Java Tutorial/ Articles
     

    Java Servlets

      JavaEE Tutorial
     

    JavaBeans Tutorial

    XML Tutorial/ Articles
     

    XML Style

      AJAX Tutorial
      XML Mobile
    Flash Tutorial/ Articles
     

    Flash Video

      Action Script
      Flash Articles
    OS Tutorial/ Articles
      Linux Tutorial
      Symbian Tutorial
      MacOS Tutorial
    Personal Tech
      Hardware Tutorial
      Software Tutorial
      Online Auction