home *** CD-ROM | disk | FTP | other *** search
/ VRML & 3D on the Web for Dummies / VRML4DMYZ.iso / pc / pc_stuff / build / eos / pmlx.ms_ / pmlx.bin
Text File  |  1996-04-21  |  9KB  |  330 lines

  1. '**************************************************************************
  2. '*         Eos Systems PhotoModeler LX Install script
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST DESTPATH      = 300
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST OPTIONS       = 800
  18. CONST APPHELP       = 900
  19. CONST READLICENSE   = 910
  20. CONST TOOBIG        = 6300
  21. CONST BADPATH       = 6400
  22. CONST BADCONFIG     = 8000
  23.  
  24. ''Bitmap ID
  25. CONST LOGO = 1
  26.  
  27. GLOBAL DEST$        ''Default destination directory.
  28. GLOBAL OPTCUR$      ''Tutorial option install.
  29.  
  30. DECLARE SUB Install
  31. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  32.  
  33.  
  34. INIT:
  35.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  36.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  37.  
  38.     SetBitmap CUIDLL$, LOGO
  39.     SetTitle "PhotoModeler LX Install"
  40.  
  41.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  42.     IF szInf$ = "" THEN
  43.         szInf$ = GetSymbolValue("STF_CWDDIR") + "PMLXI.INF"
  44.     END IF
  45.     ReadInfFile szInf$
  46.  
  47.     OPTCUR$ = "1"
  48.     DEST$ = "C:\phmodlx"
  49.     SNUM$ = ""
  50.  
  51. '$IFDEF DEBUG
  52.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  53.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  54.     IF IsDriveValid(WinDrive$) = 0 THEN
  55.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  56.         GOTO QUIT
  57.     END IF
  58. '$ENDIF ''DEBUG
  59.  
  60.  
  61. WELCOME:
  62.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  63.     IF sz$ = "CONTINUE" THEN
  64.         UIPop 1
  65.     ELSE
  66.         GOSUB ASKQUIT
  67.         GOTO WELCOME
  68.     END IF
  69.  
  70. LICENSE:
  71.     sz$ = UIStartDlg(CUIDLL$, READLICENSE, "FInfoDlgProc", APPHELP, HELPPROC$)
  72.     IF sz$ = "CONTINUE" THEN
  73.         UIPop 1
  74.     ELSE
  75.         GOSUB ASKQUIT
  76.         GOTO LICENSE
  77.     END IF
  78.  
  79. CONFIG:
  80. '' Check for Math Chip
  81. ''    IF Has87MathChip() = 0 THEN
  82. ''        GOSUB BADCONFIG
  83. ''    END IF
  84.  
  85. '' Check for windows version
  86.     mjv% = GetWindowsMajorVersion()
  87.     miv% = GetWindowsMinorVersion()
  88. '' Assume windows minor version never goes over 99 (note 3.1 is returns as minor = 10)
  89.     ver% = mjv%*100 + miv%
  90.  
  91.     IF ver% < 310 THEN
  92.         GOSUB BADCONFIG
  93.     END IF
  94.  
  95. '' Check for 386 or better processor
  96.     IF GetProcessorType() < 3 THEN
  97.         GOSUB BADCONFIG
  98.     END IF
  99.  
  100.  
  101. OPTION:
  102.     SetSymbolValue "RadioDefault", OPTCUR$
  103. OPTL1:
  104.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  105.     OPTCUR$ = GetSymbolValue("ButtonChecked")
  106.  
  107.     IF sz$ = "CONTINUE" THEN
  108.         UIPop(1)
  109.     ELSEIF sz$ = "REACTIVATE" THEN
  110.         GOTO OPTL1
  111.     ELSE
  112.         GOSUB ASKQUIT
  113.         GOTO OPTION
  114.     END IF
  115.  
  116. '' Get the path where program is to be installed
  117. GETPATH:
  118.     SetSymbolValue "EditTextIn", DEST$
  119.     SetSymbolValue "EditFocus", "END"
  120. GETPATHL1:
  121.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  122.     DEST$ = GetSymbolValue("EditTextOut")
  123.  
  124.     IF sz$ = "CONTINUE" THEN
  125.         IF IsDirWritable(DEST$) = 0 THEN
  126.             GOSUB BADPATH
  127.             GOTO GETPATHL1
  128.         END IF
  129.         UIPop 1
  130.     ELSEIF sz$ = "REACTIVATE" THEN
  131.         GOTO GETPATHL1
  132.     ELSEIF sz$ = "BACK" THEN
  133.         UIPop 1
  134.         GOTO OPTION
  135.     ELSE
  136.         GOSUB ASKQUIT
  137.         GOTO GETPATH
  138.     END IF
  139.  
  140. '' Check for disk space. Will have to modify this number based on 
  141. '' the actual install size. Put at 4 meg for now
  142. '' we do more accurate check farther down
  143. ''    IF GetFreeSpaceForDrive(MID$(DEST$, 1, 1)) < 4000000 THEN
  144. ''        GOSUB BADDISKSP
  145. ''    END IF
  146.  
  147.  
  148.     Install
  149.  
  150.  
  151. QUIT:
  152.     ON ERROR GOTO ERRQUIT
  153.  
  154.     IF ERR = 0 THEN
  155.         dlg% = EXITSUCCESS
  156.     ELSEIF ERR = STFQUIT THEN
  157.         dlg% = EXITQUIT
  158.     ELSE
  159.         dlg% = EXITFAILURE
  160.     END IF
  161. QUITL1:
  162.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  163.     IF sz$ = "REACTIVATE" THEN
  164.         GOTO QUITL1
  165.     END IF
  166.     UIPop 1
  167.  
  168.     END
  169.  
  170. ERRQUIT:
  171.     i% = DoMsgBox("Setup sources were corrupted, call 604-732-6658!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  172.     END
  173.  
  174.  
  175.  
  176. BADPATH:
  177.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  178.     IF sz$ = "REACTIVATE" THEN
  179.         GOTO BADPATH
  180.     END IF
  181.     UIPop 1
  182.     RETURN
  183.  
  184. BADCONFIG:
  185.     sz$ = UIStartDlg(CUIDLL$, BADCONFIG, "FInfoDlgProc", APPHELP, HELPPROC$)
  186.     IF sz$ = "REACTIVATE" THEN
  187.         GOTO BADCONFIG
  188.     END IF
  189.  
  190.     IF sz$ = "CONTINUE" THEN
  191.         UIPop 1
  192.     ELSE
  193.         GOSUB ASKQUIT
  194.         GOTO BADCONFIG
  195.     END IF
  196.     RETURN
  197.  
  198.  
  199. ASKQUIT:
  200.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  201.  
  202.     IF sz$ = "EXIT" THEN
  203.         UIPopAll
  204.         ERROR STFQUIT
  205.     ELSEIF sz$ = "REACTIVATE" THEN
  206.         GOTO ASKQUIT
  207.     ELSE
  208.         UIPop 1
  209.     END IF
  210.     RETURN
  211.  
  212.  
  213.  
  214. '**
  215. '** Purpose:
  216. '**     Builds the copy list and performs all installation operations.
  217. '** Arguments:
  218. '**     none.
  219. '** Returns:
  220. '**     none.
  221. '*************************************************************************
  222. SUB Install STATIC
  223.  
  224.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  225.     CreateDir DEST$, cmoNone
  226.  
  227. ''   OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  228. ''    WriteToLogFile ""
  229. ''   WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  230. ''    WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  231. ''    WriteToLogFile ""
  232. ''    WriteToLogFile "May have had to create the directory: " + DEST$
  233. ''    WriteToLogFile ""
  234.  
  235. '' Create the list of files to copy. First everything in Files section of inf
  236. '' and then the files in IniFile (to be copied to windows directory)
  237. '' and then any optional tutorial files
  238.     winDir$ = GetWindowsDir()
  239.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  240.     AddSectionFilesToCopyList "IniFiles", SrcDir$, winDir$
  241.  
  242.     IF OPTCUR$ = "1" THEN
  243.         tutDir$ = MakePath( DEST$, "tutorial" )
  244.         AddSectionFilesToCopyList "Tutorial", SrcDir$, tutDir$
  245.     END IF
  246.  
  247. '' Check to see if enough space on disk to copy the files list
  248.     sizeNeeded& = GetCopyListCost( t1$, t2$, t3$ )
  249.     If sizeNeeded& > 0 Then
  250. ''        Tell user of insufficient disk space
  251. BIGDLG:
  252.         sz$ = UIStartDlg("mscuistf.dll", TOOBIG, "FInfoDlgProc", APPHELP, "FHelpDlgProc")
  253.         IF sz$ = "REACTIVATE" THEN
  254.             GOTO BIGDLG
  255.         END IF
  256.         ERROR STFQUIT
  257.     Else
  258.  
  259. ''         Copy the files
  260.         CopyFilesInCopyList
  261.  
  262. ''         Update the PhotoModeler LX ini file with directory and help file location
  263.         ini$ = MakePath(winDir$, "pmlx.ini")
  264.         help$ = MakePath( DEST$, "pmlx.hlp" )
  265.         CreateIniKeyValue ini$, "General", "path", DEST$ , cmoOverwrite
  266.         CreateIniKeyValue ini$, "General", "helpfile", help$ , cmoOverwrite
  267.  
  268.  
  269. ''        We will not do the progman setup under win95
  270. ''        mjv% = GetWindowsMajorVersion()
  271. ''        miv% = GetWindowsMinorVersion()
  272. ''        ver% = mjv%*100 + miv%
  273. ''        IF ver% < 395 THEN
  274. ''             Create a program group items for PhotoModeler and other apps with full paths
  275.             CreateProgmanGroup "PhotoModeler", "", cmoNone
  276.             ShowProgmanGroup  "PhotoModeler", 1, cmoNone
  277.             prog$ = MakePath( DEST$, "pmlx.exe" )
  278.             CreateProgmanItem "PhotoModeler", "PhotoModeler LX", prog$, "", cmoOverwrite
  279. ''        END IF
  280.  
  281. ''        CloseLogFile
  282.     End If
  283.  
  284. END SUB
  285.  
  286.  
  287.  
  288. '**
  289. '** Purpose:
  290. '**     Appends a file name to the end of a directory path,
  291. '**     inserting a backslash character as needed.
  292. '** Arguments:
  293. '**     szDir$  - full directory path (with optional ending "\")
  294. '**     szFile$ - filename to append to directory
  295. '** Returns:
  296. '**     Resulting fully qualified path name.
  297. '*************************************************************************
  298. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  299.     IF szDir$ = "" THEN
  300.         MakePath = szFile$
  301.     ELSEIF szFile$ = "" THEN
  302.         MakePath = szDir$
  303.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  304.         MakePath = szDir$ + szFile$
  305.     ELSE
  306.         MakePath = szDir$ + "\" + szFile$
  307.     END IF
  308. END FUNCTION
  309.  
  310.  
  311. '' Inform user about insufficient disk space
  312. ''SUB BadDiskSpace STATIC
  313. ''BADSTRT:
  314. ''    sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfoDlgProc", APPHELP, HELPPROC$)
  315. ''    IF sz$ = "REACTIVATE" THEN
  316. ''        GOTO BADSTRT
  317. ''    END IF
  318.  
  319. ''    ERROR STFQUIT
  320.  
  321. ''    IF sz$ = "CONTINUE" THEN
  322. ''        UIPopAll
  323. ''        ERROR STFQUIT
  324. ''    ELSE
  325. ''        GOSUB ASKQUIT
  326. ''        GOTO BADSTRT
  327. ''    END IF
  328. ''END SUB
  329.  
  330.