home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 June A / Pcwk6A98.iso / Wtestowe / Easycad / ECW.MS_ / ECW.MS
Text File  |  1996-05-13  |  12KB  |  382 lines

  1. ' EasyCAD Setup Script for DEMO VERSION
  2. ' Copyright (C) 1994, Evolution Computing. All rights reserved
  3. ' Written by Ken Hill 25-Sep-1994
  4. ' Mods by Scott Boster 08-Oct-1994
  5. ' Mods for DEMO version 05-11-1995
  6. ' Added UPDATE and DXFIN modules 06-01-95
  7. ' Added C_*.* and BC450RTL.DLL  05-14-96
  8.  
  9. '$DEFINE DEBUG  ''Define for script development/debugging
  10.  
  11. '$INCLUDE 'setupapi.inc'
  12. '$INCLUDE 'msdetect.inc'
  13.  
  14. ''Dialog ID's
  15. CONST WELCOME = 100
  16. CONST OPTSELDLG = 101  
  17. CONST USEDPATH = 102
  18. CONST ASKQUIT = 103
  19. CONST EXITFAILURE = 104
  20. CONST EXITQUIT = 105
  21. CONST EXITSUCCESS = 106
  22. CONST APPHELP = 107
  23. CONST BADPATH = 108 
  24. CONST VERERR = 109
  25. CONST CHIPERR = 110
  26. CONST USERINFO = 111
  27. CONST BILLBOARD1 = 112
  28. CONST BILLBOARD2 = 113        
  29. CONST NONAME = 114
  30. CONST NOSERIALNUM = 115   
  31. CONST EXITRESTART = 116
  32.  
  33. ''Bitmap ID
  34. CONST LOGO = 300
  35.  
  36. GLOBAL DEST$        ''Default destination directory. 
  37. GLOBAL DRAWINGDIR$ 
  38. GLOBAL SAMPLESDIR$  
  39. GLOBAL USERNAME$
  40. GLOBAL USERORG$
  41. GLOBAL SERIALNUM$
  42.  
  43. DECLARE SUB Install
  44. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  45.  
  46. INIT:
  47.     CUIDLL$ = "ecwcui.dll"              ''Custom user interface dll
  48.     HELPPROC$ = "HelpDlg"               ''Help dialog procedure
  49.  
  50.     'setup main program windows
  51.     SetBitmap CUIDLL$, LOGO
  52.     SetTitle "EasyCAD Setup"
  53.  
  54.     'default file destination directories                    
  55.     DEST$ = "C:\ECADWIN"             
  56.     DRAWINGSUBDIR$ = ""
  57.     SAMPLESSUBDIR$ = ""     
  58.     
  59.     DRAWINGDIR$ = DEST$ + DRAWINGSUBDIR
  60.     SAMPLESDIR$ = DEST$ + SAMPLESSUBDIR
  61.     
  62.     'User information
  63.     USERNAME="Demo Version"
  64.     USERORG=""
  65.     SERIALNUM="Evaluation Copy"
  66.     
  67.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  68.     IF szInf$ = "" THEN
  69.         szInf$ = GetSymbolValue("STF_CWDDIR") + "ECW.INF"
  70.     END IF
  71.     ReadInfFile szInf$
  72.                         
  73. '$IFDEF DEBUG
  74.  
  75.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  76.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  77.     IF IsDriveValid(WinDrive$) = 0 THEN
  78.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  79.         GOTO QUIT
  80.     END IF
  81.  
  82. '$ENDIF ''DEBUG         
  83.  
  84. WELCOME:
  85.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "InfoDlg", 0, "")
  86.     IF sz$ = "CONTINUE" THEN   
  87.     
  88.         UIPop 1
  89.     ELSEIF sz$ = "REACTIVATE" THEN
  90.         GOTO WELCOME
  91.     ELSE
  92.         GOSUB ASKQUIT
  93.         GOTO WELCOME
  94.     END IF
  95.                      
  96.     'Check windows version                     
  97.     MajVer% = GetWindowsMajorVersion()
  98.     MinVer% = GetWindowsMinorVersion()
  99.     IF MajVer% < 3 OR (MajVer = 3 AND MinVer% = 0) THEN
  100. VERERR:        
  101.         sz$ = UIStartDlg(CUIDLL$, VERERR, "InfoDlg", 0, "")
  102.         IF sz$ = "REACTIVATE" THEN
  103.              GOTO VERERR
  104.         END IF 
  105.         UIPopAll
  106.         ERROR STFQUIT + 1
  107.     END IF
  108.                               
  109.     'Check processor type                              
  110.     IF GetProcessorType() < 3 THEN          
  111. CHIPERR:        
  112.         sz$ = UIStartDlg(CUIDLL$, CHIPERR, "InfoDlg", 0, "")
  113.         IF sz$ = "REACTIVATE" THEN
  114.              GOTO CHIPERR
  115.         END IF 
  116.         UIPopAll
  117.         ERROR STFQUIT + 1
  118.     END IF
  119.  
  120.     SetSymbolValue "DestDir", DEST$
  121.     SetSymbolValue "SamplesDir", SAMPLESDIR$
  122.     SetSymbolValue "DrawingDir", DRAWINGDIR$
  123.     SetSymbolValue "SamplesSubDir", SAMPLESSUBDIR$
  124.     SetSymbolValue "DrawingSubDir", DRAWINGSUBDIR$
  125. OPTSEL:
  126.     sz$ = UIStartDlg(CUIDLL$, OPTSELDLG, "OptSelDlg", APPHELP, HELPPROC$)
  127.     IF sz$ = "CONTINUE" THEN
  128.         DEST$ = GetSymbolValue("DestDir")                      
  129.         SAMPLESDIR$ = GetSymbolValue("SamplesDir")
  130.         DRAWINGDIR$ = GetSymbolValue("DrawingDir")
  131.         IF IsDirWritable(DEST$) = 0 OR IsDirWritable(SAMPLESDIR$) = 0 OR IsDirWritable(DRAWINGDIR$) = 0  THEN
  132.             GOSUB BADPATH
  133.             GOTO OPTSEL
  134.         END IF
  135.         IF DoesDirExist(DEST$) = 1 THEN          
  136. USEDPATH:        
  137.              sz2$ = UIStartDlg(CUIDLL$, USEDPATH, "InfoDlg", 0, "")
  138.              IF sz2$ = "REACTIVATE" THEN
  139.                  GOTO USEDPATH
  140.              END IF
  141.              UIPop 1
  142.              IF sz2$ = "BACK" THEN
  143.                  GOTO OPTSEL
  144.              END IF
  145.         END IF
  146.         UIPop 1
  147.     ELSEIF sz$ = "REACTIVATE" THEN
  148.         GOTO OPTSEL
  149.     ELSE
  150.         GOSUB ASKQUIT
  151.         GOTO OPTSEL
  152.     END IF 
  153.     
  154. '    'Get user information
  155. '   SetSymbolValue "UserName",USERNAME$
  156. '   SetSymbolValue "UserOrg",USERORG$
  157. '   SetSymbolValue "SerialNum",SERIALNUM$
  158. 'USERINFO:
  159. '    sz$ = UIStartDlg(CUIDLL$, USERINFO, "UserInfoDlg", APPHELP, HELPPROC$)
  160. '    IF sz$ = "CONTINUE" THEN
  161. '        USERNAME$ = GetSymbolValue("UserName")                      
  162. '        USERORG$ = GetSymbolValue("UserOrg")                      
  163. '        SERIALNUM$ = GetSymbolValue("SerialNum")                      
  164. '        IF USERNAME$ = "" THEN
  165. 'NONAME:        
  166. '            sz2$ = UIStartDlg(CUIDLL$, NONAME, "InfoDlg", 0, "")
  167. '            IF sz2$ = "REACTIVATE" THEN
  168. '                GOTO NONAME
  169. '            ELSEIF sz2$ = "EXIT" THEN
  170. '                GOSUB ASKQUIT
  171. '                GOTO NONAME
  172. '            END IF
  173. '            UIPop 1        
  174. '            GOTO USERINFO
  175. '        END IF
  176. '        IF SERIALNUM$ = "" THEN
  177. 'NOSERIALNUM:
  178. '            sz2$ = UIStartDlg(CUIDLL$, NOSERIALNUM, "InfoDlg", 0, "")
  179. '            IF sz2$ = "REACTIVATE" THEN
  180. '                GOTO NOSERIALNUM
  181. '            ELSEIF sz2$ = "EXIT" THEN
  182. '                GOSUB ASKQUIT
  183. '                GOTO NOSERIALNUM
  184. '            END IF  
  185. '            
  186. '            UIPop 1        
  187. '            GOTO USERINFO
  188. '        END IF   
  189. '    ELSEIF sz$ = "REACTIVATE" THEN
  190. '        GOTO USERINFO
  191. '    ELSEIF sz$ = "EXIT" THEN
  192. '        GOSUB ASKQUIT
  193. '        GOTO USERINFO        
  194. '    END IF
  195. '    UIPop 1  
  196. '    IF sz$ = "BACK" THEN
  197. '        GOTO OPTSEL
  198. '    ENDIF        
  199. '    
  200. '    'Setup billboard
  201. '    AddToBillboardList CUIDLL$, BILLBOARD1, "BillboardDlg", 100
  202.                         
  203.     Install
  204.     
  205. '   'Clean everything up
  206. '   ClearBillboardList
  207.  
  208.     ClearCopyList
  209.     RemoveSymbol "DestDir"
  210.     RemoveSymbol "SamplesDir"
  211.     RemoveSymbol "DrawingDir"
  212.     RemoveSymbol "SamplesSubDir"
  213.     RemoveSymbol "DrawingSubDir"
  214.     RemoveSymbol "UserName"
  215.     RemoveSymbol "UserOrg"
  216.     RemoveSymbol "SerialNum"
  217.  
  218. QUIT:
  219.     ON ERROR GOTO ERRQUIT
  220.  
  221.     IF ERR = 0 THEN 
  222.         IF RestartListEmpty() = 1 THEN
  223.            dlg% = EXITSUCCESS
  224.         ELSE 
  225.            dlg% = EXITRESTART
  226.         ENDIF
  227.     ELSEIF ERR = STFQUIT THEN
  228.         dlg% = EXITQUIT
  229.     ELSE
  230.         dlg% = EXITFAILURE
  231.     END IF
  232. QUITL1:
  233.     sz$ = UIStartDlg(CUIDLL$, dlg%, "InfoDlg", 0, "")
  234.     IF sz$ = "REACTIVATE" THEN
  235.         GOTO QUITL1
  236.     END IF
  237.     UIPop 1  
  238.     IF sz$ = "EXIT" THEN
  239.         dlg% = EXITQUIT
  240.         GOTO QUITL1
  241.     END IF
  242.     IF dlg% = EXITRESTART THEN
  243.         i% = ExitExecRestart()
  244.     END IF
  245.  
  246.     END
  247.  
  248. ERRQUIT:
  249.     i% = DoMsgBox("Setup resources were corrupted, call (602) 967-8633!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  250.     END
  251.  
  252. BADPATH:
  253.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "InfoDlg", 0, "")
  254.     IF sz$ = "REACTIVATE" THEN
  255.         GOTO BADPATH
  256.     END IF
  257.     UIPop 1
  258.     RETURN
  259.  
  260. ASKQUIT:
  261.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "InfoDlg", 0, "")
  262.  
  263.     IF sz$ = "EXIT" THEN
  264.         UIPopAll
  265.         ERROR STFQUIT
  266.     ELSEIF sz$ = "REACTIVATE" THEN
  267.         GOTO ASKQUIT
  268.     ELSE
  269.         UIPop 1
  270.     END IF
  271.     RETURN
  272.  
  273. ' Build the copy list and install
  274. SUB Install STATIC
  275.  
  276.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  277.     CreateDir DEST$, cmoNone 
  278.     
  279.     ' Get name of .INI file that exists in the Windows directory and DELETE IT.
  280.     RmvF$=MakePath(GetWindowsDIr(), "ECAD.INI")
  281.     RemoveFile RmvF$, cmoNone
  282.  
  283.     ' Make new .INI file name
  284.     ini$ = MakePath(GetWindowsDir(), "ECAD.INI")
  285.  
  286.     ' Copy program files if requested
  287.     IF GetSymbolValue("CPY_PROGRAMFILES") = "Yes" THEN
  288.  
  289.         AddSectionFilesToCopyList "ProgramFiles", SrcDir$, DEST$
  290.  
  291.         IF Has87MathChip() = 1 THEN
  292.             AddSectionKeyFileToCopyList "Files", "ECW87", SrcDir$, DEST$
  293.             AddSectionKeyFileToCopyList "Files", "ECW1", SrcDir$, DEST$
  294.             AddSectionKeyFileToCopyList "Files","DXFIN",SrcDir$,DEST$
  295.             AddSectionKeyFileToCopyList "Files","UPD",SrcDir$,DEST$
  296.         ELSE
  297.             AddSectionKeyFileToCopyList "Files","ECWSFP",SrcDir$,DEST$
  298.             AddSectionKeyFileToCopyList "Files","ECW1SFP",SrcDir$,DEST$
  299.             AddSectionKeyFileToCopyList "Files","DXFINSFP",SrcDir$,DEST$
  300.             AddSectionKeyFileToCopyList "Files","UPDSFP",SrcDir$,DEST$
  301.         END IF
  302.         
  303.         ' Install CTL3DV2 
  304.         AddSectionKeyFileToCopyList "Files","CTL3DV2",SrcDir$,MakePath(GetWindowsDir(),"SYSTEM")
  305.         ' Install BC450RTL.DLL 
  306.         AddSectionKeyFileToCopyList "Files","BC450RTL",SrcDir$,MakePath(GetWindowsDir(),"SYSTEM")
  307.          
  308.         ' Install XPs (HW or SFP) into INI file  
  309.         RemoveIniSection ini$, "Modules", cmoNone
  310.  
  311.         ecw1xp$ = MakePath(DEST$, "ecw1.xp")
  312.         CreateIniKeyValue ini$, "Modules", ecw1xp$, "" , cmoNone
  313.  
  314.         ecw1xp$ = MakePath(DEST$, "update.xp")
  315.         CreateIniKeyValue ini$, "Modules", ecw1xp$, "" , cmoNone
  316.  
  317.         ecw1xp$ = MakePath(DEST$, "dxfin.xp")
  318.         CreateIniKeyValue ini$, "Modules", ecw1xp$, "" , cmoNone
  319.  
  320.         ecw1xp$ = MakePath(DEST$, "c_utils.xp")
  321.         CreateIniKeyValue ini$, "Modules", ecw1xp$, "" , cmoNone
  322.  
  323.     END IF
  324.  
  325.     ' Copy sample drawings if requested
  326.     IF GetSymbolValue("CPY_SAMPLEDRAWINGS") = "Yes" THEN 
  327.         CreateDir DRAWINGDIR$, cmoNone
  328.         AddSectionFilesToCopyList "SampleDrawings", SrcDir$, DRAWINGDIR$
  329.     END IF
  330.  
  331. '''    ' Copy other samples (scripts, macros, etc.) if requested
  332. '''    IF GetSymbolValue("CPY_SAMPLES") = "Yes" THEN
  333. '''        CreateDir SAMPLESDIR$, cmoNone
  334. '''        AddSectionFilesToCopyList "Samples", SrcDir$, SAMPLESDIR$
  335. '''
  336. '''        ' Install xpdemo.xp in INI file
  337. '''        xpdemoxp$ = MakePath(DEST$, "ecw1.xp")
  338. '''        CreateIniKeyValue ini$, "Modules", xpdemoxp$, "" , cmoNone
  339. '''    END IF        
  340.     
  341.     ' Add user info to ini file
  342.     CreateIniKeyValue ini$, "User", "Name", USERNAME$, cmoNone
  343.     CreateIniKeyValue ini$, "User", "Organization", USERORG$, cmoNone
  344.     CreateIniKeyValue ini$, "User", "SerialNo", SERIALNUM$, cmoNone
  345.  
  346.     ' Do the copying
  347.     SetCopyGaugePosition 30, 100
  348.     CopyFilesInCopyList
  349.  
  350.     ' Create program group if requested
  351.     IF GetSymbolValue("MK_PRGGRP") = "Yes" THEN
  352.         CreateProgmanGroup "EasyCAD", "", cmoNone
  353.         ShowProgmanGroup  "EasyCAD", 1, cmoNone
  354.         ecwpath$ = MakePath(DEST$, "ecw.exe")
  355.         hlppath$ = MakePath(DEST$, "ecad.hlp")
  356.         CreateProgmanItem "EasyCAD", "EasyCAD", ecwpath$, "", cmoOverwrite
  357.         CreateProgmanItem "EasyCAD", "EasyCAD Help", hlppath$, "", cmoOverwrite
  358.     END IF
  359.  
  360. END SUB
  361.  
  362. '**
  363. '** Purpose:
  364. '**     Appends a file name to the end of a directory path,
  365. '**     inserting a backslash character as needed.
  366. '** Arguments:
  367. '**     szDir$  - full directory path (with optional ending "\")
  368. '**     szFile$ - filename to append to directory
  369. '** Returns:
  370. '**     Resulting fully qualified path name.
  371. '*************************************************************************  
  372. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  373.     IF szDir$ = "" THEN
  374.         MakePath = szFile$
  375.     ELSEIF szFile$ = "" THEN
  376.         MakePath = szDir$
  377.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  378.         MakePath = szDir$ + szFile$
  379.     ELSE
  380.         MakePath = szDir$ + "\" + szFile$
  381.     END IF
  382. END FUNCTION