home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 11 / 11.iso / m / m423 / 1.ddi / UPDATE.MS_ / UPDATE.bin
Encoding:
Text File  |  1993-07-29  |  40.6 KB  |  1,090 lines

  1. '' $Keywords: update.mst 1.10 29Jul93 09:47am$ $nokeywords$
  2. '**************************************************************************
  3. '*                       CorelDRAW! 4 Update script
  4. '**************************************************************************
  5. ''    Date         Name                Reason
  6. ''-------------------------------------------------------------------------
  7. '' JUL 14    1993    Ibrahim Sallam                Create
  8.  
  9. '$INCLUDE 'setupapi.inc'
  10.  
  11. ''C functions
  12. DECLARE SUB                InitializeInstall LIB "mscuistf.dll" (hInstance%, hMainWind% )
  13. DECLARE SUB                ShutDownInstall LIB "mscuistf.dll"
  14. DECLARE SUB                FileChangeString LIB "mscuistf.dll" (szFile1$, szFile2$, szString1$, szString2$)
  15. DECLARE SUB                FRecalcOptFiles LIB "mscuistf.dll" (iType%, szNeeds$)
  16. DECLARE FUNCTION    FIsDrawExist LIB "mscuistf.dll" (szFileName$, szDest$) AS INTEGER
  17. DECLARE FUNCTION    IsSectionKeyExist LIB "mscuistf.dll" (szSectionName$, szKeyName$) AS INTEGER
  18. DECLARE SUB             FAddFileToCopyList LIB "mscuistf.dll" (AppendSect$, Section$, FilterName$, SourceDir$, FiltersDir$) 
  19. DECLARE SUB                CommentIniSection LIB "mscuistf.dll" (szFileName$, szTempFile$, szSection$, szPath$ )
  20. DECLARE FUNCTION    GetFilenameFromPath LIB "mscuistf.dll" (szPath$) AS INTEGER
  21. DECLARE FUNCTION     FGetBootDrive LIB "mscuistf.dll" AS INTEGER
  22.  
  23. '$INCLUDE 'setupvar.inc'
  24.  
  25. ''Strings for loading string resources
  26. GLOBAL szString$
  27. CONST     STRINGLEN =    128
  28. szString$ = string$( STRINGLEN+1, 32 )
  29.  
  30. ''setup main window
  31. CONST LOGO                            = 9100            ''must match the constant in dialogs.h
  32. ''CONST LOGO3                            = 9115            ''must match the constant in dialogs.h
  33. SetTitle "CorelDRAW! 4 Update"
  34. ''SetBitmap "mscuistf.dll", LOGO3
  35. SetBitmap "mscuistf.dll", LOGO
  36. InitializeInstall hinstFrame(), HwndFrame()        ''corel style buttons; max window
  37.  
  38. '$INCLUDE 'msdetect.inc'
  39.  
  40. '''$DEFINE DEBUG  ''Define for script development/debugging
  41.  
  42. ''Dialog ID's
  43. ''Note: These constants MUST match the constants in dialogs.h
  44. CONST UPGRDASKUPDATE        =  9850
  45. CONST UPGRDASKUPDATEHELP    =  9851
  46. CONST UPGRDERRORCHECKAPP    =  9852
  47. CONST UPGRDCHECKPATHHELP    =  9853
  48. CONST UPGRDDRAWPATH         =  9854
  49. CONST UPGRDDRAWPATHHELP     =  9855
  50. CONST UPGRDNETWELCOME             =  9856
  51. CONST UPGRDNETABOUT               =  9857
  52. CONST UPGRDSUCCESS          =  9858
  53. CONST UPGRDWAIT                            =    9859
  54. CONST UPGRDTOOBIG                        =    9860
  55. CONST UPGRDWRONGDIR                    =    9861
  56. CONST UPGRDWELCOME                    =    9862
  57. CONST UPGRDWELCOMEHELP            =    9863
  58. CONST UPGRDASKQUIT                    =    9864
  59. CONST UPGRDEXITSUCCESS            =    9865
  60. CONST UPGRDNETEXITSUCCESS        =    9866
  61. CONST UPGRDEXITQUIT                    =    9867
  62. CONST UPGRDERROREXITFAILURE    =    9868
  63. CONST UPGRDABOUT                        =    9869
  64. CONST UPGRDWAITCONFIGER            =    9870
  65. CONST UPGRDERRORWINREADONLY    =    9871
  66. CONST UPGRDERRORBADPATH            =    9872
  67. CONST UPGRDNETSETUPPATH     = 9873
  68. CONST UPGRDERRORNOSETUPDIR    = 9874                                                        
  69.  
  70. ''Constants representing each line in the custinst dialog
  71. CONST DRAW          = 1
  72. CONST CHART         = 2
  73. CONST SHOW            = 3
  74. CONST PHOTO            = 4
  75. CONST MOVE            = 5
  76. CONST TRACE            = 6
  77. CONST MOSAIC        = 7
  78. CONST NUMCUST      = MOSAIC
  79. CONST MAIN            = NUMCUST + 1
  80. CONST NUMGROUPS    = MAIN
  81.  
  82. CONST FALSE    = 0
  83. CONST TRUE    = 1
  84.  
  85. '''$UNDEF INSTALLCD        ''When this is set, Draw will install off cd-rom
  86.  
  87. GLOBAL bUpdate(MAIN) AS INTEGER
  88. GLOBAL bUpdateHelp(MOSAIC) AS INTEGER
  89.  
  90. GLOBAL DrivesList$            ''experemental variable for the drives list
  91. DrivesList$ = "DrivesList"
  92. GLOBAL TempList$                '' Used for Temp lists
  93. TempList$ = "TempList"
  94. GLOBAL aszNEEDS$
  95. aszNEEDS$        = "UpdateNeeds" 
  96.  
  97. GLOBAL bTooBig%
  98. bTooBig% = FALSE
  99. GLOBAL bBadPath%
  100. bBadPath% = FALSE
  101. GLOBAL bBack%
  102. bBack% = FALSE
  103.  
  104. GLOBAL bUpdateNet%            '' Are we installing a network version?
  105. GLOBAL DIR(NUMGROUPS) AS STRING        ''list of directories for main options
  106.  
  107. GLOBAL WINDIR$            ''Windows directory.
  108. GLOBAL WINSYSDIR$        ''Windows directory.
  109. GLOBAL WINDRIVE$        ''Windows drive letter.
  110. GLOBAL bWindowsIsNetworked%
  111. GLOBAL DEST$            ''destination directory.
  112. GLOBAL NetSetupDir$    '' SetupDirectory for network administrator
  113. GLOBAL ConfigDir$        '' ConfigDirectory for the normal Install
  114. GLOBAL ProgramsDir$
  115. GLOBAL DataDir$        
  116. GLOBAL CustomDir$    
  117. GLOBAL FiltersDir$
  118. GLOBAL szSymbolDir$
  119.  
  120. GLOBAL szWWinDir$        ''Writable Windows directory
  121.  
  122. ''Windows version numbers
  123. GLOBAL WinMinor%
  124.  
  125. ''Variables to fake subroutines with parameters
  126. GLOBAL Dialog%
  127. GLOBAL szTempVar$
  128.  
  129. ''Globals for WaitOn and WaitOff
  130. GLOBAL nWaiting%
  131. GLOBAL CursorSave%
  132.  
  133. GLOBAL SrcDir$                '' Directory where files can be found
  134. SrcDir$ = GetSymbolValue("STF_SRCDIR")
  135. GLOBAL InfFile$
  136.  
  137. ''local MSTest functions
  138. DECLARE SUB WaitOnBig
  139. DECLARE SUB WaitOn
  140. DECLARE SUB WaitOff
  141. DECLARE SUB SetDirectories
  142. DECLARE SUB SetNetDirectories
  143. DECLARE SUB CheckInstalledApps
  144. DECLARE SUB AddFilesToCopyList( ftype% )
  145. DECLARE SUB CalculateRequiredSpace
  146. DECLARE SUB    WrapFileChangeString( szFile1$, szFile2$, szString1$, szString2$ )
  147. DECLARE SUB    WrapCommentIniSection( szFileName$, szTempFile$, szSection$, szPath$ )
  148. DECLARE    SUB    CheckBackupFile( szFile1$, szFile2$ )
  149. DECLARE FUNCTION MakePath( szDir$, szFile$ ) AS STRING
  150. DECLARE FUNCTION MakeDir( szDir$ ) AS STRING
  151. DECLARE SUB AddRedistSection( szSection$ )
  152. DECLARE FUNCTION CheckFileInPrograms( FileName$ ) AS INTEGER
  153. DECLARE SUB CheckInstalledFilters( szSection$ ) 
  154.  
  155. INIT:
  156.     '' set waiting cursor
  157.     nWaiting% = 0
  158.     WaitOn
  159.  
  160.     ''Set default directory names
  161.     WINDIR$ = GetWindowsDir
  162.     WINSYSDIR$ = GetWindowsSysDir
  163.     WINDRIVE$ = MID$(WINDIR$, 1, 1)
  164. ''    '$IFDEF INSTALLCD
  165. ''        InfFile$ = "DRAW.INF"
  166. ''    '$ELSE    
  167.         InfFile$ = "UPDATE.INF"
  168. ''    '$ENDIF
  169.     
  170.     OpenLogfile MakePath(WINDIR$, "UPDATE.LOG"), 0
  171.     
  172.      '' Determine whether or not we are installing as a network administrator.
  173.     '' If we are, modify the copy of the .inf file to force files to be copied
  174.     '' as readonly.
  175.     bUpdateNet% = FALSE
  176.     IF GetSymbolValue("STF_MODE") = "ADMIN" THEN
  177.         bUpdateNet% = TRUE
  178.         '' set the .inf readonly flag to true
  179.         szDir$ = GetSymbolValue("STF_CWDDIR")
  180.         WrapFileChangeString MakePath(szDir$,InfFile$), MakePath(szDir$,"___temp_"), """STF_READONLY""   = """"", """STF_READONLY""   = ""YES"""
  181.         szDir$ = ""
  182.     ENDIF
  183.  
  184.     IF bUpdateNet% THEN
  185.         szWWinDir$ = WINSYSDIR$
  186.     ELSE
  187.         IF bWindowsIsNetworked% THEN
  188.             szWWinDir$ = WINDIR$
  189.         ELSE
  190.             szWWinDir$ = WINSYSDIR$
  191.         ENDIF
  192.     ENDIF
  193.  
  194.  
  195.     bWindowsIsNetworked% = IsDriveNetwork( MID$(WINSYSDIR$,1,1) )
  196.     DEST$ = WINDRIVE$ + ":\"+TR_CORELDRW
  197. ''    DIR(MAIN) = DEST$
  198. ''    SetDirectories
  199.     
  200. '' Some Info to the Log File
  201.  
  202.     WriteToLogFile "Updating CorelDRAW! 4"
  203.     IF bUpdateNet% THEN
  204.         WriteToLogFile "Network Administrator"
  205.     ENDIF
  206.     IF bWindowsIsNetworked% THEN
  207.         WriteToLogFile TR_NETWINDOWS
  208.     ENDIF
  209.     
  210.      '' Quit if installing a network version and windows is readonly on net
  211.     IF bWindowsIsNetworked% AND bUpdateNet% AND IsDirWritable(WINSYSDIR$) = 0 THEN
  212.         Dialog% = UPGRDERRORWINREADONLY
  213.         GOSUB INFO
  214.         ERR = STFERR
  215.         GOTO QUIT
  216.     ENDIF
  217.  
  218.     ''find and read .inf file
  219.     ReadInfFile GetSymbolValue("STF_CWDDIR") + InfFile$
  220.  
  221.     ''Get Drives List
  222.     GetValidDrivesList(DrivesList$)
  223.         
  224.     WinMinor% = GetWindowsMinorVersion
  225.     
  226. '' Put up the Welcome dialog
  227. WELCOME:
  228.     WaitOff
  229.     IF bUpdateNet% THEN
  230.         Dialog% = UPGRDNETWELCOME
  231.     ELSE
  232.         Dialog% = UPGRDWELCOME
  233.     ENDIF
  234.     sz$ = UIStartDlg( "mscuistf.dll", Dialog%, "FInfoDlgProc", UPGRDWELCOMEHELP, "FHelpDlgProc" )
  235.     SELECT CASE sz$
  236.     CASE "CONTINUE"
  237.         UIPop 1
  238.     CASE "ABOUT"
  239.         IF bUpdateNet% THEN
  240.             Dialog% = UPGRDNETABOUT
  241.         ELSE
  242.             Dialog% = UPGRDABOUT
  243.         ENDIF
  244.         GOSUB INFO
  245.         GOTO WELCOME
  246.     CASE "REACTIVATE"
  247.         GOTO WELCOME
  248.     CASE ELSE
  249.         GOSUB ASKQUIT
  250.         GOTO WELCOME
  251.     END SELECT
  252.  
  253. GETDIR:
  254.     IF bUpdateNet% THEN
  255.         GOSUB GetNetSetupDir
  256.     ELSE            
  257.         GOSUB GetAppsMainDir
  258.     ENDIF
  259.     '' The following directories shouldn't be empty.................
  260.     IF ProgramsDir$ = "" OR CustomDir$ = "" OR FiltersDir$ = "" OR DataDir$ = "" OR DIR(DRAW) = "" OR DIR(PHOTO) = "" OR DIR(MAIN) = "" THEN
  261.         bBack% = TRUE
  262.     ELSEIF IsDirWritable(ProgramsDir$) = 0 OR IsDirWritable(CustomDir$) = 0 OR IsDirWritable(FiltersDir$) = 0    OR IsDirWritable(DataDir$) = 0     THEN
  263.         bBack% = TRUE '' If these directories is not writable, we still can't update.....
  264.     ENDIF
  265.     IF bBack% THEN
  266.         IF bUpdateNet% THEN
  267.             Dialog% = UPGRDERRORNOSETUPDIR
  268.         ELSE
  269.             Dialog% = UPGRDERRORCHECKAPP
  270.         ENDIF            
  271.         GOSUB INFO
  272.         GOTO GETDIR
  273.     ENDIF
  274.     CheckInstalledApps
  275.  
  276.     IF bUpdate(MAIN) = FALSE THEN ''No Apps Installed.... so no update
  277.         Dialog% = UPGRDERRORCHECKAPP
  278.         GOSUB INFO
  279.         GOTO GETDIR
  280.     ENDIF
  281.  
  282. '' Do the Update using bUpdate(DRAW).. bUpdate(MOSAIC), to
  283. '' indicate which files should be updated
  284.  
  285.     sz$ = UIStartDlg("mscuistf.dll", UPGRDWAIT, "FModelessDlgProc", 0, "")
  286.     FOR i% = DRAW TO MAIN
  287.         IF bUpdate(i%) THEN
  288.             WriteToLogFile "Add Files of: "+STR$(i)
  289.             AddFilesToCopyList i%
  290.         ENDIF
  291.     NEXT i%
  292.     UIPop 1
  293.     GOSUB ASKUPDATE
  294.  
  295. INSTALL:
  296.     WriteToLogFile "INSTALL:"
  297.     WaitOn
  298.     ''Make sure there is enough space for Updating CorelDRAW!
  299.     WaitOnBig
  300.     CalculateRequiredSpace
  301.     IF bTooBig% THEN
  302.  
  303.         Dialog% = UPGRDTOOBIG
  304.         GOSUB INFO
  305.         GOSUB ASKQUIT
  306.     ENDIF
  307.     
  308.     ''Copy all the files over
  309.     WaitOff
  310.         WriteToLogFile "START CopyFilesInCopyList"
  311.         CopyFilesInCopyList
  312.         WriteToLogFile "END CopyFilesInCopyList"
  313.     WaitOn
  314.  
  315.     IF bUpdateNet% = FALSE THEN
  316.         
  317.         sz$ = UIStartDlg("mscuistf.dll", UPGRDWAITCONFIGER, "FModelessDlgProc", 0, "")
  318.         
  319.         '' Updating the INI files in the Config directory    only if an APP installed.
  320.          IF bUpdate(MAIN) THEN
  321.  
  322.             '' backup files to *.cor - do not overwrite
  323. ''            CheckBackupFile MakePath(WINDIR$,"win.ini"), MakePath(WINDIR$,"win.cor")
  324.             CheckBackupFile MakePath(WINDIR$,"reg.dat"), MakePath(WINDIR$,"reg.cor")
  325. ''            CheckBackupFile MakePath(WINDIR$,"progman.ini"), MakePath(WINDIR$,"progman.cor")
  326.         
  327. ''            CreateIniKeyValue TR_WIN_INI, "CorelGraphics4", "Dir", ConfigDir$, cmoOverWrite
  328. ''            RUN( TR_REGLOAD_S + " " + MakePath(WINSYSDIR$, "OLE2.REG") )
  329.             Oldini$ = MakePath( ConfigDir$, "corelapp.bak")
  330.             ini$ = MakePath( ConfigDir$, TR_CORELAPP_INI)
  331.                 szString$ = GetIniKeyString(Oldini$, "Config", "ProgramsDir")
  332.                 CreateIniKeyValue ini$, "Config", "ProgramsDir", szString$, cmoOverWrite
  333.                 szString$ = GetIniKeyString(Oldini$, "Config", "DataDir")
  334.                 CreateIniKeyValue ini$, "Config", "DataDir", szString$, cmoOverWrite
  335.                 szString$ = GetIniKeyString(Oldini$, "Config", "CustomDir")
  336.                 CreateIniKeyValue ini$, "Config", "CustomDir", szString$, cmoOverWrite
  337.                 szString$ = GetIniKeyString(Oldini$, "Config", "DrawDir")
  338.                 CreateIniKeyValue ini$, "Config", "DrawDir", szString$, cmoOverWrite
  339.                 szString$ = GetIniKeyString(Oldini$, "Config", "ChartDir")
  340.                 CreateIniKeyValue ini$, "Config", "ChartDir", szString$, cmoOverWrite
  341.                 szString$ = GetIniKeyString(Oldini$, "Config", "ShowDir")
  342.                 CreateIniKeyValue ini$, "Config", "ShowDir", szString$, cmoOverWrite
  343.                 szString$ = GetIniKeyString(Oldini$, "Config", "PhotoPaintDir")
  344.                 CreateIniKeyValue ini$, "Config", "PhotoPaintDir", szString$, cmoOverWrite
  345.                 szString$ = GetIniKeyString(Oldini$, "Config", "MoveDir")
  346.                 CreateIniKeyValue ini$, "Config", "MoveDir", szString$, cmoOverWrite
  347.                 szString$ = GetIniKeyString(Oldini$, "Config", "TraceDir")
  348.                 CreateIniKeyValue ini$, "Config", "TraceDir", szString$, cmoOverWrite
  349.                 szString$ = GetIniKeyString(Oldini$, "Config", "MosaicDir")
  350.                 CreateIniKeyValue ini$, "Config", "MosaicDir", szString$, cmoOverWrite
  351.                 szString$ = GetIniKeyString(Oldini$, "Config", "FontsDir")
  352.                 CreateIniKeyValue ini$, "Config", "FontsDir", szString$, cmoOverWrite
  353.                 szString$ = GetIniKeyString(Oldini$, "Config", "FiltersDir")
  354.                 CreateIniKeyValue ini$, "Config", "FiltersDir", szString$, cmoOverWrite
  355.                 szString$ = GetIniKeyString(Oldini$, "Registration", "UserName")
  356.                 CreateIniKeyValue ini$, "Registration", "UserName", szString$, cmoOverWrite
  357.                 szString$ = GetIniKeyString(Oldini$, "Registration", "SerialNumber")
  358.                 CreateIniKeyValue ini$, "Registration", "SerialNumber", szString$, cmoOverWrite
  359.             Oldini$ = MakePath( ConfigDir$, "corelprn.bak")
  360.             ini$ = MakePath( ConfigDir$, TR_CORELPRN_INI)
  361.                 szString$ = GetIniKeyString(Oldini$, "ColorPath", "CircuitPath")
  362.                 CreateIniKeyValue ini$, "ColorPath", "CircuitPath", szString$, cmoOverwrite
  363.             Oldini$ = MakePath( ConfigDir$, "corelflt.bak")
  364.             ini$ = MakePath( ConfigDir$, TR_CORELFLT_INI)
  365.                 szString$ = GetIniKeyString(Oldini$, "ColorPath", "CircuitPath")
  366.                 CreateIniKeyValue ini$, "ColorPath", "CircuitPath", szString$, cmoOverWrite
  367.                 szString$ = GetIniKeyString(Oldini$, "ColorPath", "CurvePath")
  368.                 CreateIniKeyValue ini$, "ColorPath", "CurvePath", szString$, cmoOverWrite
  369.                 WrapCommentIniSection ini$, MakePath(Dir(MAIN),"___temp_"), "ImportFilters", FiltersDir$+"\"
  370.                 WrapCommentIniSection ini$, MakePath(Dir(MAIN),"___temp_"), "ExportFilters", FiltersDir$+"\"
  371.                 WrapCommentIniSection ini$, MakePath(Dir(MAIN),"___temp_"), "CorelAIExport", DataDir$+"\"
  372.                 WrapCommentIniSection ini$, MakePath(Dir(MAIN),"___temp_"), "CorelDXFExport", DataDir$+"\"
  373.             Oldini$ = MakePath( ConfigDir$, "corelapp.bak")
  374. ''            ini$ = MakePath( ConfigDir$, TR_CORELFNT_INI)
  375. ''                szString$ = GetIniKeyString(Oldini$, "Config", "FontsDir")
  376. ''                WrapCommentIniSection ini$, MakePath(Dir(MAIN),"___temp_"), "Fonts", szString$
  377. ''                WrapCommentIniSection ini$, MakePath(Dir(MAIN),"___temp_"), "Symbols", szString$
  378.         ENDIF
  379.         
  380.         IF bUpdate(DRAW) THEN
  381.             '' setup coreldrw.reg
  382.             WrapFileChangeString MakePath(ConfigDir$, TR_CORELDRW_REG), MakePath(DIR(MAIN),"___temp_"), TR_CORELDRW_EXE, MakePath(ProgramsDir$,TR_CORELDRW_EXE)
  383.             WrapFileChangeString MakePath(ConfigDir$, TR_CORELDRW_REG), MakePath(DIR(MAIN),"___temp_"), TR_CDROL140_DLL, MakePath(ProgramsDir$,TR_CDROL140_DLL)
  384.             RUN( TR_REGLOAD_S + " " + MakePath(ConfigDir$, TR_CORELDRW_REG) )
  385. ''            Oldini$ = MakePath(ConfigDir$, "coreldrw.bak")
  386. ''            ini$ = MakePath(ConfigDir$, TR_CORELDRW_INI)
  387. ''                szString$ = GetIniKeyString(Oldini$, "Config", "AutoBackupDir")
  388. ''                CreateIniKeyValue ini$, "Config", "AutoBackupDir", szString$, cmoOverwrite
  389. ''                szString$ = GetIniKeyString(Oldini$, "Config", "TemplateDir")
  390. ''                CreateIniKeyValue ini$, "Config", "TemplateDir", szString$, cmoOverwrite
  391.         ENDIF
  392.  
  393.         IF bUpdate(CHART) THEN
  394.             '' setup corelcht.reg
  395. ''            WrapFileChangeString MakePath(ConfigDir$, TR_CORELCHT_REG), MakePath(DIR(MAIN),"___temp_"), TR_CORELCHT_EXE, MakePath(ProgramsDir$, TR_CORELCHT_EXE)
  396. ''            RUN( TR_REGLOAD_S + " " + MakePath(ConfigDir$, TR_CORELCHT_REG) )
  397. ''            Oldini$ = MakePath(ConfigDir$, "corelcht.bak")
  398. ''            ini$ = MakePath(ConfigDir$, "CORELCHT.INI")
  399. ''                szString$ = GetIniKeyString(Oldini$, "Config", "Vector_path")
  400. ''                CreateIniKeyValue ini$, "Config", "Vector_path", szString$, cmoOverwrite
  401. ''                szString$ = GetIniKeyString(Oldini$, "Templates", "1")
  402. ''                CreateIniKeyValue ini$, "Templates", "1", szString$, cmoOverwrite
  403. ''                szString$ = GetIniKeyString(Oldini$, "Templates", "2")
  404. ''                CreateIniKeyValue ini$, "Templates", "2", szString$, cmoOverwrite
  405. ''                szString$ = GetIniKeyString(Oldini$, "Templates", "3")
  406. ''                CreateIniKeyValue ini$, "Templates", "3", szString$, cmoOverwrite
  407. ''                szString$ = GetIniKeyString(Oldini$, "Templates", "4")
  408. ''                CreateIniKeyValue ini$, "Templates", "4", szString$, cmoOverwrite
  409. ''                szString$ = GetIniKeyString(Oldini$, "Templates", "5")
  410. ''                CreateIniKeyValue ini$, "Templates", "5", szString$, cmoOverwrite
  411. ''                szString$ = GetIniKeyString(Oldini$, "Templates", "6")
  412. ''                CreateIniKeyValue ini$, "Templates", "6", szString$, cmoOverwrite
  413. ''                szString$ = GetIniKeyString(Oldini$, "Templates", "7")
  414. ''                CreateIniKeyValue ini$, "Templates", "7", szString$, cmoOverwrite
  415. ''                szString$ = GetIniKeyString(Oldini$, "Templates", "8")
  416. ''                CreateIniKeyValue ini$, "Templates", "8", szString$, cmoOverwrite
  417. ''                szString$ = GetIniKeyString(Oldini$, "Templates", "9")
  418. ''                CreateIniKeyValue ini$, "Templates", "9", szString$, cmoOverwrite
  419. ''                szString$ = GetIniKeyString(Oldini$, "Templates", "10")
  420. ''                CreateIniKeyValue ini$, "Templates", "10",szString$, cmoOverwrite
  421. ''                szString$ = GetIniKeyString(Oldini$, "Templates", "11")
  422. ''                CreateIniKeyValue ini$, "Templates", "11",szString$, cmoOverwrite
  423. ''                szString$ = GetIniKeyString(Oldini$, "Templates", "12")
  424. ''                CreateIniKeyValue ini$, "Templates", "12",szString$, cmoOverwrite
  425. ''                szString$ = GetIniKeyString(Oldini$, "Templates", "13")
  426. ''                CreateIniKeyValue ini$, "Templates", "13",szString$, cmoOverwrite
  427.         ENDIF
  428.  
  429.         IF bUpdate(SHOW) THEN
  430.             '' setup corelshw.reg
  431.             WrapFileChangeString MakePath(ConfigDir$, TR_CORELSHW_REG), MakePath(DIR(MAIN),"___temp_"),TR_CORELSHW_EXE, MakePath(ProgramsDir$,TR_CORELSHW_EXE)
  432.             RUN( TR_REGLOAD_S + " " + MakePath(ConfigDir$, TR_CORELSHW_REG) )
  433.             Oldini$ = MakePath(ConfigDir$, "corelshw.bak")
  434.             ini$ = MakePath(ConfigDir$, TR_CORELSHW_INI)
  435.                 szString$ = GetIniKeyString(Oldini$, "HomeDirectories", "Presentations")
  436.                 CreateIniKeyValue ini$, "HomeDirectories", "Presentations", szString$, cmoOverwrite
  437.                 szString$ = GetIniKeyString(Oldini$, "HomeDirectories", "Animations")
  438.                 CreateIniKeyValue ini$, "HomeDirectories", "Animations", szString$, cmoOverwrite
  439.         ENDIF
  440.  
  441.  
  442.         IF bUpdate(PHOTO) THEN
  443.             '' Register photo with OLE
  444.             WrapFileChangeString MakePath(ConfigDir$, TR_CORELPNT_REG), MakePath(DIR(MAIN),"___temp_"),TR_CORELPNT_EXE, MakePath(ProgramsDir$, TR_CORELPNT_EXE)
  445.             WrapFileChangeString MakePath(ConfigDir$, TR_CORELPNT_REG), MakePath(DIR(MAIN),"___temp_"),TR_PNTHNDLR_DLL, MakePath(ProgramsDir$, TR_PNTHNDLR_DLL)
  446.             RUN( TR_REGLOAD_S + " " + MakePath(ConfigDir$, TR_CORELPNT_REG) )
  447.             Oldini$ = MakePath(ConfigDir$, "corelpnt.bak")
  448.             ini$ = MakePath(ConfigDir$, TR_CORELPNT_INI)
  449.                 szString$ = GetIniKeyString(Oldini$, "CorelPaintDll", "PCX 16 Color/Gray")
  450.                 CreateIniKeyValue ini$, "CorelPaintDll", "PCX 16 Color/Gray", szString$, cmoOverWrite
  451.                 szString$ = GetIniKeyString(Oldini$, "ARTIST", "Path")
  452.                 CreateIniKeyValue ini$, "ARTIST", "Path", szString$, cmoOverWrite
  453.                 szString$ = GetIniKeyString(Oldini$, "COLORSELECT", "Brush")
  454.                 CreateIniKeyValue ini$, "COLORSELECT", "Brush", szString$, cmoOverWrite
  455.                 szString$ = GetIniKeyString(Oldini$, "COLORSELECT", "Area")
  456.                 CreateIniKeyValue ini$, "COLORSELECT", "Area", szString$, cmoOverWrite
  457. '' Make the following as variable in setupvar.raw ......
  458.                 szString$ = GetIniKeyString(Oldini$, "CANVAS", "Canvas")
  459.                 CreateIniKeyValue ini$, "CANVAS", "Canvas", szString$, cmoOverWrite
  460.                 szString$ = GetIniKeyString(Oldini$, "ColorPath", "CircuitPath")
  461.                 CreateIniKeyValue ini$, "ColorPath", "CircuitPath", szString$, cmoOverWrite
  462.                 szString$ = GetIniKeyString(Oldini$, "ColorPath", "CurvePath")
  463.                 CreateIniKeyValue ini$, "ColorPath", "CurvePath", szString$, cmoOverWrite
  464.                 szString$ = GetIniKeyString(Oldini$, "ColorPath", "TargetPath")
  465.                 CreateIniKeyValue ini$, "ColorPath", "TargetPath", szString$, cmoOverWrite
  466.                 szString$ = GetIniKeyString(Oldini$, "FILL", "Fill")
  467.                 CreateIniKeyValue ini$, "FILL", "Fill", szString$, cmoOverWrite
  468.         ENDIF
  469.     
  470.         IF bUpdate(MOVE) THEN
  471.             '' Register move with OLE
  472.             WrapFileChangeString MakePath(ConfigDir$, "corelmov.reg"), MakePath(DIR(MAIN),"___temp_"),TR_CORELMOV_EXE, MakePath(ProgramsDir$, TR_CORELMOV_EXE)
  473.             RUN( TR_REGLOAD_S + " " + MakePath(ConfigDir$, "corelmov.reg") )
  474.             Oldini$ = MakePath(ConfigDir$, "corelmov.bak")
  475.             ini$ = MakePath(ConfigDir$, TR_CORELMOV_INI)
  476.                 szString$ = GetIniKeyString(Oldini$, "Config", "FilterDir")
  477.                 CreateIniKeyValue ini$, "Config", "FilterDir", szString$, cmoOverWrite
  478.             '' Make the changes for media player installation    
  479.             ini$ = MakePath(WINDIR$, "system.ini")
  480.                 CopyFile MakePath(WINDIR$, "system.ini"), MakePath(WINDIR$, "system.cor"), cmoOverwrite, 0
  481.                 CreateIniKeyValue ini$, "mci", "CorelMOVE", MakePath(ProgramsDir$, "mcicmv40.drv"), cmoOverWrite
  482.                 CreateIniKeyValue ini$, "drivers", "VIDC.MSVC", "msvidc.drv", cmoOverWrite
  483. ''                CreateIniKeyValue TR_WIN_INI, "mci extensions", "cmv", "CorelMOVE", cmoOverWrite
  484. ''                CreateIniKeyValue TR_WIN_INI, "mci extensions", "mwf", "CorelMOVE", cmoOverWrite
  485. ''            ini$ = MakePath(WINDIR$, "MPLAYER.INI")
  486. ''                CopyFile MakePath(WINDIR$, "mplayer.ini"), MakePath(WINDIR$, "mplayer.cor"), cmoOverwrite, 0
  487. ''                CreateIniKeyValue ini$, "Devices", "CorelMOVE", "350, CorelMove Player", cmoOverWrite
  488.         ENDIF
  489.  
  490.         IF bUpdate(TRACE) THEN
  491.             ini$ = MakePath(ConfigDir$, "coreltrc.ini")
  492.                 CreateIniKeyValue ini$, "Config", "1", MakePath(DIR(TRACE),"NORMAL.CTR"), cmoOverWrite
  493.                 CreateIniKeyValue ini$, "Config", "2", MakePath(DIR(TRACE),"DITHERED.CTR"), cmoOverWrite
  494.                 CreateIniKeyValue ini$, "Config", "3", MakePath(DIR(TRACE),"BIGFORMS.CTR"), cmoOverWrite
  495.         ENDIF
  496.         
  497. ''        IF bUpdate(MOSAIC) THEN
  498. ''        ENDIF
  499.         
  500.         UIPop 1 ''WAITCONFIGER Dialog
  501.     ENDIF '' bUpdateNet%
  502.         
  503. '' User has completed run of setup or has unconditionally decided to quit
  504. QUIT:
  505.     WaitOff
  506.     '' On MSTest errors report "setup file corrupted" and abort
  507.     ON ERROR GOTO ERRQUIT
  508.  
  509.     IF ERR = 0 THEN
  510.         IF bUpdateNet% THEN
  511.             dlg% = UPGRDNETEXITSUCCESS
  512.         ELSE
  513.             dlg% = UPGRDEXITSUCCESS
  514.         ENDIF
  515.         szDlgProc$ = "FInfo0DlgProc"
  516.         WriteToLogfile TR_SETUPSUCCEEDED
  517.     ELSEIF ERR = STFQUIT THEN
  518.         dlg% = UPGRDEXITQUIT
  519.         szDlgProc$ = "FInfo0DlgProc"
  520.         WriteToLogfile TR_SETUPQUIT
  521.     ELSE
  522.         dlg% = UPGRDERROREXITFAILURE
  523.         szDlgProc$ = "FInfo0DlgProc"
  524.         WriteToLogfile TR_SETUPFAILED
  525.     ENDIF
  526. ''    WriteToLogfile ""
  527.     
  528.  
  529. '' Put up one of the exit message dialog boxes
  530. QUITL1:
  531.     sz$ = UIStartDlg("mscuistf.dll", dlg%, szDlgProc, 0, "")
  532.     IF sz$ = "REACTIVATE" THEN
  533.         GOTO QUITL1
  534.     ENDIF
  535.  GOTO FINISH
  536.  
  537.  
  538. '' An error has occurred in MSTest. Tell the user and abort.
  539. ERRQUIT:
  540.     i% = DoMsgBox( "Update files were corrupted, contact Corel Product Support!", "Update Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  541.     WriteToLogfile "Update Failed - files corrupted"
  542.     WriteToLogFile ""
  543. FINISH:
  544.     UIPopAll
  545.     ShutDownInstall
  546.     CloseLogFile
  547.     END
  548.  
  549. ASKUPDATE:
  550.     WaitOff
  551.     sz$ = UIStartDlg( "mscuistf.dll", UPGRDASKUPDATE, "FInfoDlgProc", UPGRDASKUPDATEHELP, "FHelpDlgProc" )
  552.     SELECT CASE sz$
  553.     CASE "CONTINUE"
  554.         ''Do nothing
  555.     CASE "REACTIVATE"
  556.         GOTO ASKUPDATE
  557.     CASE ELSE
  558.         GOSUB ASKQUIT
  559.         GOTO ASKUPDATE
  560.     END SELECT
  561.     UIPop 1
  562. RETURN        ''return if the user want to update
  563.  
  564.  
  565. '' Display an information dialog
  566. '' Uses the global Dialog% to identify which dialog to display
  567. INFO:
  568.     WaitOff
  569.     sz$ = UIStartDlg( "mscuistf.dll", Dialog%, "FInfo0DlgProc", 0, "" )
  570.     SELECT CASE sz$
  571.     CASE "CONTINUE"
  572.         ''Do nothing
  573.     CASE "REACTIVATE"
  574.         GOTO INFO
  575.     CASE "EXIT"
  576.         GOSUB ASKQUIT
  577.         GOTO INFO
  578.     END SELECT
  579.     UIPop 1
  580. RETURN
  581.  
  582. '' The user has asked to quit - confirm his decision
  583. ASKQUIT:
  584.     WaitOff
  585.     sz$ = UIStartDlg("mscuistf.dll", UPGRDASKQUIT, "FQuitDlgProc", 0, "")
  586.     SELECT CASE sz$
  587.     CASE "EXIT"
  588.         GOTO FINISH        '' OK. I know I shouldn't do that, but it's OK, It's the end of the script.
  589.     CASE "REACTIVATE"
  590.         GOTO ASKQUIT
  591.     CASE ELSE
  592.         ''Do nothing
  593.     END SELECT
  594.     UIPop 1
  595. RETURN
  596.  
  597. '***********************************************************************
  598. '***********************************************************************
  599. '**** Get CorelDRAW! 4 main directory                                ********************
  600. '***********************************************************************
  601. GetAppsMainDir:
  602.     bRet% = FIsDrawExist(TR_WIN_INI, szString$)
  603.     IF bRet% THEN  '' We have DRAW installed before (could be DRAW3 or DRAW4)
  604.         DEST$ = szString$
  605.         ConfigDir$ = GetIniKeyString(TR_WIN_INI, "CorelGraphics4", "Dir")
  606.         DIR(MAIN) = DEST$
  607.         SetDirectories
  608.     ENDIF
  609.     Dialog% = UPGRDDRAWPATH
  610.     SetSymbolValue "EditTextIn", DEST$
  611.     SetSymbolValue "EditFocus", "END"
  612. GETPATHL1:
  613.     WaitOff
  614.     sz$ = UIStartDlg("mscuistf.dll", Dialog%, "FEditDlgProc", UPGRDDRAWPATHHELP, "FHelpDlgProc")
  615.     SELECT CASE sz$
  616.     CASE "CONTINUE"
  617.         WaitOn
  618.         olddest$ = DEST$
  619.         DEST$ = RTRIM$(LTRIM$(GetSymbolValue("EditTextOut")))
  620.         ''Validate new path.
  621.         IF DEST$ = "" OR IsDirWritable(DEST$) = 0 THEN
  622.             OldDialog% = Dialog%
  623.             Dialog% = UPGRDERRORBADPATH
  624.             GOSUB INFO
  625.             Dialog% = OldDialog%
  626.             GOTO GETPATHL1
  627.         ENDIF
  628.  
  629.         ''change subdirectories if DEST$ changed
  630.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  631.             DIR(MAIN) = DEST$
  632.             ConfigDir$ = MakePath(DIR(MAIN), "CONFIG")
  633.             SetDirectories
  634.         ENDIF
  635.         
  636.     CASE "REACTIVATE"
  637.         GOTO GETPATHL1
  638.     CASE "CANCEL", "BACK"
  639.         UIPop 1
  640.         bBack% = TRUE
  641.         RETURN
  642.     CASE ELSE
  643.         GOSUB ASKQUIT
  644.         GOTO GETPATHL1
  645.     END SELECT
  646.     WriteToLogFile TR_BASEDIR + DEST$
  647.     WriteToLogFile ""
  648.     UIPop 1
  649. RETURN
  650.  
  651. '***********************************************************************
  652. '***********************************************************************
  653. '**** Get Network CorelDRAW! 4 Setup Dir directory     ********************
  654. '***********************************************************************
  655. GetNetSetupDir:
  656.     Dialog% = UPGRDNETSETUPPATH
  657.     SetSymbolValue "EditTextIn", NetSetupDir$
  658.     SetSymbolValue "EditFocus", "END"
  659. GETNETPATHL1:
  660.     WaitOff
  661.     sz$ = UIStartDlg("mscuistf.dll", Dialog%, "FEditDlgProc", UPGRDDRAWPATHHELP, "FHelpDlgProc")
  662.     SELECT CASE sz$
  663.     CASE "CONTINUE"
  664.         WaitOn
  665.         NetSetupDir$ = RTRIM$(LTRIM$(GetSymbolValue("EditTextOut")))
  666.         ''Validate new path.
  667.         IF NetSetupDir$ = "" OR IsDirWritable(NetSetupDir$) = 0 THEN
  668.             OldDialog% = Dialog%
  669.             Dialog% = UPGRDERRORBADPATH
  670.             GOSUB INFO
  671.             Dialog% = OldDialog%
  672.             GOTO GETNETPATHL1
  673.         ENDIF
  674.         SetNetDirectories
  675.         
  676.     CASE "REACTIVATE"
  677.         GOTO GETNETPATHL1
  678.     CASE ELSE
  679.         GOSUB ASKQUIT
  680.         GOTO GETNETPATHL1
  681.     END SELECT
  682.     UIPop 1
  683. RETURN
  684.  
  685.  
  686.  
  687. '*************************************************************************
  688. '*************************************************************************
  689. '**** Add files to copy list according to the bUpdate flags **************
  690. '*************************************************************************
  691. '*************************************************************************
  692. SUB AddFilesToCopyList (ftype%) STATIC
  693.  
  694.     IF bUpdateNet% THEN
  695.         RedistWinDir$ = MakePath(DIR(MAIN),TR_REDIST)
  696.     ELSE
  697.         RedistWinDir$ = WINDIR$
  698.     ENDIF
  699.         
  700.     SELECT CASE ftype%
  701.         CASE DRAW
  702.             AddSectionFilesToCopyList "DrawMain", SrcDir$, ProgramsDir$
  703.             AddSectionFilesToCopyList "DrawConfig", SrcDir$, ConfigDir$
  704.             AddSectionFilesToCopyList "DrawTemplate", SrcDir$, MakePath(DIR(DRAW),TR_TEMPLATE)
  705.             IF bUpdateHelp(DRAW) THEN
  706.                 AddSectionFilesToCopyList "DrawHelp", SrcDir$, ProgramsDir$
  707.             ENDIF
  708.             AddSectionFilesToCopyList "DrawFilters", SrcDir$, FiltersDir$
  709.             
  710.         CASE CHART
  711.             AddSectionFilesToCopyList "ChartMain", SrcDir$, ProgramsDir$
  712. ''            AddSectionFilesToCopyList "ChartConfig", SrcDir$, ConfigDir$
  713.             IF bUpdateHelp(CHART) THEN                    
  714.                 AddSectionFilesToCopyList "ChartHelp", SrcDir$, ProgramsDir$
  715.             ENDIF
  716.             
  717.         CASE SHOW
  718.             AddSectionFilesToCopyList "ShowMain", SrcDir$, ProgramsDir$
  719.             AddSectionFilesToCopyList "ShowConfig", SrcDir$, ConfigDir$
  720. ''            AddRedistSection "ShowRedist"
  721. ''            AddSectionFilesToCopyList "ShowRedistWin", SrcDir$, RedistWinDir$
  722.             
  723.         CASE PHOTO
  724.             AddSectionFilesToCopyList "PhotoMain", SrcDir$, ProgramsDir$
  725.             AddSectionFilesToCopyList "PhotoCanvas", SrcDir$, MakePath(DIR(PHOTO),TR_CANVAS)
  726.             AddSectionFilesToCopyList "PhotoConfig", SrcDir$, ConfigDir$
  727.             IF bUpdateHelp(PHOTO) THEN        
  728.                 AddSectionFilesToCopyList "PhotoHelp", SrcDir$, ProgramsDir$
  729.             ENDIF
  730.             AddSectionFilesToCopyList "ExpFiltersPh", SrcDir$, FiltersDir$
  731.             
  732.         CASE MOVE
  733.             AddSectionFilesToCopyList "MoveMain", SrcDir$, ProgramsDir$
  734.             AddSectionFilesToCopyList "MoveConfig", SrcDir$, ConfigDir$
  735.             AddRedistSection "MoveRedist"
  736. ''            AddSectionFilesToCopyList "MoveRedistWin", SrcDir$, RedistWinDir$
  737.             IF bUpdateHelp(MOVE) THEN
  738.                 AddSectionFilesToCopyList "MoveHelp", SrcDir$, ProgramsDir$
  739.             ENDIF
  740.             AddSectionFilesToCopyList "MoveFilters", SrcDir$, FiltersDir$
  741.  
  742.         CASE TRACE
  743.                 AddSectionFilesToCopyList "TraceMain", SrcDir$, ProgramsDir$
  744.                 AddSectionFilesToCopyList "TraceTrace", SrcDir$, DIR(TRACE)
  745. ''                AddSectionFilesToCopyList "TraceData", SrcDir$, DataDir$
  746.                 AddSectionFilesToCopyList "TraceConfig", SrcDir$, ConfigDir$
  747.             
  748.         CASE MOSAIC
  749.                 AddSectionFilesToCopyList "MosaicMain", SrcDir$, ProgramsDir$
  750.                 AddRedistSection "MosaicRedist"
  751.                 AddSectionFilesToCopyList "ImpFiltersMo", SrcDir$, FiltersDir$
  752.             
  753.         CASE MAIN
  754.         
  755.             IF bUpdateNet% THEN
  756.                 '' Add net install files
  757.                 FOR i% = DRAW TO MOSAIC
  758.                     IF bUpdate(i%) THEN
  759.                         AddSectionFilesToCopyList "NetInf", SrcDir$, DIR(i%)
  760.                     ENDIF
  761.                 NEXT i%
  762.                 AddSectionFilesToCopyList "NetInst", SrcDir$, MakePath(DIR(MAIN),TR_SETUP)
  763.                 AddSectionFilesToCopyList "NetInf", SrcDir$, MakePath(DIR(MAIN),TR_SETUP)
  764.                 AddSectionFilesToCopyList "NetInf", SrcDir$, ConfigDir$
  765.                 AddSectionFilesToCopyList "NetInf", SrcDir$, MakePath(DIR(MAIN),TR_REDIST)
  766.                 AddSectionFilesToCopyList "NetInf", SrcDir$, MakePath(DIR(MAIN),TR_CUSTOM)
  767.                 AddSectionFilesToCopyList "NetInf", SrcDir$, szSymbolDir$
  768.                 AddSectionFilesToCopyList "NetInf", SrcDir$, MakePath(DIR(PHOTO),TR_COLORS)
  769.             ENDIF
  770.             
  771.             AddSectionFilesToCopyList "Main", SrcDir$, DIR(MAIN)
  772.             AddSectionFilesToCopyList "CommonDLL", SrcDir$, ProgramsDir$
  773.             AddSectionFilesToCopyList "CommonConfig", SrcDir$, ConfigDir$
  774.             AddSectionFilesToCopyList "Custom", SrcDir$, CustomDir$
  775.             AddSectionFilesToCopyList "ProgramData", SrcDir$, DataDir$
  776.             AddRedistSection "CommonRedist"
  777.             
  778.             ''gee let's add the filters here..........
  779.             CheckInstalledFilters "ImpFilters"
  780.             CheckInstalledFilters "ExpFilters"
  781.             CheckInstalledFilters "ExpFiltersDrPh"
  782.             CheckInstalledFilters "ImpFiltersChMo"
  783.             CheckInstalledFilters "ImpFiltersMoPhTr"
  784.             CheckInstalledFilters "ImpFiltersDrMoPhTr"
  785.             CheckInstalledFilters "ImpFiltersDrMoTr"
  786.             CheckInstalledFilters "ImpJPEG Bitmap"
  787.             CheckInstalledFilters "ImpAutodesk Flic Thumbnail"
  788.             szPCDFilterName$ = GetSectionKeyFilename("ImpKodak Photo-CD" , "Kodak Photo-CD")
  789.             index% = GetFilenameFromPath( szPCDFilterName$ )
  790.             szPCDFilterName2$ = MID$( szPCDFilterName$, index%, LEN(szPCDFilterName$) - index% + 1 )
  791.             IF bUpdateNet% AND DoesFileExist( MakePath(DIR(MAIN), TR_REDIST+"\"+szPCDFilterName2$), femExists) THEN
  792.                 AddSectionFilesToCopyList "ImpKodak Photo-CD", SrcDir$, MakePath(DIR(MAIN),TR_REDIST)
  793.             ENDIF
  794.             IF bWindowsIsNetworked% OR bUpdateNet% = FALSE THEN
  795.                 AddSectionFilesToCopyList "ImpKodak Photo-CD", SrcDir$, szWWinDir$
  796.             ENDIF
  797.             
  798.     END SELECT
  799.     
  800. END SUB
  801.  
  802. '**
  803. '** Purpose:
  804. '**     Removes the optional trailing "\"
  805. '** Arguments:
  806. '**     szDir$  - full directory path (with optional ending "\")
  807. '** Returns:
  808. '**     szDir$ without a trailing "\"
  809. '*************************************************************************
  810. FUNCTION MakeDir (szDir$) STATIC AS STRING
  811.     IF szDir$ <> "" THEN
  812.         IF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  813.             MakeDir = MID$( szDir$, 1, LEN(szDir$) - 1 )
  814.         ELSE
  815.             MakeDir = szDir$
  816.         ENDIF
  817.     ELSE
  818.         MakeDir = szDir$
  819.     ENDIF
  820. END FUNCTION
  821.  
  822. '** Add Redistributable files to the correct directory(s) in the copy list
  823. '*************************************************************************
  824. SUB AddRedistSection( szSection$) STATIC
  825.     WriteToLogFile "SUB AddRedistSection"
  826.     IF bWindowsIsNetworked% OR bUpdateNet% = FALSE THEN
  827.         '' Copy the redistributable files and dlls to windir or winsysdir
  828.         AddSectionFilesToCopyList szSection$, SrcDir$, szWWinDir$
  829.     ENDIF
  830.     IF bUpdateNet% THEN
  831.         '' Store the redistributable files in REDIST until user installs
  832.         AddSectionFilesToCopyList szSection$, SrcDir$, MakePath(DIR(MAIN),TR_REDIST)
  833.     ENDIF
  834.     WriteToLogFile "---> SUB AddRedistSection"
  835. END SUB
  836.  
  837.  
  838. '**
  839. '** Purpose:
  840. '**     Appends a file name to the end of a directory path,
  841. '**     inserting a backslash character as needed.
  842. '** Arguments:
  843. '**     szDir$  - full directory path (with optional ending "\")
  844. '**     szFile$ - filename to append to directory
  845. '** Returns:
  846. '**     Resulting fully qualified path name.
  847. '*************************************************************************
  848. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  849.     MakePath = MakeDir(szDir$) + "\" + szFile$
  850. END FUNCTION
  851.  
  852.  
  853. '*************************************************************************
  854. '*************************************************************************
  855. '** This sub Checks the system to see which Apps has been installed before
  856. '** It set some flags for future use.
  857. '*************************************************************************
  858. SUB CheckInstalledApps STATIC
  859.     
  860.     bUpdate(DRAW) = CheckFileInPrograms (TR_CORELDRW_EXE)
  861.     bUpdateHelp(DRAW) = CheckFileInPrograms ("coreldrw.hlp")
  862.  
  863.     bUpdate(CHART) = CheckFileInPrograms (TR_CORELCHT_EXE)
  864.     bUpdateHelp(CHART) = CheckFileInPrograms ("corelcht.hlp")
  865.  
  866.     bUpdate(SHOW) = CheckFileInPrograms (TR_CORELSHW_EXE)
  867.     bUpdateHelp(SHOW) = CheckFileInPrograms ("corelshw.hlp")
  868.  
  869.     bUpdate(PHOTO) = CheckFileInPrograms (TR_CORELPNT_EXE)
  870.     bUpdateHelp(PHOTO) = CheckFileInPrograms ("corelpnt.hlp")
  871.  
  872.     bUpdate(MOVE) = CheckFileInPrograms (TR_CORELMOV_EXE)
  873.     bUpdateHelp(MOVE) = CheckFileInPrograms ("corelmov.hlp")
  874.  
  875.     bUpdate(TRACE) = CheckFileInPrograms (TR_CORELTRC_EXE)
  876.     bUpdateHelp(TRACE) = CheckFileInPrograms ("coreltrc.hlp")
  877.  
  878.     bUpdate(MOSAIC) = CheckFileInPrograms (TR_CORELMOS_EXE)
  879.     bUpdateHelp(MOSAIC) = CheckFileInPrograms ("corelmos.hlp")
  880.  
  881.     FOR i = DRAW TO MOSAIC
  882.         IF bUpdate(i) THEN
  883.             bUpdate(MAIN) = TRUE
  884.             EXIT FOR
  885.         ENDIF
  886.     NEXT i
  887.  
  888. END SUB
  889.  
  890. '*************************************************************************
  891. '*************************************************************************
  892. '**** Check a File in Programs Directory, and returns True or False ******
  893. '**** It's very specific to check MAIN\Programs Directory only      ******
  894. '*************************************************************************
  895. FUNCTION CheckFileInPrograms (FileName$) STATIC AS INTEGER
  896.     
  897.     IF DoesFileExist( MakePath(ProgramsDir$, FileName$), femExists ) THEN 
  898.         bRetVal% = TRUE
  899.     ELSE
  900.         bRetVal% = FALSE
  901.     ENDIF    
  902.     CheckFileInPrograms = bRetVal%
  903.  
  904. END FUNCTION
  905.  
  906. '** Set the subdirectories to their default values.
  907. '*************************************************************************
  908. SUB SetDirectories STATIC
  909.     bBack% = FALSE
  910.  
  911.     IF ConfigDir$ = "" THEN
  912.         ConfigDir$        = MakePath( DIR(MAIN), "CONFIG")
  913.         WriteToLogFile "ConfigDir: "+ConfigDir$
  914.     ENDIF
  915.  
  916.     IF DoesFileExist( MakePath(ConfigDir$, TR_CORELAPP_INI), femExists ) THEN 
  917.         ini$ = MakePath( ConfigDir$, TR_CORELAPP_INI )
  918.         ProgramsDir$    = GetIniKeyString( ini$, "Config", "ProgramsDir")
  919.         WriteToLogFile "ProgramsDir: "+ProgramsDir$
  920.         DataDir$            = GetIniKeyString( ini$, "Config", "DataDir")
  921.         WriteToLogFile "DataDir: "+DataDir$
  922.         CustomDir$        = GetIniKeyString( ini$, "Config", "CustomDir")
  923.         WriteToLogFile "CustomDir: "+CustomDir$
  924.         DIR(DRAW)         = GetIniKeyString( ini$, "Config", "DrawDir")
  925.         DIR(CHART)         = GetIniKeyString( ini$, "Config", "ChartDir")
  926.         DIR(SHOW)         = GetIniKeyString( ini$, "Config", "ShowDir")
  927.         DIR(PHOTO)         = GetIniKeyString( ini$, "Config", "PhotoPaintDir")
  928.         DIR(MOVE)         = GetIniKeyString( ini$, "Config", "MoveDir")
  929.         DIR(TRACE)         = GetIniKeyString( ini$, "Config", "TraceDir")
  930.         DIR(MOSAIC)     = GetIniKeyString( ini$, "Config", "MosaicDir")
  931.         FiltersDir$        = GetIniKeyString( ini$, "Config", "FiltersDir")    
  932.     ELSE
  933.         bBack% = TRUE
  934.     ENDIF
  935.  
  936. END SUB
  937.  
  938. '** Set the Network subdirectories to their values.
  939. '*************************************************************************
  940. SUB SetNetDirectories STATIC
  941.         WriteToLogFile "SUB SetNetDirectories"
  942.         WriteToLogFile " NetSetup Directory is: "+NetSetupDir$
  943.     
  944.     bBack% = FALSE
  945.     IF DoesFileExist( MakePath(NetSetupDir$, TR_SETUP_INI), femExists ) THEN 
  946.     
  947.         ini$ = MakePath( NetSetupDir$, TR_SETUP_INI )
  948.         DIR(MAIN)         = GetIniKeyString( ini$, "Directories", TR_MAIN )
  949.         DIR(DRAW)         = GetIniKeyString( ini$, "Directories", TR_DRAW )
  950.         DIR(CHART)         = GetIniKeyString( ini$, "Directories", TR_CHART )
  951.         DIR(SHOW)         = GetIniKeyString( ini$, "Directories", TR_SHOW )
  952.         DIR(PHOTO)         = GetIniKeyString( ini$, "Directories", TR_PHOTOPNT )
  953.         DIR(MOVE)         = GetIniKeyString( ini$, "Directories", TR_MOVE )
  954.         DIR(TRACE)         = GetIniKeyString( ini$, "Directories", TR_TRACE )
  955.         DIR(MOSAIC)     = GetIniKeyString( ini$, "Directories", TR_MOSAIC )
  956.         szSymbolDir$  = GetIniKeyString( ini$, "Directories", TR_WFN )
  957.     ''    DIR(SCANNERS)    = GetIniKeyString( ini$, "Directories", TR_SCANNERS )
  958.     ''    szDestScannersDir$ = MakePath(WINDIR$,TR_TWAIN+"\"+TR_COREL)
  959.     ''    DIR(FILTERS)     = MakePath( DIR(MAIN), TR_PROGRAMS )
  960.     ''    DIR(FONTTT)     = GetIniKeyString( ini$, "Directories", TR_TTF )
  961.     
  962.         KeyVal$ = GetIniKeyString( ini$, "Directories", TR_FIXEDDRIVE )
  963.         IF KeyVal$ = "FALSE"  THEN
  964.                 FOR i% = DRAW TO MAIN 
  965.                     DIR(i%) = MID$( ini$, 1, 1) + MID$( DIR(i%), 2, LEN(DIR(i%))-1 )
  966.                     WriteToLogFile "Dir of " + STR$(i%) + " " + DIR(i%)
  967.                 NEXT i%
  968.      ''        szSymbolDir$ = MID$( ini$, 1, 1) + MID$( szSymbolDir$, 2, LEN(szSymbolDir$)-1 )
  969.         ENDIF
  970.         ProgramsDir$    = MakePath( DIR(MAIN), "PROGRAMS")
  971.         WriteToLogFile "ProgramsDir: "+ProgramsDir$
  972.         DataDir$            = MakePath( DIR(MAIN), "PROGRAMS\DATA")
  973.         WriteToLogFile "DataDir: "+DataDir$
  974.         CustomDir$        = MakePath( DIR(MAIN), "CUSTOM" )
  975.         WriteToLogFile "CustomDir: "+CustomDir$
  976.         FiltersDir$        = MakePath( DIR(MAIN), "PROGRAMS")
  977.         WriteToLogFile "FiltersDir: "+FiltersDir$
  978.         ConfigDir$        = MakePath( DIR(MAIN), "CONFIG")
  979.         WriteToLogFile "ConfigDir: "+ConfigDir$
  980.     ELSE
  981.         bBack% = TRUE
  982.     ENDIF
  983. END SUB
  984.  
  985. '** Make sure that the long wait dialog is displayed and the hourglass cursor
  986. '** are being used
  987. '*************************************************************************
  988. SUB WaitOnBig STATIC
  989.     IF nWaiting% = 0 THEN
  990.         CursorSave% = ShowWaitCursor()
  991.     ENDIF
  992.     IF nWaiting% <> 2 THEN
  993.         sz$ = UIStartDlg("mscuistf.dll", UPGRDWAIT, "FModelessDlgProc", 0, "")
  994.     ENDIF
  995.     nWaiting% = 2
  996. END SUB
  997.  
  998.  
  999. '** Make sure that the hourglass cursor is being used
  1000. '*************************************************************************
  1001. SUB WaitOn STATIC
  1002.     IF nWaiting% = 0 THEN
  1003.         CursorSave% = ShowWaitCursor()
  1004.         nWaiting% = 1
  1005.     ENDIF
  1006. END SUB
  1007.  
  1008.  
  1009. '** Remove the long wait dialog if it is being displayed and reset the cursor
  1010. '** back to normal if it was set to the hourglass icon
  1011. '*************************************************************************
  1012. SUB WaitOff STATIC
  1013.     IF nWaiting% = 2 THEN
  1014.         UIPop 1
  1015.     ENDIF
  1016.     IF nWaiting% <> 0 THEN
  1017.         RestoreCursor CursorSave%
  1018.     ENDIF
  1019.     nWaiting% = 0
  1020. END SUB
  1021.  
  1022.  
  1023.  
  1024. '** Wrapper function - should reduce size of code segment.
  1025. '**
  1026. '** FileChangeString replaces szString1$ in szFile1$ with szString2$.
  1027. '** szFile2$ is a temporary file name.
  1028. '*************************************************************************
  1029. SUB    WrapFileChangeString( szFile1$, szFile2$, szString1$, szString2$ ) STATIC
  1030.     FileChangeString szFile1$, szFile2$, szString1$, szString2$
  1031. END SUB
  1032.  
  1033.  
  1034. '** Wrapper function - should reduce size of code segment.
  1035. '**
  1036. '** CommentIniSection checks to see whether or not the files mentioned in
  1037. '** szSection$ can be found in directory szPath$. If not, it sticks a ';'
  1038. '** in front of that line of the ini file. Otherwise it makes sure there
  1039. '** is not semi-colon commenting out that line.
  1040. '** Note: this function is heavily dependent on the format of coreldrw.ini
  1041. '*************************************************************************
  1042. SUB    WrapCommentIniSection( szFileName$, szTempFile$, szSection$, szPath$ ) STATIC
  1043.     CommentIniSection szFileName$, szTempFile$, szSection$, szPath$
  1044. END SUB
  1045.  
  1046.  
  1047. '** If the second file does not exist, backup szFile1$ as szFile2$
  1048. '*************************************************************************
  1049. SUB CheckBackupFile( szFile1$, szFile2$ ) STATIC
  1050.     IF DoesFileExist(szFile2$,femExists) = 0 AND DoesFileExist(szFile1$,femExists) THEN
  1051.         CopyFile szFile1$, szFile2$, cmoNone, 0
  1052.     ENDIF
  1053. END SUB
  1054.  
  1055.  
  1056.  
  1057. '***********************************************************************
  1058. '***********************************************************************
  1059. '**** CalculateRequiredSpace on the destination disk    ******************
  1060. '***********************************************************************
  1061. SUB CalculateRequiredSpace STATIC
  1062.  
  1063.         WriteToLogFile "SUB CalculateRequiredSpace"
  1064.         bTooBig% = FALSE
  1065.         StillNeed& = GetCopyListCost(EXTRACOSTS$, aszNEEDS$, "")
  1066.         IF StillNeed& THEN
  1067.             bTooBig% = TRUE
  1068.         ENDIF
  1069.         WriteToLogFile "ENDSUB CalculateRequiredSpace"
  1070.  
  1071. END SUB
  1072.  
  1073. '***********************************************************************
  1074. '***********************************************************************
  1075. '**** CheckInstalledFiletrs and Updated the installed ones    ************
  1076. '***********************************************************************
  1077. SUB CheckInstalledFilters( szSection$ ) STATIC
  1078.  
  1079.         MakeListFromSectionKeys TempList$, szSection$
  1080.         FOR i% = 1 TO GetListLength(TempList$)
  1081.             szFilterName$ = GetSectionKeyFilename(szSection$ , GetListItem(TempList$, i%))
  1082.             index% = GetFilenameFromPath( szFilterName$ )
  1083.             szFilterName2$ = MID$( szFilterName$, index%, LEN(szFilterName$) - index% + 1 )
  1084.             IF DoesFileExist( MakePath(FiltersDir$, szFilterName2$), femExists ) THEN
  1085.                 AddSectionKeyFileToCopyList szSection$, GetListItem(TempList$, i%), SrcDir$, FiltersDir$
  1086.             ENDIF
  1087.         NEXT i%
  1088.  
  1089. END SUB
  1090.