home *** CD-ROM | disk | FTP | other *** search
/ VRML Tools for 3D Cyberspace / VRML_Tools_For_3D_Cyberspace.iso / web_fx / webfx.mst < prev    next >
Text File  |  1996-07-01  |  11KB  |  364 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Sample 1
  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 BADPATH       = 6400
  20. CONST CUSTINST      = 6200  
  21. CONST NETSCAPE      = 8000 
  22. CONST BADNETSCAPE   = 8100
  23.  
  24. ''Bitmap ID
  25. CONST LOGO = 1
  26.  
  27. GLOBAL DEST$        ''Default destination directory.
  28. GLOBAL OPTCUR$      ''Option selection from option dialog.
  29. GLOBAL szDATA$       ''Data directory
  30. GLOBAL szVRML$       ''VRML directory
  31. GLOBAL szCastle$     ''Castle directory
  32. GLOBAL szJet$        ''Jet directory
  33. GLOBAL szModels$     ''Models directory
  34. GLOBAL szMtv$        ''Mtv directory
  35. GLOBAL szWeather$    ''Weather directory
  36. GLOBAL szNetscape$   ''Netscape Directory                  
  37. GLOBAL szPlugin$     ''Plugin Directory                  
  38. GLOBAL szGreg$       '' Dummy
  39. GLOBAL szNetscapeIni$ '' Netscape INI
  40. GLOBAL szGeeWiz$    '' Another Dummy
  41.  
  42. DECLARE SUB Install
  43. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  44. DECLARE FUNCTION ExeFileType LIB "mscuistf.dll" (szFile$) AS INTEGER
  45.  
  46. INIT:
  47.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  48.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  49.  
  50.     SetBitmap CUIDLL$, LOGO
  51.     SetTitle "WebFX for Netscape"
  52.  
  53.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  54.     IF szInf$ = "" THEN
  55.         szInf$ = GetSymbolValue("STF_CWDDIR") + "WEBFX.INF"
  56.     END IF
  57.     ReadInfFile szInf$
  58.  
  59.     OPTCUR$ = "1"
  60.     DEST$ = "C:\WEBFX"  
  61.     szDATA$ = "C:\WEBFX\DATA"
  62.     szVRML$ = "C:\WEBFX\VRML"
  63.     szCastle$ = "C:\WEBFX\VRML\CASTLE"
  64.     szJet$ = "C:\WEBFX\VRML\JET"
  65.     szModels$ = "C:\WEBFX\VRML\MODELS"
  66.     szMtv$ = "C:\WEBFX\VRML\MTV"
  67.     szWeather$ = "C:\WEBFX\VRML\WEATHER"
  68.  
  69. '$IFDEF DEBUG
  70.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  71.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  72.     IF IsDriveValid(WinDrive$) = 0 THEN
  73.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  74.         GOTO QUIT
  75.     END IF
  76. '$ENDIF ''DEBUG
  77.  
  78.  
  79. WELCOME:
  80.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  81.  
  82.     IF sz$ = "CONTINUE" THEN
  83.         UIPop 1
  84.     ELSE
  85.         GOSUB ASKQUIT
  86.         GOTO WELCOME
  87.     END IF
  88.  
  89.  
  90. OPTION:
  91. OPTL1:
  92.  
  93.  
  94. GETPATH:
  95.     SetSymbolValue "EditTextIn", DEST$
  96.     SetSymbolValue "EditFocus", "END"
  97. GETPATHL1:
  98.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  99.     DEST$ = GetSymbolValue("EditTextOut")
  100.  
  101.     IF sz$ = "CONTINUE" THEN
  102.         IF IsDirWritable(DEST$) = 0 THEN
  103.             GOSUB BADPATH
  104.             GOTO GETPATHL1
  105.         END IF
  106.         UIPop 1
  107.     ELSEIF sz$ = "REACTIVATE" THEN
  108.         GOTO GETPATHL1
  109.     ELSEIF sz$ = "BACK" THEN
  110.         UIPop 1
  111.         GOTO WELCOME
  112.     ELSE
  113.         GOSUB ASKQUIT
  114.         GOTO GETPATH
  115.     END IF
  116.  
  117.  
  118. NETSCAPE:  
  119.     szNetscapeIni$ = GetIniKeyString("WIN.INI", "Netscape", "ini")
  120.     szNetscape$ = GetIniKeyString("WIN.INI", "Netscape", "ini")
  121.     IF szNetscape$ = "" THEN
  122.         szNetscape$ = MID$(GetWindowsDir, 1, 1) + ":\NETSCAPE\NETSCAPE.EXE"
  123.         szPlugin$ = MID$(GetWindowsDir, 1, 1) + ":\NETSCAPE\PLUGINS"
  124.         szData$ = MID$(GetWindowsDir, 1, 1) + ":\NETSCAPE\PLUGINS\DATA"
  125.     ELSE
  126.         SPLITPATH szNetscape$, drv$, dir$, filename$, ext$
  127.         szNetscape$ = drv$ + MID$(dir$, 1, LEN(dir$) - 1) + "\NETSCAPE.EXE"
  128.         szPlugin$ = drv$ + MID$(dir$, 1, LEN(dir$) - 1) + "\PLUGINS"
  129.         szData$ = drv$ + MID$(dir$, 1, LEN(dir$) - 1) + "\PLUGINS\DATA"
  130.     END IF
  131.  
  132.     SetSymbolValue "EditTextIn", szNetscape$
  133.     SetSymbolValue "EditFocus", "END"
  134. NETSCAPEL1:
  135.     sz$ = UIStartDlg(CUIDLL$, NETSCAPE, "FNetscapeDlgProc", APPHELP, HELPPROC$)
  136.     szNetscape$ = GetSymbolValue("EditTextOut")
  137.  
  138.     IF sz$ = "CONTINUE" THEN
  139. '*
  140. '*  NEED TO CHECK NETSCAPE.EXE HERE!
  141. '*    
  142. '*        IF IsDirWritable(DEST$) = 0 THEN
  143. '*            GOSUB BADPATH
  144. '*            GOTO GETPATHL1
  145. '*        END IF                 
  146.  
  147.         IF ExeFileType(szNetscape$) = 2 THEN
  148.             GOSUB BADNETSCAPE
  149.             GOTO  NETSCAPEL1
  150.         ENDIF
  151.  
  152.         IF szNetscape$ = "" THEN
  153.             szNetscape$ = MID$(GetWindowsDir, 1, 1) + ":\NETSCAPE\NETSCAPE.EXE"
  154.             szPlugin$ = MID$(GetWindowsDir, 1, 1) + ":\NETSCAPE\PLUGINS"
  155.             szData$ = MID$(GetWindowsDir, 1, 1) + ":\NETSCAPE\PLUGINS\DATA"
  156.         ELSE
  157.             SPLITPATH szNetscape$, drv$, dir$, filename$, ext$
  158.             szNetscape$ = drv$ + MID$(dir$, 1, LEN(dir$) - 1) + "\NETSCAPE.EXE"
  159.             szPlugin$ = drv$ + MID$(dir$, 1, LEN(dir$) - 1) + "\PLUGINS"
  160.             szData$ = drv$ + MID$(dir$, 1, LEN(dir$) - 1) + "\PLUGINS\DATA"
  161.         END IF
  162.  
  163.         UIPop 1
  164.     ELSEIF sz$ = "REACTIVATE" THEN
  165.         GOTO NETSCAPEL1
  166.     ELSEIF sz$ = "BACK" THEN
  167.         UIPop 1
  168.         GOTO GETPATHL1
  169.     ELSE
  170.         GOSUB ASKQUIT
  171.         GOTO NETSCAPE
  172.     END IF
  173.  
  174.  
  175.     Install
  176.  
  177.  
  178. QUIT:
  179.     ON ERROR GOTO ERRQUIT
  180.  
  181.     IF ERR = 0 THEN
  182.         dlg% = EXITSUCCESS
  183.     ELSEIF ERR = STFQUIT THEN
  184.         dlg% = EXITQUIT
  185.     ELSE
  186.         dlg% = EXITFAILURE
  187.     END IF
  188. QUITL1:
  189.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  190.     IF sz$ = "REACTIVATE" THEN
  191.         GOTO QUITL1
  192.     END IF
  193.     UIPop 1
  194.  
  195.     END
  196.  
  197. ERRQUIT:
  198.     i% = DoMsgBox("Setup sources were corrupted, call 1-800-551-5187!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  199.     END
  200.  
  201.  
  202.  
  203. BADPATH:
  204.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  205.     IF sz$ = "REACTIVATE" THEN
  206.         GOTO BADPATH
  207.     END IF
  208.     UIPop 1
  209.     RETURN
  210.  
  211.  
  212. BADNETSCAPE:
  213.     sz$ = UIStartDlg(CUIDLL$, BADNETSCAPE, "FInfo0DlgProc", 0, "")
  214.     IF sz$ = "REACTIVATE" THEN
  215.         GOTO BADNETSCAPE
  216.     END IF
  217.     UIPop 1
  218.     RETURN
  219.  
  220.  
  221. ASKQUIT:
  222.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  223.  
  224.     IF sz$ = "EXIT" THEN
  225.         UIPopAll
  226.         ERROR STFQUIT
  227.     ELSEIF sz$ = "REACTIVATE" THEN
  228.         GOTO ASKQUIT
  229.     ELSE
  230.         UIPop 1
  231.     END IF
  232.     RETURN
  233.  
  234.  
  235.  
  236. '**
  237. '** Purpose:
  238. '**     Builds the copy list and performs all installation operations.
  239. '** Arguments:
  240. '**     none.
  241. '** Returns:
  242. '**     none.
  243. '*************************************************************************
  244. SUB Install STATIC
  245.  
  246.  
  247.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  248.     CreateDir DEST$, cmoNone
  249.     szVRML$ = MakePath(DEST$, "VRML")
  250.     CreateDir szVRML$, cmoNone
  251.     szCastle$ = MakePath(DEST$, "VRML\CASTLE")
  252.     CreateDir szCastle$, cmoNone
  253.     szJet$ = MakePath(DEST$, "VRML\JET")
  254.     CreateDir szJet$, cmoNone
  255.     szModels$ = MakePath(DEST$, "VRML\MODELS")
  256.     CreateDir szModels$, cmoNone
  257.     szMtv$ = MakePath(DEST$, "VRML\MTV")
  258.     CreateDir szMtv$, cmoNone
  259.     szWeather$ = MakePath(DEST$, "VRML\WEATHER")
  260.     CreateDir szWeather$, cmoNone
  261.     CreateDir szPlugin$, cmoNone
  262. '*    szDATA$ = MakePath(DEST$, "DATA")
  263.     CreateDir szDATA$, cmoNone
  264.  
  265.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  266.     WriteToLogFile ""
  267.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  268.     WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  269.     WriteToLogFile ""
  270.     WriteToLogFile "May have had to create the directory: " + DEST$
  271.     WriteToLogFile ""
  272.  
  273.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  274.     AddSectionFilesToCopyList "Data", SrcDir$, szDATA$
  275.     AddSectionFilesToCopyList "VRML", SrcDir$, szVRML$
  276.     AddSectionFilesToCopyList "Castle", SrcDir$, szCastle$
  277.     AddSectionFilesToCopyList "Jet", SrcDir$, szJet$
  278.     AddSectionFilesToCopyList "Models", SrcDir$, szModels$
  279.     AddSectionFilesToCopyList "Weather", SrcDir$, szWeather$
  280.     AddSectionFilesToCopyList "Mtv", SrcDir$, szMtv$
  281.     AddSectionFilesToCopyList "Plugin", SrcDir$, szPlugin$
  282.     CopyFilesInCopyList
  283.  
  284.     REM ini$ = MakePath(DEST$, "DEMO.INI")
  285.     REM CreateIniKeyValue "WIN.INI", "WebFX", "Option", OPTCUR$, cmoNone
  286.     REM CreateIniKeyValue ini$, "Section 1", "Key 1", "Value 1" , cmoNone
  287.     REM CreateIniKeyValue ini$, "Section 2", "Key 2", "Value 2" , cmoNone
  288.     REM CreateIniKeyValue ini$, "Section 3", "Key 3", "Value 3" , cmoNone
  289.     
  290.     szGreg$ = MakePath(DEST$,"webfx.exe")
  291.  
  292. '*    RemoveIniKey szNetscapeIni$, "Viewers",  "x-world/x-vrml", cmoNone
  293. '*    CreateIniKeyValue szNetscapeIni$, "Viewers",  "x-world/x-vrml", szGreg$, cmoNone
  294.  
  295.     CreateIniKeyValue szNetscapeIni$, "Viewers",  "x-world/x-vrml", szGreg$, cmoOverwrite
  296. '*    CreateIniKeyValue szNetscapeIni$, "Viewers",  "TYPE20",          "x-world/x-vrml", cmoNone
  297.     CreateIniKeyValue szNetscapeIni$, "Suffixes", "x-world/x-vrml", "wrl,wrz,gz", cmoOverwrite
  298.  
  299. '* Let's find the next available entry for this viewer type!!
  300.     j%=0
  301.     FOR i% = 0 TO 100 STEP 1
  302.  
  303.         szGeeWiz$=STR$(i%)
  304.         szGeeWiz$="TYPE"+LTRIM$(szGeeWiz$)
  305.     
  306.         szGeeWiz$ = GetIniKeyString(szNetscapeIni$, "Viewers", szGeeWiz$)
  307.         
  308.         IF szGeeWiz$ = "" THEN
  309.             j% = i%
  310.             i% = 100    
  311.         ELSEIF szGeeWiz$ = "x-world/x-vrml" THEN
  312.             j% = -1
  313.             i% = 100
  314.         END IF
  315.         
  316.     NEXT
  317.  
  318.     IF j% <> -1 THEN
  319.         szGeeWiz$=STR$(j%)
  320.         szGeeWiz$="TYPE"+LTRIM$(szGeeWiz$)
  321.         CreateIniKeyValue szNetscapeIni$, "Viewers",  szGeeWiz$, "x-world/x-vrml", cmoOverwrite
  322.     ENDIF
  323.  
  324.     CreateProgmanGroup "WebFX", "", cmoNone
  325.     ShowProgmanGroup  "WebFX", 1, cmoNone
  326.     CreateProgmanItem "WebFX", "WebFX Plugin for Netscape", szNetscape$+" "+MakePath(DEST$,"welcome.htm"), MakePath(DEST$,"webfx.ico"), cmoOverwrite
  327.     CreateProgmanItem "WebFX", "Cool Worlds", szNetscape$+" "+MakePath(DEST$,"coolwrls.htm"), "", cmoOverwrite
  328.     CreateProgmanItem "WebFX", "WebFX Readme", "write.exe "+MakePath(DEST$,"webfx.wri"), "", cmoOverwrite
  329.  
  330.     AddDos5Help "WEBFX", "A brief help text for your Windows application."+chr$(10)+"It can be continued on another line with chr$(10).", cmoNone
  331.  
  332.     REM szNetscape$ = FindFileInTree("netscape.exe", "c:\")
  333.     szNetscape$ = FindFileUsingFileOpen("netscape.exe")
  334.     WriteToLogFile "Found Netscape at: " + szNetscape$
  335.  
  336.     CloseLogFile
  337.  
  338. END SUB
  339.  
  340.  
  341.  
  342. '**
  343. '** Purpose:
  344. '**     Appends a file name to the end of a directory path,
  345. '**     inserting a backslash character as needed.
  346. '** Arguments:
  347. '**     szDir$  - full directory path (with optional ending "\")
  348. '**     szFile$ - filename to append to directory
  349. '** Returns:
  350. '**     Resulting fully qualified path name.
  351. '*************************************************************************
  352. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  353.     IF szDir$ = "" THEN
  354.         MakePath = szFile$
  355.     ELSEIF szFile$ = "" THEN
  356.         MakePath = szDir$
  357.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  358.         MakePath = szDir$ + szFile$
  359.     ELSE
  360.         MakePath = szDir$ + "\" + szFile$
  361.     END IF
  362. END FUNCTION
  363.  
  364.