home *** CD-ROM | disk | FTP | other *** search
/ Corel Draw 3 / CorelDRAW-v3.0.iso / net.mst < prev    next >
Text File  |  1992-10-25  |  32KB  |  800 lines

  1. '' $Keywords: net.mst 1.25 16Nov92 01:22pm$ $nokeywords$
  2. '**************************************************************************
  3. '*                       CorelTools setup script
  4. '**************************************************************************
  5. ''    Date         Name                Reason
  6. ''-------------------------------------------------------------------------
  7. '' Feb 25 1992  Randall Mack    Modified from sample2.mst provided with
  8. ''                              Windows SDK 3.1 Beta.
  9. '' Jun  1 1992  Randall Mack    Modified from draw.mst and draw2.mst to
  10. ''                              serve as a net install
  11.  
  12. '$INCLUDE 'setupapi.inc'
  13.  
  14. ''C functions
  15. DECLARE SUB                InitializeInstall LIB "mscuistf.dll" (hInstance%, hMainWind% )
  16. DECLARE SUB                ShutDownInstall LIB "mscuistf.dll"
  17. DECLARE SUB                RegisterFont LIB "mscuistf.dll" (szFOTName$, szTTFName$) 
  18. DECLARE SUB                FileChangeString LIB "mscuistf.dll" (szFile1$, szFile2$, szString1$, szString2$)
  19. DECLARE SUB                ExecCommand LIB "mscuistf.dll" (szCommand$)
  20. DECLARE SUB                InitPrintTestFile LIB "mscuistf.dll"
  21. DECLARE SUB                ShutDownPrintTestFile LIB "mscuistf.dll"
  22. DECLARE SUB                CommentIniSection LIB "mscuistf.dll" (szFileName$, szTempFile$, szSection$, szPath$ )
  23. DECLARE FUNCTION    PrintTestFile LIB "mscuistf.dll" (szFilename$, bLast% ) AS INTEGER
  24. DECLARE FUNCTION    ScanList LIB "mscuistf.dll" (szSymbol$, nIndex%) AS INTEGER
  25. DECLARE FUNCTION    GetFilenameFromPath LIB "mscuistf.dll" (szPath$) AS INTEGER
  26. DECLARE FUNCTION    IsTTFEnabled LIB "mscuistf.dll" AS INTEGER
  27. DECLARE FUNCTION    GetMinFileSize LIB "mscuistf.dll" (szDrive%) AS INTEGER
  28.  
  29. '$INCLUDE 'translat.inc'
  30.  
  31. ''Strings for loading string resources
  32. GLOBAL szString$
  33. CONST     STRINGLEN =    66
  34. szString$ = string$( STRINGLEN+1, 32 )
  35.  
  36. ''setup main window
  37. CONST LOGO                            = 9100            ''must match the constant in dialogs.h
  38. SetTitle TR_TITLE
  39. InitializeInstall hinstFrame(), HwndFrame()        ''corel style buttons; max window
  40. SetBitmap "mscuistf.dll", LOGO
  41.  
  42. '$INCLUDE 'msdetect.inc'
  43.  
  44. '$DEFINE DEBUG  ''Define for script development/debugging
  45.  
  46. ''Dialog ID's
  47. ''Note: These constants MUST match the constants in dialogs.h
  48. CONST WELCOME            = 9900
  49. CONST ASKQUIT            = 9901
  50. CONST DESTPATH           = 9902
  51. CONST EXITFAILURE        = 9903
  52. CONST EXITQUIT           = 9904
  53. CONST BADPATH            = 9909
  54. CONST WAIT                    = 9919
  55. CONST ASKINSTALL        = 9922
  56. CONST BILLBOARD            = 9926
  57. CONST UPDATEDAUTOEXEC    = 9930
  58. CONST UPDATEAUTOEXEC    = 9931
  59. CONST WAITREGISTER    = 9932
  60. CONST BADGROUP            = 9933
  61. CONST LOCPATH                = 9934
  62. CONST WRONGDIR            = 9935
  63. CONST PRINTTEST            = 9937
  64. CONST SUCCESS                = 9938
  65. CONST CDTOOBIG            = 9940
  66. CONST NETWELCOME        = 9942
  67. CONST NETTOOBIG            = 9947
  68. CONST NETADDITEMFAILED    = 9949
  69. CONST NETEXITSUCCESS    = 9948
  70. CONST NETUSERABOUT    = 9951
  71. CONST WELCOMEHELP        = 9800
  72. CONST GETPATHHELP   = 9802
  73. CONST ASKINSTALLHELP        = 9808
  74. CONST PRINTTESTHELP        = 9811
  75.  
  76. ''Constants representing each line in the custinst dialog
  77. CONST DRAW          = 1
  78. CONST CHART         = 2
  79. CONST SHOW            = 3
  80. CONST PHOTO            = 4
  81. CONST TRACE            = 5
  82. CONST MOSAIC        = 6
  83. CONST FONTSYM        = 7
  84. CONST NUMCUST      = FONTSYM
  85. CONST MAIN            = NUMCUST + 1
  86. CONST NUMGROUPS    = MAIN
  87.  
  88. CONST FALSE    = 0
  89. CONST TRUE    = 1
  90.  
  91. ''used as a parm to GetCopyListCost only
  92. GLOBAL EXTRACOSTS$
  93. EXTRACOSTS$ = "ExtraCosts"
  94. GLOBAL bTooBig%
  95. bTooBig% = FALSE
  96. GLOBAL fInstallATM$            '' Should the type 1 fonts be installed?
  97. GLOBAL bInstallWinDLL%    '' Should the dlls be copied to the windows system dir?
  98.                                                 '' Note: redists are always copied under win 3.0
  99. bInstallWinDLL% = FALSE
  100.  
  101. ''list of sections (1..NUMGROUPS)
  102. GLOBAL DIR(NUMGROUPS) AS STRING        ''list of directories for main options
  103.  
  104. GLOBAL WINDIR$        ''Windows directory
  105. GLOBAL WINSYSDIR$    ''Windows directory
  106. GLOBAL WINDRIVE$    ''Windows drive letter
  107. GLOBAL szWWinDir$    ''Writable Windows directory
  108. GLOBAL szFontDir$    ''Location of TTF files
  109. GLOBAL DEST$        ''destination directory
  110. GLOBAL LOCATION$     ''location of network files to install
  111.  
  112. GLOBAL TOOLGROUP$                    '' Group in which tools are to be installed
  113.  
  114. ''Windows version number
  115. GLOBAL WinMinor%
  116. GLOBAL bWindowsIsNetworked%
  117.  
  118. ''Variables to fake subroutines with parameters
  119. GLOBAL Dialog%
  120.  
  121. ''Globals for WaitOn and WaitOff
  122. GLOBAL nWaiting%
  123. GLOBAL CursorSave%
  124.  
  125. Global bPathAltered%    '' If set then autoexec.bat has been changed
  126.  
  127. ''local MSTest functions
  128. DECLARE SUB WaitOnBig
  129. DECLARE SUB WaitOn
  130. DECLARE SUB WaitOff
  131. DECLARE SUB SetDirectories
  132. DECLARE SUB RecalcAll
  133. DECLARE SUB TestAddSectionFilesToCopyList (szSection$,szFrom$,szTo$)
  134. DECLARE    SUB    CheckBackupFile( szFile1$, szFile2$ )
  135. DECLARE SUB    WrapCommentIniSection( szFileName$, szTempFile$, szSection$, szPath$ )
  136. DECLARE FUNCTION CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) AS INTEGER
  137. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  138. DECLARE FUNCTION MakeDir (szDir$) AS STRING
  139.  
  140. INIT:
  141.     '' set waiting cursor
  142.     nWaiting% = 0
  143.     WaitOn
  144.     
  145.     ''Set default directory names
  146.     WINDIR$ = GetWindowsDir
  147.     WINSYSDIR$ = GetWindowsSysDir
  148.     WINDRIVE$ = MID$(WINDIR$, 1, 1)
  149.     OpenLogfile MakePath(WINDIR$, TR_LOGFILE), 0
  150.     WriteToLogFile TR_INSTALLNETUSER
  151.     
  152.     bWindowsIsNetworked% = IsDriveNetwork( MID$(WINSYSDIR$,1,1) )
  153.     IF bWindowsIsNetworked% THEN
  154.         szWWinDir$ = WINDIR$            '' copy files to users personal directory
  155.         WriteToLogFile TR_NETWINDOWS
  156.     ELSE
  157.         szWWinDir$ = WINSYSDIR$        '' copy files to users Windows system directory
  158.     ENDIF
  159.     
  160.     DEST$ = WINDRIVE$ + ":\"+TR_CORELDRW
  161.     LOCATION$ = GetSymbolValue("STF_SRCDIR")
  162.     SetSymbolValue EXTRACOSTS$, "{""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0"",""0""}"
  163.  
  164.     ''find and read .inf file
  165.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  166.     IF szInf$ = "" THEN
  167.         szInf$ = MakePath( GetSymbolValue("STF_CWDDIR"), "net.inf" )
  168.     ENDIF
  169.     ReadInfFile szInf$
  170.     szInf$ = ""
  171.  
  172.     ''Set windows version - for use with installing windows 3.1 DLL's
  173.     WinMinor% = GetWindowsMinorVersion
  174.     IF WinMinor% = 0 THEN
  175.         bInstallWinDLL% = TRUE
  176.     ENDIF
  177.     
  178.     ''set the default progman group to put everything in
  179.     TOOLGROUP$    = TR_TOOLGROUP
  180.  
  181.  
  182. '' Put up the Welcome dialog
  183. WELCOME:
  184.     WaitOff
  185.     sz$ = UIStartDlg( "mscuistf.dll", NETWELCOME, "FInfoDlgProc", WELCOMEHELP, "FHelpDlgProc" )
  186.     SELECT CASE sz$
  187.     CASE "CONTINUE"
  188.         UIPop 1
  189.     CASE "ABOUT"
  190.         Dialog% = NETUSERABOUT
  191.         GOSUB INFO
  192.         GOTO WELCOME
  193.     CASE "REACTIVATE"
  194.         GOTO WELCOME
  195.     CASE ELSE
  196.         GOSUB ASKQUIT
  197.         GOTO WELCOME
  198.     END SELECT
  199.  
  200. '' fall through from WELCOME
  201.     SetDirectories     '' Set DIR(..) to the location of the files on the network
  202. '' select destination directory for files
  203. GETDEST:
  204.     EditDir$ = DEST$
  205.     Dialog% = DESTPATH
  206.     GOSUB GETPATH
  207.     DEST$ = EditDir$
  208.     
  209.     WriteToLogFile TR_BASEDIR + DEST$
  210.     WriteToLogFile ""
  211.     
  212. '' fall through from selecting destination directory
  213. INSTALL:
  214.     WaitOn
  215.     ''Make sure there is enough space for CorelDRAW!
  216.      RecalcAll
  217.     IF bTooBig% = TRUE THEN
  218.         Dialog% = NETTOOBIG
  219.         GOSUB INFO
  220.         GOTO GETDEST
  221.     ENDIF
  222.     
  223.     ''Create all directories needed
  224.     IF DoesFileExist( MakePath(DIR(CHART),TR_CORELCHT_INI), femExists ) = 1 THEN 
  225.         CreateDir MakePath(DEST$,TR_EFFECTS), cmoNone
  226.         CreateDir MakePath(DEST$,TR_TEMP), cmoNone
  227.     ENDIF
  228.     IF DoesFileExist( MakePath(DIR(DRAW),TR_CORELDRW_INI), femExists ) = 1 THEN 
  229.         CreateDir MakePath(DEST$,TR_AUTOBACK), cmoNone
  230.     ENDIF
  231.     
  232.     '' Backup files to *.cor - do not overwrite
  233.     CheckBackupFile MakePath(WINDIR$,"win.ini"), MakePath(WINDIR$,"win.cor")
  234.     CheckBackupFile MakePath(WINDIR$,"reg.dat"), MakePath(WINDIR$,"reg.cor")
  235.     CheckBackupFile MakePath(WINDIR$,"progman.ini"), MakePath(WINDIR$,"progman.cor")
  236.     
  237.      '' Add billboards
  238.     AddToBillBoardList "mscuistf.dll", BILLBOARD, "FModelessBitmapDlgProc", 10
  239.     AddToBillBoardList "mscuistf.dll", BILLBOARD, "FModelessBitmapDlgProc", 10
  240.     AddToBillBoardList "mscuistf.dll", BILLBOARD, "FModelessBitmapDlgProc", 10
  241.     AddToBillBoardList "mscuistf.dll", BILLBOARD, "FModelessBitmapDlgProc", 10
  242.     AddToBillBoardList "mscuistf.dll", BILLBOARD, "FModelessBitmapDlgProc", 10
  243.     AddToBillBoardList "mscuistf.dll", BILLBOARD, "FModelessBitmapDlgProc", 10
  244.     
  245.     '' Disable size checking so I don't have to update the inf file
  246.     temp% = SetSizeCheckMode( scmOff )
  247.     ''Copy all the files over
  248.     WaitOff
  249.     CopyFilesInCopyList
  250.     
  251.     '' Register all the ttf fonts with Windows
  252.     IF WinMinor% > 0 THEN
  253.         IF IsTTFEnabled = 1 THEN
  254.             sz$ = UIStartDlg("mscuistf.dll", WAITREGISTER, "FModelessDlgProc", 0, "")
  255.             MakeListFromSectionKeys "___temp_", "Fonts"
  256.             NeedsList$ = GetSymbolValue( "___temp_" )
  257.             RemoveSymbol( "___temp_" )
  258.             nIndex% = 0
  259.             nIndexInc% = ScanList(NeedsList$,nIndex%)
  260.             WHILE nIndexInc% > 0
  261.                 szFilename$ = GetSectionKeyFilename( "Fonts", MID$(NeedsList$, nIndex%+3, nIndexInc%-3) )
  262.                 IF DoesFileExist( MakePath(szFontDir$,szFilename$), femExists) = 1 THEN 
  263.                     szFOTName$ = MID$(szFilename$,1,LEN(szFilename$)-3) + "fot"
  264.                     RegisterFont MakePath(szWWinDir$,szFOTName$), MakePath(szFontDir$,szFilename$)
  265.                     temp% = GetTypeFaceNameFromTTF( MakePath(szFontDir$,szFilename$), szString$, STRINGLEN )
  266.                     CreateIniKeyValue TR_WIN_INI, "fonts", szString$+" "+TR_TRUETYPE, UCASE$(szFOTName$), cmoOverWrite
  267.                 ENDIF
  268.                 nIndex% = nIndex% + nIndexInc%
  269.                 nIndexInc% = ScanList(NeedsList$,nIndex%)
  270.             WEND
  271.             UIPop 1
  272.         ENDIF
  273.     ENDIF
  274.     szFilename$ = ""
  275.     szFOTName$ = ""
  276.     NeedsList$ = ""
  277.  
  278.     nAddItemFailed% = 0
  279.     
  280.     '' setup coreldrw.reg
  281.     IF DoesFileExist( MakePath(DIR(DRAW),TR_CORELDRW_INI), femExists ) = 1 THEN 
  282.         FileChangeString MakePath(DEST$,TR_CORELDRW_REG), MakePath(DEST$,"___temp_"), TR_CORELDRW_EXE, MakePath(DIR(DRAW),TR_CORELDRW_EXE)
  283.         ExecCommand TR_REGLOAD_S + " " + MakePath(DEST$,TR_CORELDRW_REG)
  284.                 
  285.         ini$ = MakePath(DEST$, TR_CORELDRW_INI)
  286.         CreateIniKeyValue TR_WIN_INI, "Extensions", "cdr", MakePath(DIR(DRAW),TR_CORELDRW_EXE+" ^.cdr"), cmoOverWrite
  287.         CreateIniKeyValue TR_WIN_INI, "CorelDraw3", "DrawDir", MakeDir(DEST$), cmoOverWrite
  288.         CreateIniKeyValue ini$, "CDrawConfig", "Applic", MakeDir(DIR(DRAW)), cmoOverwrite
  289.         CreateIniKeyValue ini$, "CDrawConfig", "ConfigDir", MakeDir(DEST$), cmoOverwrite
  290.         CreateIniKeyValue ini$, "CDrawConfig", "FontsDir", MakeDir(DIR(FONTSYM)), cmoOverwrite
  291.         CreateIniKeyValue ini$, "CDrawConfig", "CorelFiltersDir", MakePath(DIR(MAIN),TR_FILTERS), cmoOverwrite
  292.         CreateIniKeyValue ini$, "CDrawConfig", "AutoBackupDir", MakePath(DEST$,TR_AUTOBACK), cmoOverwrite
  293.         CreateIniKeyValue ini$, "Mosaic", "Applic", MakePath(DIR(MOSAIC),TR_CORELMOS_EXE), cmoOverwrite
  294.         WrapCommentIniSection ini$, MakePath(DEST$,"___temp_"), "CDrawImportFilters", MakePath(DIR(MAIN),TR_FILTERS+"\")
  295.         WrapCommentIniSection ini$, MakePath(DEST$,"___temp_"), "CDrawExportFilters", MakePath(DIR(MAIN),TR_FILTERS+"\")
  296.         WrapCommentIniSection ini$, MakePath(DEST$,"___temp_"), "CorelDrwFonts", MakePath(DIR(FONTSYM),"")
  297.         WrapCommentIniSection ini$, MakePath(DEST$,"___temp_"), "CorelDrwSymbols", MakePath(DIR(FONTSYM),"")
  298.         
  299.         CreateProgmanGroup TOOLGROUP$, "", cmoNone
  300.         ShowProgmanGroup  TOOLGROUP$, 1, cmoNone
  301.         nAddItemFailed% = nAddItemFailed% + CreateProgmanItem( TOOLGROUP$, TR_RELEASENOTES, TR_NOTEPAD_EXE + " " + MakePath(DIR(MAIN),TR_README_TXT), "", cmoOverwrite)
  302.         nAddItemFailed% = nAddItemFailed% + CreateProgmanItem( TOOLGROUP$, TR_CORELDRAW, MakePath(DIR(DRAW),TR_CORELDRW_EXE),"", cmoOverwrite)
  303.     ENDIF
  304.     IF DoesFileExist( MakePath(DIR(DRAW),TR_TUTORIAL_HLP), femExists ) = 1 THEN 
  305.         IF WinMinor% = 0 THEN
  306.             nAddItemFailed% = nAddItemFailed% + CreateProgmanItem( TOOLGROUP$, TR_CORELDRAW+" "+TR_TUTORIAL, MakePath(WINSYSDIR$,TR_WINHELP)+" "+MakePath(DIR(DRAW),TR_TUTORIAL_HLP), "", cmoOverwrite)
  307.         ELSE
  308.             nAddItemFailed% = nAddItemFailed% + CreateProgmanItem( TOOLGROUP$, TR_CORELDRAW+" "+TR_TUTORIAL, TR_WINHELP+" "+MakePath(DIR(DRAW),TR_TUTORIAL_HLP), "", cmoOverwrite)
  309.         ENDIF
  310.     ENDIF
  311.  
  312.     '' setup corelcht.reg
  313.     IF DoesFileExist( MakePath(DIR(CHART),TR_CORELCHT_INI), femExists ) = 1 THEN 
  314.         FileChangeString MakePath(DEST$,TR_CORELCHT_REG), MakePath(DEST$,"___temp_"), TR_CORELCHT_EXE, MakePath(DIR(CHART),TR_CORELCHT_EXE)
  315.         ExecCommand TR_REGLOAD_S + " " + MakePath(DEST$,TR_CORELCHT_REG)
  316.         
  317.         CreateIniKeyValue TR_WIN_INI, "Extensions", "cch", MakePath(DIR(CHART),TR_CORELCHT_EXE+" ^.cch"), cmoOverWrite
  318.         CreateIniKeyValue TR_WIN_INI, "CorelDraw3", "ChartDir", MakeDir(DEST$), cmoOverWrite
  319.         ini$ = MakePath(WINDIR$, "CORELCHT.INI")
  320.         CreateIniKeyValue ini$, "CorelChart", "GATO_PATH", MakeDir(DIR(CHART)), cmoOverwrite
  321.         CreateIniKeyValue ini$, "CorelChart", "F3DF_3DRISER", MakePath(DIR(CHART),TR_3DRISER), cmoOverwrite
  322.         CreateIniKeyValue ini$, "CorelChart", "F3DF_3DSCAT", MakePath(DIR(CHART),TR_3DSCAT), cmoOverwrite
  323.         CreateIniKeyValue ini$, "CorelChart", "F3DF_AREA", MakePath(DIR(CHART),TR_AREA), cmoOverwrite
  324.         CreateIniKeyValue ini$, "CorelChart", "F3DF_BAR", MakePath(DIR(CHART),TR_BAR), cmoOverwrite
  325.         CreateIniKeyValue ini$, "CorelChart", "F3DF_HILO", MakePath(DIR(CHART),TR_HILO), cmoOverwrite
  326.         CreateIniKeyValue ini$, "CorelChart", "F3DF_HIST", MakePath(DIR(CHART),TR_HIST), cmoOverwrite
  327.         CreateIniKeyValue ini$, "CorelChart", "F3DF_LINE", MakePath(DIR(CHART),TR_LINE), cmoOverwrite
  328.         CreateIniKeyValue ini$, "CorelChart", "F3DF_PICTO", MakePath(DIR(CHART),TR_PICTO), cmoOverwrite
  329.         CreateIniKeyValue ini$, "CorelChart", "F3DF_PIE", MakePath(DIR(CHART),TR_PIE), cmoOverwrite
  330.         CreateIniKeyValue ini$, "CorelChart", "F3DF_SCATTER", MakePath(DIR(CHART),TR_SCATTER), cmoOverwrite
  331.         CreateIniKeyValue ini$, "CorelChart", "F3DF_SPECTRAL", MakePath(DIR(CHART),TR_SPECTRAL), cmoOverwrite
  332.         CreateIniKeyValue ini$, "CorelChart", "F3DF_TABLE", MakePath(DIR(CHART),TR_TABLE), cmoOverwrite
  333.         CreateIniKeyValue ini$, "CorelChart", "F3FX_EFFECTS", MakePath(DEST$,TR_EFFECTS), cmoOverwrite
  334.         CreateIniKeyValue ini$, "CorelChart", "F3FX_FILTERS", MakePath(DIR(MAIN),TR_FILTERS), cmoOverwrite
  335.         CreateIniKeyValue ini$, "CorelChart", "F3FX_TEMPDIR", MakePath(DEST$,TR_TEMP), cmoOverwrite
  336.         CreateIniKeyValue ini$, "CorelChart", "F3FX_PICTIONARY", MakePath(DIR(CHART),TR_BITMAPS), cmoOverwrite
  337.         CreateIniKeyValue ini$, "CorelChart", "Vector_path", MakePath(DIR(CHART),TR_VECTORS), cmoOverwrite
  338.         nAddItemFailed% = nAddItemFailed% + CreateProgmanItem( TOOLGROUP$, TR_CORELCHART, MakePath(DIR(CHART),TR_CORELCHT_EXE), "", cmoOverwrite)
  339.     ENDIF
  340.     
  341.     IF DoesFileExist( MakePath(DIR(SHOW),TR_CORELSHW_INI), femExists ) = 1 THEN 
  342.         '' setup corelshw.reg
  343.         FileChangeString MakePath(DEST$,TR_CORELSHW_REG), MakePath(DEST$,"___temp_"),TR_CORELSHW_EXE, MakePath(DIR(SHOW),TR_CORELSHW_EXE)
  344.         ExecCommand TR_REGLOAD_S + " " + MakePath(DEST$,TR_CORELSHW_REG)
  345.         
  346.         CreateIniKeyValue TR_WIN_INI, "Extensions", "shw", MakePath(DIR(SHOW),TR_CORELSHW_EXE+" ^.shw"), cmoOverWrite
  347.         CreateIniKeyValue TR_WIN_INI, "Extensions", "shb", MakePath(DIR(SHOW),TR_CORELSHW_EXE+" ^.shb"), cmoOverWrite
  348.         CreateIniKeyValue TR_WIN_INI, "CorelDraw3", "ShowDir", MakeDir(DEST$), cmoOverWrite
  349.         CreateIniKeyValue TR_WIN_INI, "AAPLAY Animation", "WaveAudio", "c,522", cmoOverWrite
  350.         CreateIniKeyValue TR_WIN_INI, "AAPLAY Animation", "Sequencer", "x,523", cmoOverWrite
  351.         CreateIniKeyValue TR_WIN_INI, "AAPLAY Animation", "FullScreen", "AAVGA.DLL", cmoOverWrite
  352.         CreateIniKeyValue TR_WIN_INI, "AAPLAY Animation", "DualScreen", "no", cmoOverWrite
  353.         ini$ = MakePath(DEST$, TR_CORELSHW_INI)
  354.         CreateIniKeyValue ini$, "CShowConfig", "ConfigDir", MakeDir(DIR(SHOW)), cmoOverWrite
  355.         CreateIniKeyValue ini$, "MasterBackGround", "defaultfile", MakePath(DIR(SHOW),TR_BACKGRDS+"\"+TR_SAMPLE_SHB), cmoOverwrite
  356.         nAddItemFailed% = nAddItemFailed% + CreateProgmanItem( TOOLGROUP$, TR_CORELSHOW, MakePath(DIR(SHOW),TR_CORELSHW_EXE), "", cmoOverwrite)
  357.     ENDIF
  358.     IF DoesFileExist( MakePath(DIR(SHOW),TR_SHOWRUN+"\"+TR_SHOWRUN_EXE), femExists ) = 1 THEN 
  359.         nAddItemFailed% = nAddItemFailed% + CreateProgmanItem( TOOLGROUP$, TR_CORELSHOW_RUNTIME_PLAYER, MakePath(DIR(SHOW),TR_SHOWRUN+"\"+TR_SHOWRUN_EXE), "", cmoOverwrite)
  360.     ENDIF
  361.     
  362.     IF DoesFileExist( MakePath(DIR(PHOTO),TR_CORELPNT_INI), femExists ) = 1 THEN 
  363.         '' Register photo with OLE
  364.         FileChangeString MakePath(DEST$,TR_CORELPNT_REG), MakePath(DEST$,"___temp_"),TR_CORELPNT_EXE, MakePath(DIR(PHOTO),TR_CORELPNT_EXE)
  365.         FileChangeString MakePath(DEST$,TR_CORELPNT_REG), MakePath(DEST$,"___temp_"),TR_PNTHNDLR_DLL, MakePath(DIR(PHOTO),TR_PNTHNDLR_DLL)
  366.         ExecCommand TR_REGLOAD_S + " " + MakePath(DEST$,TR_CORELPNT_REG)
  367.         
  368.         CreateIniKeyValue TR_WIN_INI, "Extensions", "pcx", MakePath(DIR(PHOTO),TR_CORELPNT_EXE+" ^.pcx"), cmoOverWrite
  369.         CreateIniKeyValue TR_WIN_INI, "CorelDraw3", "PhotoPaintDir", MakeDir(DEST$), cmoOverWrite
  370.         ini$ = MakePath(DEST$,TR_CORELPNT_INI)
  371.         CreateIniKeyValue ini$, "CorelPaintDll", "PCX 16 Color/Gray", MakePath(DIR(PHOTO),"pcx16.dll,*.pcx"), cmoOverWrite
  372.         nAddItemFailed% = nAddItemFailed% + CreateProgmanItem( TOOLGROUP$, TR_CORELPHOTO, MakePath(DIR(PHOTO),TR_CORELPNT_EXE), "", cmoOverwrite)
  373.         nAddItemFailed% = nAddItemFailed% + CreateProgmanItem( TOOLGROUP$, TR_CCAPTURE, MakePath(DIR(PHOTO),TR_CCAPTURE_EXE), "", cmoOverwrite)
  374.     ENDIF
  375.  
  376.     IF DoesFileExist( MakePath(DIR(TRACE),TR_CORELTRC_INI), femExists ) = 1 THEN 
  377.         CreateIniKeyValue TR_WIN_INI, "CorelDraw3", "TraceDir", MakeDir(DEST$), cmoOverWrite
  378.         ini$ = MakePath(DEST$,TR_CORELTRC_INI)
  379.         CreateIniKeyValue ini$, "CorelTrace", "OutPath", MakePath(WINDIR$,""), cmoOverWrite
  380.         CreateIniKeyValue ini$, "CorelTrace", "InPath", MakePath(WINDIR$,""), cmoOverWrite
  381.         CreateIniKeyValue ini$, "CorelTrace", "ApplPath", MakeDir(DIR(TRACE)), cmoOverWrite
  382.         CreateIniKeyValue ini$, "CorelTrace", "TraceFiltersDir", MakePath(DIR(MAIN),TR_FILTERS+"\"), cmoOverWrite
  383.         nAddItemFailed% = nAddItemFailed% + CreateProgmanItem( TOOLGROUP$, TR_CORELTRACE, MakePath(DIR(TRACE),TR_CORELTRC_EXE), "", cmoOverwrite)
  384.     ENDIF
  385.  
  386.     IF DoesFileExist( MakePath(DIR(MOSAIC),TR_CORELMOS_EXE), femExists ) = 1 THEN 
  387.         CreateIniKeyValue TR_WIN_INI, "CorelDraw3", "MosaicDir", MakeDir(DEST$), cmoOverwrite
  388.         nAddItemFailed% = nAddItemFailed% + CreateProgmanItem( TOOLGROUP$, TR_CORELMOSAIC, MakePath(DIR(MOSAIC),TR_CORELMOS_EXE), "", cmoOverwrite)
  389.     ENDIF
  390.     ini$ = ""
  391.  
  392.     IF nAddItemFailed% > 0 THEN
  393.         Dialog% = NETADDITEMFAILED
  394.         GOSUB INFO
  395.     ENDIF
  396.     
  397.     '' Prepend the chart directory to the users path if possible
  398.     IF WinMinor% = 0 AND DoesFileExist( MakePath(DIR(CHART),TR_CORELCHT_INI), femExists ) = 1 THEN 
  399.         bPathAltered% = FALSE
  400.         IF DoesFileExist("C:\"+TR_AUTOEXEC_BAT,femWrite) = 1 AND DoesFileExist("C:\"+TR_AUTOEXEC_BAK,femRead) = 0 THEN
  401.             szPath$ = GetEnvVariableValue( "path" )
  402.             IF LEN( szPath$ ) + LEN( MakeDir(DIR(CHART)) ) < 128 THEN
  403.                 RenameFile "C:\"+TR_AUTOEXEC_BAT, TR_AUTOEXEC_BAK
  404.                 PrependToPath "C:\"+TR_AUTOEXEC_BAK, "C:\"+TR_AUTOEXEC_BAT, MakeDir(DIR(CHART)), cmoNone
  405.                 bPathAltered% = TRUE
  406.             ENDIF
  407.         ENDIF
  408.         '' Display the info dialog telling the user what we did
  409.         IF bPathAltered% = TRUE THEN
  410.             Dialog% = UPDATEDAUTOEXEC
  411.             GOSUB INFO
  412.         ELSE
  413.             Dialog% = UPDATEAUTOEXEC
  414.             GOSUB INFO
  415.         ENDIF
  416.     ENDIF
  417.  
  418. '' ask the user whether or not to print the test samples
  419. PRINTTEST:
  420.     IF DoesFileExist( MakePath(DIR(DRAW),TR_SAMPLES+"\"+TR_SCREENS_CDR), femExists ) = 1 THEN 
  421.         WaitOff
  422.         sz$ = UIStartDlg( "mscuistf.dll", PRINTTEST, "FButtonsDlgProc", PRINTTESTHELP, "FHelpDlgProc" )
  423.         SELECT CASE sz$
  424.         CASE "P"
  425.             UIPop(1)
  426.             ini$ = MakePath(DEST$, TR_CORELDRW_INI)
  427.             CreateIniKeyValue ini$, "CDrawConfig", "MaximizeCDraw", "1", cmoOverwrite
  428.             InitPrintTestFile
  429.             IF PrintTestFile( MakePath( DIR(DRAW), TR_SAMPLES+"\"+TR_SCREENS_CDR ), FALSE ) = TRUE THEN
  430.                 bTemp% = PrintTestFile( MakePath( DIR(DRAW), TR_SAMPLES+"\"+TR_COLORBAR_CDR ), TRUE )
  431.             ENDIF
  432.             CreateIniKeyValue ini$, "CDrawConfig", "MaximizeCDraw", "0", cmoOverwrite
  433.             ShutDownPrintTestFile
  434.         CASE "D"
  435.             UIPop(1)
  436.         CASE ELSE
  437.             GOTO PRINTTEST
  438.         END SELECT
  439.     ENDIF
  440.  
  441. '' User has completed run of setup or has unconditionally decided to quit
  442. QUIT:
  443.     WaitOff
  444.     '' On MSTest errors report "setup file corrupted" and abort
  445.     ON ERROR GOTO ERRQUIT
  446.  
  447.     IF ERR = 0 THEN
  448.         sz$ = UIStartDlg("mscuistf.dll", SUCCESS, "FSuccessBitmapDlgProc", 0, "")
  449.         dlg% = NETEXITSUCCESS
  450.         szDlgProc$ = "FInfo075DlgProc"
  451.         WriteToLogFile TR_SETUPSUCCEEDED
  452.     ELSEIF ERR = STFQUIT THEN
  453.         dlg% = EXITQUIT
  454.         szDlgProc$ = "FInfo0DlgProc"
  455.         WriteToLogFile TR_SETUPQUIT
  456.     ELSE
  457.         dlg% = EXITFAILURE
  458.         szDlgProc$ = "FInfo0DlgProc"
  459.         WriteToLogFile TR_SETUPFAILED
  460.     ENDIF
  461.     WriteToLogFile ""
  462.     
  463.  
  464. '' Put up one of the exit message dialog boxes
  465. QUITL1:
  466.     sz$ = UIStartDlg("mscuistf.dll", dlg%, szDlgProc, 0, "")
  467.     IF sz$ = "REACTIVATE" THEN
  468.         GOTO QUITL1
  469.     ENDIF
  470.     UIPopAll
  471.     ShutDownInstall
  472.     CloseLogFile
  473.     END
  474.  
  475.  
  476. '' An error has occurred in MSTest. Tell the user and abort.
  477. ERRQUIT:
  478.     i% = DoMsgBox( TR_ERRQUIT, TR_SETUPMESSAGE, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  479.     WriteToLogFile TR_SETUPCORRUPTED
  480.     WriteToLogFile ""
  481.     ShutDownInstall
  482.     CloseLogFile
  483.     END
  484.  
  485.  
  486. '' Display an information dialog
  487. '' Uses the global Dialog% to identify which dialog to display
  488. INFO:
  489.     WaitOff
  490.     sz$ = UIStartDlg( "mscuistf.dll", Dialog%, "FInfo0DlgProc", 0, "" )
  491.     SELECT CASE sz$
  492.     CASE "CONTINUE"
  493.         ''Do nothing
  494.     CASE "REACTIVATE"
  495.         bRecalc% = TRUE
  496.         GOTO INFO
  497.     CASE "EXIT"
  498.         GOSUB ASKQUIT
  499.         GOTO INFO
  500.     END SELECT
  501.     UIPop 1
  502. RETURN
  503.  
  504.  
  505. '' Get the base directory under which CorelDRAW! will be installed
  506. GETPATH:
  507.     SetSymbolValue "EditTextIn", EditDir$
  508.     SetSymbolValue "EditFocus", "END"
  509. GETPATHL1:
  510.     WaitOff
  511.     sz$ = UIStartDlg("mscuistf.dll", Dialog%, "FEditDlgProc", GETPATHHELP, "FHelpDlgProc")
  512.     SELECT CASE sz$
  513.     CASE "CONTINUE"
  514.         WaitOn
  515.         olddir$ = EditDir$
  516.         EditDir$ = GetSymbolValue("EditTextOut")
  517.  
  518.         ''Validate new path.
  519.         IF IsDirWritable(EditDir$) = 0 THEN
  520.             oldDialog% = Dialog%
  521.             Dialog% = BADPATH
  522.             GOSUB INFO
  523.             Dialog% = oldDialog%
  524.             GOTO GETPATHL1
  525.         ENDIF
  526.  
  527.         ''Set Recalc and change subdirectories if EditDir$ changed
  528.         IF (olddir$ <> EditDir$) AND (olddir$ <> EditDir$+"\") AND (olddir$+"\" <> EditDir$) THEN
  529.             bRecalc% = TRUE
  530.         ENDIF
  531.         olddir$ = ""
  532.         
  533.     CASE "REACTIVATE"
  534.         GOTO GETPATHL1
  535.     CASE "CANCEL", "BACK"
  536.         UIPop 1
  537.         GOTO GETDEST
  538.     CASE ELSE
  539.         GOSUB ASKQUIT
  540.         GOTO GETPATHL1
  541.     END SELECT
  542.     UIPop 1
  543. RETURN
  544.  
  545.  
  546. '' The user has asked to quit - confirm his decision
  547. ASKQUIT:
  548.     WaitOff
  549.     sz$ = UIStartDlg("mscuistf.dll", ASKQUIT, "FQuitDlgProc", 0, "")
  550.     SELECT CASE sz$
  551.     CASE "EXIT"
  552.         UIPopAll
  553.         ERROR STFQUIT
  554.     CASE "REACTIVATE"
  555.         GOTO ASKQUIT
  556.     CASE ELSE
  557.         ''Do nothing
  558.     END SELECT
  559.     UIPop 1
  560. RETURN
  561.  
  562.  
  563. '**
  564. '** Purpose:
  565. '**     Recalculates disk space required to install all net files. Also
  566. '**     sets the copy list to contain all files.
  567. '** Arguments:
  568. '**     none
  569. '** Returns:
  570. '**     none
  571. '*************************************************************************
  572. SUB RecalcAll STATIC
  573.     ClearCopyList
  574.     TestAddSectionFilesToCopyList "Draw", DIR(DRAW), DEST$
  575.     TestAddSectionFilesToCopyList "Chart", DIR(CHART), DEST$
  576.     TestAddSectionFilesToCopyList "Show", DIR(SHOW), DEST$
  577.     TestAddSectionFilesToCopyList "Photo", DIR(PHOTO), DEST$
  578.     TestAddSectionFilesToCopyList "Trace", DIR(TRACE), DEST$
  579.     '' If windows is networked and a cdrmem.dll is there, don't install any of the
  580.     '' redist stuff - assume it is on the net.
  581.     IF bWindowsIsNetworked% = FALSE OR DoesFileExist( MakePath(WINSYSDIR$,TR_REGLOAD_EXE), femExists ) = 0 THEN 
  582.         TestAddSectionFilesToCopyList "Redist", MakePath(DIR(MAIN),TR_REDIST), szWWinDir$
  583.     ENDIF
  584.     TestAddSectionFilesToCopyList "Effects", MakePath(DIR(CHART),TR_EFFECTS), MakePath(DEST$,TR_EFFECTS)
  585.     TestAddSectionFilesToCopyList "ChartIni", DIR(CHART), WINDIR$
  586.     IF WinMinor% = 0 THEN
  587.         bCopyRedist30% = FALSE
  588.         IF DoesFileExist(MakePath(DIR(DRAW),"cdrmem.dll"), femExists) THEN 
  589.             IF bWindowsIsNetworked% = FALSE OR DoesFileExist( MakePath(WINSYSDIR$,"cdrmem.dll"), femExists ) = 0 THEN 
  590.                 TestAddSectionFilesToCopyList "DrawDLL", DIR(DRAW), szWWinDir$
  591.                 bCopyRedist30% = TRUE
  592.             ENDIF
  593.         ENDIF
  594.         IF DoesFileExist(MakePath(DIR(MOSAIC),"cdrmem.dll"), femExists) THEN 
  595.             IF bWindowsIsNetworked% = FALSE OR DoesFileExist( MakePath(WINSYSDIR$,"cdrmem.dll"), femExists ) = 0 THEN 
  596.                 TestAddSectionFilesToCopyList "MosaicDLL", DIR(MOSAIC), szWWinDir$
  597.                 bCopyRedist30% = TRUE
  598.             ENDIF
  599.         ENDIF
  600.         IF DoesFileExist(MakePath(DIR(SHOW),"cdrmem.dll"), femExists) THEN 
  601.             IF bWindowsIsNetworked% = FALSE OR DoesFileExist( MakePath(WINSYSDIR$,"cdrmem.dll"), femExists ) = 0 THEN 
  602.                 TestAddSectionFilesToCopyList "ShowDLL", DIR(SHOW), szWWinDir$
  603.                 bCopyRedist30% = TRUE
  604.             ENDIF
  605.         ENDIF
  606.         IF DoesFileExist(MakePath(DIR(PHOTO),"pcx16.dll"), femExists) THEN 
  607.             IF bWindowsIsNetworked% = FALSE OR DoesFileExist( MakePath(WINSYSDIR$,"pcx16.dll"), femExists ) = 0 THEN 
  608.                 TestAddSectionFilesToCopyList "PhotoDLL", DIR(PHOTO), szWWinDir$
  609.                 bCopyRedist30% = TRUE
  610.             ENDIF
  611.         ENDIF
  612.         IF bCopyRedist30% THEN
  613.             TestAddSectionFilesToCopyList "Redist30", MakePath(DIR(MAIN),TR_REDIST), szWWinDir$
  614.         ENDIF
  615.     ENDIF
  616.  
  617.     ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  618.     IF WinMinor% > 0 THEN
  619.         '' Add extra cost to Windows drive for .fot files + logfile.txt, etc.
  620.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  621.         '' calculate how much space is needed for each .fot file
  622.         minfilesize% = GetMinFileSize( ndrive% )
  623.         filesize% = minfilesize%
  624.         WHILE filesize% < 1350
  625.             filesize% = filesize% + minfilesize%
  626.         WEND
  627.         filesize% = filesize% + 100
  628.         lSpace& = filesize% * 256 + 250000
  629.         ReplaceListItem EXTRACOSTS$, ndrive%, STR$(lSpace&)
  630.     ELSE
  631.     ''Add extra cost to Windows drive for logfile.txt + ini/progman, etc.
  632.         ReplaceListItem EXTRACOSTS$, ndrive%, "250000"
  633.     ENDIF
  634.     
  635.     StillNeed& = GetCopyListCost(EXTRACOSTS$, "temp", "")
  636.     ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  637.     RemoveSymbol( "temp" )
  638.     IF StillNeed& > 0 THEN
  639.         bTooBig% = TRUE
  640.     ELSE
  641.         bTooBig% = FALSE
  642.     ENDIF
  643. END SUB
  644.  
  645.  
  646. '**
  647. '** Purpose:
  648. '**     Removes the optional trailing "\"
  649. '** Arguments:
  650. '**     szDir$  - full directory path (with optional ending "\")
  651. '** Returns:
  652. '**     szDir$ without a trailing "\"
  653. '*************************************************************************
  654. FUNCTION MakeDir (szDir$) STATIC AS STRING
  655.     IF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  656.         MakeDir = MID$( szDir$, 1, LEN(szDir$) - 1 )
  657.     ELSE
  658.         MakeDir = szDir$
  659.     ENDIF
  660. END FUNCTION
  661.  
  662.  
  663. '**
  664. '** Purpose:
  665. '**     Appends a file name to the end of a directory path,
  666. '**     inserting a backslash character as needed.
  667. '** Arguments:
  668. '**     szDir$  - full directory path (with optional ending "\")
  669. '**     szFile$ - filename to append to directory
  670. '** Returns:
  671. '**     Resulting fully qualified path name.
  672. '*************************************************************************
  673. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  674.     MakePath = MakeDir(szDir$) + "\" + szFile$
  675. END FUNCTION
  676.  
  677.  
  678. '** Set the subdirectories to their default values.
  679. '*************************************************************************
  680. SUB SetDirectories STATIC
  681.     ini$ = MakePath( LOCATION$, TR_SETUP_INI )
  682.     DIR(DRAW) = GetIniKeyString( ini$, "Directories", TR_DRAW )
  683.     DIR(CHART) = GetIniKeyString( ini$, "Directories", TR_CHART )
  684.     DIR(SHOW) = GetIniKeyString( ini$, "Directories", TR_SHOW )
  685.     DIR(PHOTO) = GetIniKeyString( ini$, "Directories", TR_PHOTOPNT )
  686.     DIR(TRACE) = GetIniKeyString( ini$, "Directories", TR_TRACE )
  687.     DIR(MOSAIC) = GetIniKeyString( ini$, "Directories", TR_MOSAIC )
  688.     DIR(FONTSYM) = GetIniKeyString( ini$, "Directories", TR_FONTS )
  689.     szFontDir$ = GetIniKeyString( ini$, "Directories", TR_TTF )
  690.     DIR(MAIN) = GetIniKeyString( ini$, "Directories", TR_MAIN )
  691.     IF GetIniKeyString( ini$, "Directories", TR_FIXEDDRIVE ) = "FALSE" THEN
  692.         FOR i% = DRAW TO MAIN STEP 1
  693.             DIR(i%) = MID$( ini$, 1, 1 ) + MID$( DIR(i%), 2, LEN(DIR(i%))-1 )
  694.         NEXT i%
  695.         szFontDir$ = MID$( ini$, 1, 1 ) + MID$( szFontDir$, 2, LEN(szFontDir$)-1 )
  696.     ENDIF
  697. END SUB
  698.  
  699.  
  700. '** Make sure that the long wait dialog is displayed and the hourglass cursor
  701. '** are being used
  702. '*************************************************************************
  703. SUB WaitOnBig STATIC
  704.     IF nWaiting% = 0 THEN
  705.         CursorSave% = ShowWaitCursor()
  706.         sz$ = UIStartDlg("mscuistf.dll", WAIT, "FModelessDlgProc", 0, "")
  707.         nWaiting% = 2
  708.     ELSEIF nWaiting% = 1 THEN
  709.         sz$ = UIStartDlg("mscuistf.dll", WAIT, "FModelessDlgProc", 0, "")
  710.         nWaiting% = 2
  711.     ENDIF
  712. END SUB
  713.  
  714.  
  715. '** Make sure that the hourglass cursor is being used
  716. '*************************************************************************
  717. SUB WaitOn STATIC
  718.     IF nWaiting% = 0 THEN
  719.         CursorSave% = ShowWaitCursor()
  720.         nWaiting% = 1
  721.     ENDIF
  722. END SUB
  723.  
  724.  
  725. '** Remove the long wait dialog if it is being displayed and reset the cursor
  726. '** back to normal if it was set to the hourglass icon
  727. '*************************************************************************
  728. SUB WaitOff STATIC
  729.     IF nWaiting% = 2 THEN
  730.         UIPop 1
  731.         RestoreCursor CursorSave%
  732.         nWaiting% = 0
  733.     ELSEIF nWaiting% = 1 THEN
  734.         RestoreCursor CursorSave%
  735.         nWaiting% = 0
  736.     ENDIF
  737. END SUB
  738.  
  739.  
  740. '**    Adds each file in the given section to the list of files to be copied,
  741. '** after checking to see if the file was installed by the administrator.
  742. '*************************************************************************
  743. SUB TestAddSectionFilesToCopyList (szSection$,szFrom$,szTo$) STATIC
  744.     MakeListFromSectionKeys "___temp_", szSection$
  745.     NeedsList$ = GetSymbolValue( "___temp_" )
  746.     RemoveSymbol "___temp_"
  747.     nIndex% = 0
  748.     nIndexInc% = ScanList(NeedsList$,nIndex%)
  749.     WHILE nIndexInc% > 0
  750.         szKey$ = MID$(NeedsList$, nIndex%+3, nIndexInc%-3)
  751.         szFileName$ = GetSectionKeyFilename( szSection$, szKey$ )
  752.         IF DoesFileExist( MakePath(szFrom$,szFileName$), femExists) = 1 THEN 
  753.             AddSectionKeyFileToCopyList szSection$, szKey$, szFrom$, szTo$
  754.         ENDIF
  755.         nIndex% = nIndex% + nIndexInc%
  756.         nIndexInc% = ScanList(NeedsList$,nIndex%)
  757.     WEND
  758.     szFileName$ = ""
  759.     szKey$ = ""
  760.     NeedsList$ = ""
  761. END SUB
  762.  
  763.  
  764. '** If the second file does not exist, backup szFile1$ as szFile2$
  765. '*************************************************************************
  766. SUB CheckBackupFile( szFile1$, szFile2$ ) STATIC
  767.     IF DoesFileExist(szFile2$,femExists) = 0 AND DoesFileExist(szFile1$,femExists) THEN
  768.         CopyFile szFile1$, szFile2$, cmoNone, 0
  769.     ENDIF
  770. END SUB
  771.  
  772.  
  773. '*************************************************************************
  774. FUNCTION CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) STATIC AS INTEGER
  775.   szItemNew$ = szItem$
  776.   IF szOther$ <> "" THEN
  777.     szItemNew$ = szItem$ + "," + szOther$
  778.   END IF
  779.  
  780.   IF FCreateProgManItem(szGroup$, szItemNew$, szCmd$, cmo%) = 0 THEN
  781.         CreateProgmanItem = 1
  782.     ELSE
  783.         CreateProgmanItem = 0
  784.   END IF
  785.   szItemNew$ = ""
  786. END FUNCTION
  787.  
  788.  
  789. '** Wrapper function - should reduce size of code segment.
  790. '**
  791. '** CommentIniSection checks to see whether or not the files mentioned in
  792. '** szSection$ can be found in directory szPath$. If not, it sticks a ';'
  793. '** in front of that line of the ini file. Otherwise it makes sure there
  794. '** is not semi-colon commenting out that line.
  795. '** Note: this function is heavily dependent on the format of coreldrw.ini
  796. '*************************************************************************
  797. SUB    WrapCommentIniSection( szFileName$, szTempFile$, szSection$, szPath$ ) STATIC
  798.     CommentIniSection szFileName$, szTempFile$, szSection$, szPath$
  799. END SUB
  800.