home *** CD-ROM | disk | FTP | other *** search
/ Computer Buyer 1996 April / BYER_0496.iso / buisapp / cad / ecw.ms_ / ecw.ms
Text File  |  1995-06-01  |  12KB  |  376 lines

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