Subversion Repositories factorylink.xychart

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

; -- xychart.iss --
; Copyright (C) 2003 RLD Automation
; FL7.2, Windows 2000

#pragma option -v+
#pragma verboselevel 9
#define Debug

;FactoryLink version
#define FlVer "Fl71"
;FactoryLink and/or OS version and SP required
#define SysVer "FL7.1 Windows 2000 (with SP2 or higher)"

;Application definitions
#define AppName "FactoryLink XY-chart Task"
#define AppId "XYCHART"
#define AppShort "XYchart"
#define BaseDir  "..\..\..\Flink"
#define AppVersion GetFileVersion(BaseDir+"\Bin\"+FlVer+"\"+AppShort+".exe")

;Entry for ctlist file
#define CtList "xychart xymbx ncahrt xydisp xydef xyclr"

;Key files to add
#define Key1 "xycolor"
#define Key2 "xyintp"
#define Key3 "xymarker"
#define Key4 "xymode"
#define Key5 "xysave"
#define Key6 "xystyle"
#define Key7 "xyyesno"

;Message files to add
#define Msg1 "xycht_ac"
#define Msg2 ""
#define Msg3 ""

[Setup]
AppName={#AppName}
AppVerName={#AppName} {#AppVersion}, for {#SysVer}
AppCopyright=Copyright © 2003 Tecnomatix.

OutputBaseFilename={#AppShort}Install
OutputDir=..\..\Setup\{#FlVer}

WizardImageFile=..\USDATAModern.bmp
WizardSmallImageFile=..\SetupModernSmall25.bmp

Uninstallable=false
UninstallDisplayIcon={app}\{#AppShort}.exe
UninstallDisplayName={#AppName}
UninstallFilesDir={app}
AppPublisher=Tecnomatix Nederland
AppVersion={#AppVersion}
AppPublisherURL=http://www.usdata.com
AppSupportURL=http://support.usdata.com
AppUpdatesURL=http://support.usdata.com

LicenseFile=..\license.txt
InfoBeforeFile=..\infobefore.txt

PrivilegesRequired=admin
;RestartComputer=no
DisableStartupPrompt=yes
DisableProgramGroupPage=yes
DiskSpanning=0
DefaultDirName={code:GetPrgDir|{pf}\(#AppShort}}
;DefaultGroupName=Wizard Information Systems
DirExistsWarning=no
MinVersion=4,4
UsePreviousAppDir=yes
WizardStyle=modern
UninstallStyle=modern
WindowVisible=false
BackColor=clSilver
BackColor2=clBlack
BackColorDirection=toptobottom
;WizardDebug=no

[Types]
Name: full; Description: Full installation
;Name: "compact"; Description: "Compact installation"
Name: custom; Description: Custom installation; Flags: iscustom

[Components]
Name: main; Description: {#AppName}; Types: full custom; Flags: fixed
Name: manual; Description: {#AppShort} Task Manual; Types: full
Name: debug; Description: {#AppShort} Task Debug Support-files; Types: full

[Files]
;FactoryLink files
Source: {#BaseDir}\Ac\{#AppShort}.ac; DestDir: {app}\ac; Components: main
Source: {#BaseDir}\Bin\{#FlVer}\{#AppShort}.exe; DestDir: {app}\bin; Flags: ignoreversion; Components: main
;Source: {#BaseDir}\Bin\{#FlVer}\{#AppShort}.map; DestDir: {app}\bin; Flags: ignoreversion; Components: debug
Source: {#BaseDir}\Bin\RLDTitle.exe; DestDir: {app}\bin; Flags: uninsneveruninstall; Components: main
Source: {#BaseDir}\Ctgen\{#AppShort}.ctg; DestDir: {app}\ctgen; Components: main
Source: {#BaseDir}\Ctgen\{#AppShort}.rtm; DestDir: {app}\ctgen; Components: main
Source: {#BaseDir}\Help\en\{#AppShort}.hlp; DestDir: {app}\help\de; Components: main
Source: {#BaseDir}\Help\en\{#AppShort}.hlp; DestDir: {app}\help\en; Components: main
Source: {#BaseDir}\Help\en\{#AppShort}.hlp; DestDir: {app}\help\fr; Components: main
#if (len(Key1) > 0)
Source: {#BaseDir}\Key\En\{#Key1}.key; DestDir: {app}\key\de; Components: main
Source: {#BaseDir}\Key\En\{#Key1}.key; DestDir: {app}\key\en; Components: main
Source: {#BaseDir}\Key\En\{#Key1}.key; DestDir: {app}\key\fr; Components: main
#endif
#if (len(Key2) > 0)
Source: {#BaseDir}\Key\En\{#Key2}.key; DestDir: {app}\key\de; Components: main
Source: {#BaseDir}\Key\En\{#Key2}.key; DestDir: {app}\key\en; Components: main
Source: {#BaseDir}\Key\En\{#Key2}.key; DestDir: {app}\key\fr; Components: main
#endif
#if (len(Key3) > 0)
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\de; Components: main
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\en; Components: main
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\fr; Components: main
#endif
#if (len(Key3) > 0)
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\de; Components: main
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\en; Components: main
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\fr; Components: main
#endif
#if (len(Key4) > 0)
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\de; Components: main
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\en; Components: main
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\fr; Components: main
#endif
#if (len(Key5) > 0)
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\de; Components: main
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\en; Components: main
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\fr; Components: main
#endif
#if (len(Key6) > 0)
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\de; Components: main
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\en; Components: main
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\fr; Components: main
#endif
#if (len(Key7) > 0)
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\de; Components: main
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\en; Components: main
Source: {#BaseDir}\Key\En\{#Key3}.key; DestDir: {app}\key\fr; Components: main
#endif
;Source: {#BaseDir}\Mps\660\master.mps; DestDir: {app}\mps\{#AppShort}.mps; Components: main
Source: {#BaseDir}\Msg\En\{#AppShort}.txt; DestDir: {app}\msg\de; Components: main
Source: {#BaseDir}\Msg\En\{#AppShort}.txt; DestDir: {app}\msg\en; Components: main
Source: {#BaseDir}\Msg\En\{#AppShort}.txt; DestDir: {app}\msg\fr; Components: main
#if (len(Msg1) > 0)
Source: {#BaseDir}\Msg\En\{#Msg1}.txt; DestDir: {app}\msg\de; Components: main
Source: {#BaseDir}\Msg\En\{#Msg1}.txt; DestDir: {app}\msg\en; Components: main
Source: {#BaseDir}\Msg\En\{#Msg1}.txt; DestDir: {app}\msg\fr; Components: main
#endif
#if (len(Msg2) > 0)
Source: {#BaseDir}\Msg\En\{#Msg2}.txt; DestDir: {app}\msg\de; Components: main
Source: {#BaseDir}\Msg\En\{#Msg2}.txt; DestDir: {app}\msg\en; Components: main
Source: {#BaseDir}\Msg\En\{#Msg2}.txt; DestDir: {app}\msg\fr; Components: main
#endif
#if (len(Msg3) > 0)
Source: {#BaseDir}\Msg\En\{#Msg3}.txt; DestDir: {app}\msg\de; Components: main
Source: {#BaseDir}\Msg\En\{#Msg3}.txt; DestDir: {app}\msg\en; Components: main
Source: {#BaseDir}\Msg\En\{#Msg3}.txt; DestDir: {app}\msg\fr; Components: main
#endif

;Debug viewer
Source: ..\..\..\..\DebugView\*; DestDir: {app}\bin; Flags: ignoreversion; Components: debug

;Protection
Source: {#BaseDir}\bin\inst_seq.exe; DestDir: {app}; Flags: deleteafterinstall; Components: main
Source: {#BaseDir}\opt\delta.opt; DestDir: {app}\opt; Flags: onlyifdoesntexist; Components: main
Source: {src}\delta.opt; DestDir: {app}; Flags: deleteafterinstall external skipifsourcedoesntexist; Components: main

;Documentation
Source: {src}\{#AppShort}.pdf; DestDir: {app}\..\pdf; Flags: external skipifsourcedoesntexist; Components: manual

[Registry]

[Run]
Filename: {app}\bin\acctmgr.exe; Parameters: -c -d -v; Check: AddTitle('{#AppShort},{#CtList}'); Flags: runminimized; StatusMsg: Updating FactoryLink account manager index...; Components: main
Filename: {app}\inst_seq.exe; Parameters: -M{#AppId} -S{app}\delta.opt; Flags: runminimized; StatusMsg: Updating Wizard protection...; Components: main
Filename: {app}\bin\mkhelp.exe; Flags: runminimized; StatusMsg: Updating FactoryLik help file index...; Components: main

[UninstallRun]
Filename: {app}\bin\RLDTitle.exe; Parameters: " /REMOVE={#AppId}"; Flags: runminimized; StatusMsg: Updating FactoryLink account manager index...; Components: main
Filename: {app}\bin\acctmgr.exe; Parameters: -c -d -v; Check: RemoveTitle('{#AppShort}'); Flags: runminimized; StatusMsg: Updating FactoryLink account manager index...; Components: main

[InstallDelete]
;Type: files; Name: "{app}\FlInstall.exe"

[Messages]
RunEntryShellExec=Yes, I would like to view the README file
BeveledLabel=Tecnomatix

#ifdef Debug
  #expr SaveToFile(AddBackslash(SourcePath) + "Preprocessed.iss")
#endif

[Code]
function InitializeSetup(): Boolean;
begin

  Result := True;
end;

{Read the FactoryLink directory from the autostart service program location,
 using the environment variable FLINK will result in a directory with
 short names. By using the autostart server the long names are found, and
 the setup progam will use these names instead of the notation in short}
function GetPrgDir(S: String): String;
var
  MyDir: String;
begin

  {read the autostart service directory, filename and extension}
  RegQueryStringValue( HKEY_LOCAL_MACHINE, 'System\CurrentControlSet\Control\Session Manager\Environment', 'FLINK', MyDir);

  {return default in case no directory is found}
  if (Length( MyDir) <= 0) then begin
    MyDir := S;
  end;

  {return the directory to install the program}
  Result := MyDir;
end;

{Add a AC line for the current task to the titles file, add a line
 to the CTlist file. The taskname and ct-line are specified in the
 function-parameter: taskname,ct-line}
function AddTitle( MyEntry: String): Boolean;
var
  MyText: TArrayOfString;
  MyFile: String;
  MyAC: String;
  MyCT: String;
  k: Integer;
  bText: Boolean;
  found: Integer;
begin

  {first file to load is th etitles file in the AC directory}
  MyFile := GetPrgDir( '') + '\ac\titles';
  bText := LoadStringsFromFile( MyFile, MyText);

  {AC entry looks like: taskname.ac}
  k := Pos( ',', MyEntry);
  if k = 0 then k := Pos( ':', MyEntry);
  MyAC := Copy( MyEntry, 0, k-1) + '.ac';
  MyCT := MyEntry;
  StrSet( ':', k, MyCt);

  {search for ac entry}
  found := 0;
  k := 0;
  while (k < GetArrayLength(MyText)) and (found = 0) do begin

    found := Pos( MyAC, MyText[ k]);
    k := k + 1;
  end;

  {if the entry is not found, add a line to the titles file}
  if (found = 0) then begin

    SetArrayLength(MyText, GetArrayLength(MyText)+1);
    MyText[ GetArrayLength(MyText)-1] := MyAC;
    SaveStringsToFile( MyFile, MyText, false);
  end;

  {add entry to ctlist file}
  MyFile := GetPrgDir( '') + '\ctgen\ctlist';
  bText := LoadStringsFromFile( MyFile, MyText);

  {search for ctgen entry}
  found := 0;
  k := 0;
  while (k < GetArrayLength(MyText)) and (found = 0) do begin

    found := Pos( MyCT, MyText[ k]);
    k := k + 1;
  end;

  {if the entry is not found, add a line to the ctlist file}
  if (found = 0) then begin

    SetArrayLength(MyText, GetArrayLength(MyText)+1);
    MyText[ GetArrayLength(MyText)-1] := MyCT;
    SaveStringsToFile( MyFile, MyText, false);
  end;

  {return always true, ac file must be installed, this function
   only adds a line to the titles file}
  Result := True;
end;

{Remove a AC line for the current task in the titles file, and remove
 a line in the CTlist file the entry is specified with the task name
 in the function-parameter}
function RemoveTitle( MyEntry: String): Boolean;
var
  MyText: TArrayOfString;
  MyFile: String;
  MyAC: String;
  MyCT: String;
  Temp: String;
  k: Integer;
  found: Integer;
  bText: Boolean;
begin

  MyAC := MyEntry + '.ac';
  MyCT := MyEntry + ':';

  {search the task name in the ctlist file}
  MyFile := GetPrgDir( '') + '\ctgen\ctlist';
  SetArrayLength( MyText, 0);
  bText := LoadStringsFromFile( MyFile, MyText);

  {search for the task name}
  for k:=0 to GetArrayLength(MyText)-1 do begin

    Temp := MyText[ k];
    if (found = 0) then
      found := Pos( MyCT, MyText[ k]);

    {if the entry is found, remove the line from the titles file}
    if (found <> 0) then begin

      if ((k+1) < GetArrayLength(MyText)) then begin

        MyText[ k] := MyText[ k+1];
      end else {begin;}
        MyText[ k] := '';
    end;
  end;

  if (found <> 0) then begin

    {shorten array with one}
    SetArrayLength( MyText, GetArrayLength( MyText) - 1);
    SaveStringsToFile( MyFile, MyText, false);
  end;

  {search the task name in the titles file}
  MyFile := GetPrgDir( '') + '\ac\titles';
  bText := LoadStringsFromFile( MyFile, MyText);
  found := 0;

  {search for the task name}
  for k:=0 to GetArrayLength(MyText)-1 do begin

    Temp := MyText[ k];
    if (found = 0) then
      found := Pos( MyAC, MyText[ k]);

    {if the entry is found, remove the line from the titles file}
    if (found <> 0) then begin

      if ((k+1) < GetArrayLength(MyText)) then begin

        MyText[ k] := MyText[ k+1];
      end else {begin;}
        MyText[ k] := '';
    end;
  end;

  if (found <> 0) then begin

    {shorten array with one}
    SetArrayLength( MyText, GetArrayLength( MyText) - 1);
    SaveStringsToFile( MyFile, MyText, false);
  end;

  {return always true, ac file must be removed}
  Result := True;
end;