home *** CD-ROM | disk | FTP | other *** search
/ VRML Tools for 3D Cyberspace / VRML_Tools_For_3D_Cyberspace.iso / virtus / vwtvrml.ms_ / vwtvrml.bin
Text File  |  1996-07-01  |  10KB  |  436 lines

  1. '**************************************************************************
  2. '*                        Virtus WalkThrough Pro Setup
  3. '*
  4. '*                        Lovingly hand-crafted
  5. '*                        and polished by John Alspaugh
  6. '*         Copyright 1993-1994 Virtus Corporation.  All Rights Reserved.
  7. '*
  8. '**************************************************************************
  9.  
  10. '''''$DEFINE DEBUG  ''Define for script development/debugging
  11.  
  12. ''Bitmap ID
  13. CONST LOGO         = 1
  14.  
  15. ''File Types
  16. GLOBAL RADIOBUTTON$     ''Option selection from OptFiles1 option dialog.
  17. GLOBAL PROGGROUP$    'Name of the program manager group
  18. GLOBAL ENORMOUS%    ''too big -- true or false? (1 or 0)
  19.  
  20. ''Dialog list symbol names
  21. GLOBAL CHECKSTATES$
  22. GLOBAL STATUSTEXT$
  23. GLOBAL DRIVETEXT$
  24. GLOBAL ERRORDLG%
  25.  
  26. ''Potential error code for the magic exit
  27. GLOBAL POTENTIALERROR%
  28.  
  29.  
  30.  
  31. '' includes must be in this order!
  32. '$INCLUDE 'setupapi.inc'
  33. '$INCLUDE 'msdetect.inc'
  34. '$INCLUDE 'vutility.inc'      '' handy utility routines
  35. '$INCLUDE 'prolocal.inc'      '' the local definitions we use
  36. '$INCLUDE 'vsupport.inc'    '' our more general routines (requires vlocal.inc)
  37.  
  38.  
  39.  
  40. '$ifdef PROGRAM
  41. ''Dialog ID's
  42. CONST WELCOME_DLG        = 100
  43. CONST BILLBOARD0        = 110
  44. CONST BILLBOARD1        = 111
  45. CONST BILLBOARD2        = 112
  46. CONST BILLBOARD3        = 113
  47. CONST BILLBOARD4        = 114
  48. CONST BILLBOARD5        = 115
  49. CONST ASKQUIT_DLG        = 200
  50. CONST DESTPATH_DLG         = 300
  51. CONST EXITFAILURE_DLG    = 400
  52. CONST EBADSERIAL_DLG    = 401
  53. CONST ENOINSTALL_DLG      = 402
  54. CONST CORRUPT_FILES_DLG = 412
  55. CONST EXITQUIT_DLG        = 600
  56. CONST EXITSUCCESS_DLG    = 700    '' ok, and you should restart (but you don't have to)
  57. CONST EXITSUCCESSBYE_DLG= 701    '' ok, and you will now restart
  58. CONST WELCOMEHELP_DLG    = 900
  59. CONST CUSTINSTHELP_DLG    = 901
  60. CONST PATHHELP_DLG        = 902
  61. CONST PERSONALHELP_DLG    = 903
  62. CONST INSTALLHELP_DLG    = 904
  63. CONST INSTALL_DLG        = 6100
  64. CONST CUSTINST_DLG        = 6200
  65. CONST TOOBIG_DLG        = 6300
  66. CONST BADPATH_DLG        = 6400
  67. CONST PERSONALIZE_DLG    = 7500
  68. '$ELSE IF LIBRARY
  69. CONST WELCOME_DLG        = 150
  70. CONST ASKQUIT_DLG        = 250
  71. CONST DESTPATH_DLG        = 350
  72. CONST NO_WIN_3_1_DLG     = 410
  73. CONST WRONG_CPU_DLG     = 411
  74. CONST CORRUPT_FILES_DLG = 412
  75. CONST EXITFAILURE_DLG    = 450
  76. CONST EXITQUIT_DLG        = 650
  77. CONST EXITSUCCESS_DLG    = 750
  78. CONST WELCOMEHELP_DLG    = 950
  79. CONST PATHHELP_DLG        = 952
  80. CONST TOOBIG_DLG        = 6350
  81. CONST NOVRDIR_DLG        = 6351
  82. CONST LOOKFORFILE_DLG    = 6352
  83. CONST BADPATH_DLG        = 6400
  84. '$endif
  85.  
  86.  
  87. INIT:
  88.     CUIDLL$ = "mscuistf.dll"            'Custom user interface dll
  89.     HELPPROC$ = "FHelpDlgProc"          'Help dialog procedure
  90.     POTENTIALERROR% = 0
  91.     
  92.     VL_Initialize          '' init all the local vars
  93.     VL_InitDiskCosts      '' init the disk cost stuff
  94.     VL_InitDirNames     '' init the directory naming stuff
  95.     VL_InitReadmeFileNames
  96.  
  97.     VMaximizeFrame
  98.  
  99.     SetBitmap CUIDLL$, LOGO
  100.     SetTitle PRODUCTNAME$
  101.  
  102.     '' test that the system is up to our requirements.  If not, Bye!
  103.     sysOk% = VIsSystemAdequate()
  104.     IF sysOk% = 0 THEN
  105.         GOTO ENDITALL    '' byeeee!
  106.     END IF
  107.  
  108.     '' load INF file
  109.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  110.     IF szInf$ = "" THEN
  111.         szInf$ = GetSymbolValue("STF_CWDDIR") + INFFILENAME$
  112.     END IF
  113.     ReadInfFile szInf$
  114.  
  115.     ''CustInst list symbols
  116.     CHECKSTATES$ = "CheckItemsState"
  117.     STATUSTEXT$  = "StatusItemsText"
  118.     DRIVETEXT$   = "DriveStatusText"
  119.     FOR i% = 1 TO N_CHECKBOXES STEP 1
  120.         AddListItem CHECKSTATES$, "ON"
  121.     NEXT i%
  122.     FOR i% = 1 TO N_CHECKBOXES STEP 1
  123.         AddListItem STATUSTEXT$, ""
  124.     NEXT i%
  125.     FOR i% = 1 TO 7 STEP 1     '' there are 7 items in DriveStatusText.  Always.
  126.         AddListItem DRIVETEXT$, ""
  127.     NEXT i%
  128.     ReplaceListItem DRIVETEXT$, 7, DESTDIRNAME$
  129.  
  130.     ENORMOUS% = 0
  131.     RADIOBUTTON$ = "1"
  132.  
  133.     VL_RecalcPath
  134.  
  135. '$IFDEF DEBUG
  136.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  137. '$ENDIF 'DEBUG
  138.  
  139. WELCOME:
  140.     sz$ = UIStartDlg(CUIDLL$, WELCOME_DLG, "FInfoDlgProc", WELCOMEHELP_DLG, HELPPROC$)
  141.     IF sz$ = "CONTINUE" THEN
  142.         UIPop 1
  143.     ELSE
  144.         GOSUB ASKQUIT
  145.         GOTO WELCOME
  146.     END IF
  147.  
  148.     
  149. '$IFDEF OPTION
  150. ENORMOUS%= VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  151. IF ENORMOUS% <> 0 THEN
  152.     RADIOBUTTON$ = "2"
  153.     GOTO CUSTINST
  154. END IF
  155.  
  156. INSTALLOPT:
  157.     SetSymbolValue "RadioDefault", RADIOBUTTON$  '' set the button
  158.  
  159.     sz$ = UIStartDlg(CUIDLL$, INSTALL_DLG, "FRadioDlgProc", INSTALLHELP_DLG, HELPPROC$)
  160.     RADIOBUTTON$ = GetSymbolValue("ButtonChecked")
  161.  
  162.     ENORMOUS%= VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  163.     IF sz$ = "CONTINUE" THEN
  164.         UIPop 1
  165.         IF RADIOBUTTON$ = "1" THEN
  166.             GOSUB GETPATH
  167.             GOTO INSTALL
  168.         ELSE
  169.             GOTO CUSTINST
  170.         END IF
  171.     ELSEIF sz$ = "REACTIVATE" THEN
  172.         GOTO INSTALLOPT
  173.     ELSEIF sz$ = "EXIT" THEN
  174.         GOSUB ASKQUIT
  175.         GOTO INSTALLOPT
  176.     ELSE
  177.         UIPop 1
  178.         GOTO CUSTINST
  179.     END IF
  180.  
  181.  
  182.  
  183. CUSTINST:
  184.     ''Start up the custom installation dialog box
  185.     sz$ = UIStartDlg(CUIDLL$, CUSTINST_DLG, "FCustInstDlgProc", CUSTINSTHELP_DLG, HELPPROC$)
  186.  
  187.     i% = VL_DoCheckItems(sz$)
  188.     IF i% = 1 THEN
  189.         ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  190.         GOTO CUSTINST
  191.     END IF
  192.  
  193.     IF sz$ = "CONTINUE" THEN
  194.         ''Install only if it will fit.
  195.         IF ENORMOUS% <> 0 THEN
  196.             GOSUB TOOBIG
  197.             GOTO CUSTINST
  198.         ENDIF
  199.  
  200.         UIPop 1      ''Kill the dialog box
  201.         GOTO INSTALL 
  202.     ELSEIF sz$ = "PATH" THEN
  203.         GOTO GETPATH
  204.     ELSEIF sz$ = "REACTIVATE" THEN
  205.         VL_RecalcPath
  206.         ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  207.         GOTO CUSTINST
  208.     ELSEIF sz$ = "BACK" THEN
  209.         UIPop 1
  210.         GOTO INSTALLOPT
  211.     ELSE
  212.         GOSUB ASKQUIT
  213.         GOTO CUSTINST
  214.     END IF
  215.  
  216. '$ENDIF 'OPTION
  217.  
  218.  
  219.  
  220. GETPATH:
  221.  
  222. '$IFDEF LIBRARY
  223.     i% = VFindExe(EXEFILENAME$, DATAFILEEXT$, DESTDIRNAME$)
  224.  
  225.   NOEXE:
  226.     IF i% = 0 THEN
  227.         DESTDIRNAME$ = WINDRIVE$ + ":\" + DEFDIRNAME$    '' fallback
  228.         sz$ = UIStartDlg(CUIDLL$, NOVRDIR_DLG, "FInfo0DlgProc", 0, "")
  229.         IF sz$ = "REACTIVATE" THEN
  230.             GOTO NOEXE
  231.         END IF
  232.         UIPop 1
  233.     END IF
  234. '$ENDIF 'LIBRARY
  235.  
  236.     VL_RecalcPath
  237.  
  238.     SetSymbolValue "EditTextIn", DESTDIRNAME$
  239.     SetSymbolValue "EditFocus", "END"
  240. GETPATHL1:
  241.     sz$ = UIStartDlg(CUIDLL$, DESTPATH_DLG, "FEditDlgProc", PATHHELP_DLG, HELPPROC$)
  242.  
  243.     IF sz$ = "CONTINUE" THEN
  244.         olddest$ = DESTDIRNAME$
  245.         DESTDIRNAME$ = GetSymbolValue("EditTextOut")
  246.  
  247.         ''Validate new path.
  248.         IF IsDirWritable(DESTDIRNAME$) = 0 THEN
  249.             GOSUB BADPATH
  250.             GOTO GETPATHL1
  251.         END IF
  252.         UIPop 1
  253.  
  254.         'Truncate display if too long.
  255.         IF LEN(DEST$) > 23 THEN
  256.             ReplaceListItem DRIVETEXT$, 7, MID$(DESTDIRNAME$, 1, 23)+"..."
  257.         ELSE
  258.             ReplaceListItem DRIVETEXT$, 7, DESTDIRNAME$
  259.         END IF
  260.  
  261.         ''Recalc if path changed.
  262.         IF (olddest$ <> DESTDIRNAME$) AND (olddest$ <> DESTDIRNAME$+"\") AND (olddest$+"\" <> DESTDIRNAME$) THEN
  263.             VL_RecalcPath
  264.             ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  265.         END IF
  266.  
  267.         olddest$ = ""
  268. '$IFDEF OPTION
  269.         IF RADIOBUTTON$ = "1" THEN  '' this is the quicky option, right?
  270.             '' check that the new path does not make us need too much disk space
  271.             IF ENORMOUS% <> 0 THEN
  272.                 GOSUB TOOBIG    '' not enough disk space
  273.  
  274.                 RADIOBUTTON$ = "2"
  275.                 GOTO CUSTINST   '' custom install necessary.
  276.             END IF
  277.         ELSE
  278.             GOTO CUSTINST    '' return to the custom install
  279.         END IF
  280.  
  281. '$ELSE
  282.         IF ENORMOUS% <> 0 THEN
  283.             GOSUB TOOBIG    '' not enough disk space
  284.             GOTO GETPATHL1   '' try again
  285.         END IF
  286. '$ENDIF '' OPTION
  287.  
  288.         GOTO INSTALL
  289.  
  290.  
  291.     ELSEIF sz$ = "REACTIVATE" THEN
  292. ''        VL_RecalcPath
  293. ''        ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  294.         GOTO GETPATHL1
  295.     ELSEIF sz$ = "EXIT" THEN
  296.         GOSUB ASKQUIT
  297.         GOTO GETPATHL1
  298.     ELSEIF sz$ = "BACK" THEN
  299.         UIPop 1
  300.  
  301. '$IFDEF OPTION
  302.         IF (RADIOBUTTON$ = "1") AND (ENORMOUS% = 0) THEN
  303.             GOTO INSTALLOPT
  304.         ELSE
  305.             GOTO CUSTINST
  306.         END IF
  307. '$ELSE
  308.         GOTO WELCOME
  309. '$ENDIF '' OPTION
  310.  
  311.     ELSE
  312.         GOTO GETPATHL1
  313.     END IF
  314.  
  315.  
  316. INSTALL:
  317.  
  318.     VL_DoTheInstall
  319.  
  320. '$IFDEF PROGRAM
  321.     IF VL_ShouldWeSerialize() = 1 THEN
  322.         GOSUB SERIALIZE
  323.     END IF
  324. '$ENDIF 'PROGRAM
  325.  
  326.     VL_MakeTheAppIcons
  327.  
  328.     VL_MakeTheReadmeIcons
  329.  
  330. QUIT:
  331.     ON ERROR GOTO ERRQUIT
  332.  
  333.     IF ERR = 0 THEN
  334.         Restart% = RestartListEmpty()
  335.         IF Restart% = 0 THEN
  336.             ERRORDLG% = EXITSUCCESSBYE_DLG
  337.         ELSE
  338.             ERRORDLG% = EXITSUCCESS_DLG
  339.         END IF
  340.     ELSEIF ERR = STFQUIT THEN
  341.         ERRORDLG% = EXITQUIT_DLG
  342.     ELSEIF ERR = ENOINSTALL THEN
  343.         ERRORDLG% = ENOINSTALL_DLG
  344.     ELSE
  345.         ERRORDLG% = EXITFAILURE_DLG
  346.     END IF
  347. QUITL1:
  348.     sz$ = UIStartDlg(CUIDLL$, ERRORDLG%, "FInfo0DlgProc", 0, "")
  349.     IF sz$ = "REACTIVATE" THEN
  350.         GOTO QUITL1
  351.     END IF
  352.     UIPop 1
  353.  
  354.     IF ERR = 0 THEN
  355.         VL_ShowIconsOkay
  356.     END IF
  357.  
  358.     GOTO ENDITALL
  359.  
  360. ERRQUIT:
  361.     sz$ = UIStartDlg(CUIDLL$, CORRUPT_FILES_DLG, "FInfo0DlgProc", 0, "")
  362.     IF sz$ = "REACTIVATE" THEN
  363.         GOTO ERRQUIT
  364.     END IF
  365.     UIPop 1
  366.     GOTO ENDITALL
  367.  
  368. ENDITALL:
  369.     END ''That's all, folks!
  370.  
  371.  
  372.  
  373. TOOBIG:
  374.     sz$ = UIStartDlg(CUIDLL$, TOOBIG_DLG, "FInfo0DlgProc", 0, "")
  375.     IF sz$ = "REACTIVATE" THEN
  376.         VL_RecalcPath
  377.         ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  378.         GOTO TOOBIG
  379.     END IF
  380.     UIPop 1
  381.     RETURN
  382.  
  383.  
  384.  
  385. BADPATH:
  386.     sz$ = UIStartDlg(CUIDLL$, BADPATH_DLG, "FInfo0DlgProc", 0, "")
  387.     IF sz$ = "REACTIVATE" THEN
  388.         VL_RecalcPath
  389.         ENORMOUS% = VSetDriveStatus(DESTDIRNAME$, DRIVETEXT$)
  390.         GOTO BADPATH
  391.     END IF
  392.     UIPop 1
  393.     RETURN
  394.  
  395.  
  396.  
  397. ASKQUIT:
  398.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT_DLG, "FQuitDlgProc", 0, "")
  399.  
  400.     IF sz$ = "EXIT" THEN
  401.         UIPopAll
  402.         ERROR STFQUIT
  403.     ELSEIF sz$ = "REACTIVATE" THEN
  404.         GOTO ASKQUIT
  405.     ELSE
  406.         UIPop 1
  407.     END IF
  408.     RETURN
  409.  
  410.  
  411. SERIALIZE:
  412.     SetSymbolValue "ProgramLocation", VMakePath(DESTDIRNAME$,EXEFILENAME$)
  413. '$ifdef SERIAL
  414.     sz$ = UIStartDlg(CUIDLL$, PERSONALIZE_DLG, "FInitDlgProc", PERSONALHELP_DLG, HELPPROC$)
  415.  
  416.     IF sz$ = "EXIT" THEN
  417.         POTENTIALERROR% = EBADSERIAL
  418.         GOSUB ASKQUIT
  419.         POTENTIALERROR% = 0
  420.         GOTO SERIALIZE
  421.     ELSEIF sz$ = "REACTIVATE" THEN
  422.         GOTO SERIALIZE
  423.     ELSEIF sz$ = "CONTINUE" THEN
  424.         UIPop 1
  425.     ELSE
  426.         POTENTIALERROR% = EBADSERIAL
  427.         ERROR EBADSERIAL
  428.     END IF
  429. '$ENDIF 'SERIAL
  430.     RETURN
  431.  
  432.  
  433.  
  434.  
  435.  
  436.