home *** CD-ROM | disk | FTP | other *** search
/ Tutto per Internet / Internet.iso / soft31 / Varie / Npwfx16f / WEBFX.MST < prev    next >
Encoding:
Text File  |  1996-01-11  |  11.4 KB  |  369 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 szWINSYSTEM$  ''WinSystem directory
  31. GLOBAL szSYSTEM$     ''System directory
  32. GLOBAL szVRML$       ''VRML directory
  33. GLOBAL szCastle$     ''Castle directory
  34. GLOBAL szJet$        ''Jet directory
  35. GLOBAL szModels$     ''Models directory
  36. GLOBAL szMtv$        ''Mtv directory
  37. GLOBAL szWeather$    ''Weather directory
  38. GLOBAL szNetscape$   ''Netscape Directory                  
  39. GLOBAL szPlugin$     ''Plugin Directory                  
  40. GLOBAL szGreg$       '' Dummy
  41. GLOBAL szNetscapeIni$ '' Netscape INI
  42. GLOBAL szGeeWiz$    '' Another Dummy
  43.  
  44. DECLARE SUB Install
  45. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  46. DECLARE FUNCTION ExeFileType LIB "mscuistf.dll" (szFile$) AS INTEGER
  47.  
  48. INIT:
  49.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  50.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  51.  
  52.     SetBitmap CUIDLL$, LOGO
  53.     SetTitle "WebFX for Netscape"
  54.  
  55.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  56.     IF szInf$ = "" THEN
  57.         szInf$ = GetSymbolValue("STF_CWDDIR") + "WEBFX.INF"
  58.     END IF
  59.     ReadInfFile szInf$
  60.  
  61.     OPTCUR$ = "1"
  62.     DEST$ = "C:\WEBFX"  
  63.     szDATA$ = "C:\WEBFX\SYSTEM\DATA"
  64.     szSYSTEM$ = "C:\WEBFX\SYSTEM"
  65.     szWINSYSTEM$ = GetWindowsDir
  66.     szVRML$ = "C:\WEBFX\VRML"
  67.     szCastle$ = "C:\WEBFX\VRML\CASTLE"
  68.     szJet$ = "C:\WEBFX\VRML\JET"
  69.     szModels$ = "C:\WEBFX\VRML\MODELS"
  70.     szMtv$ = "C:\WEBFX\VRML\MTV"
  71.     szWeather$ = "C:\WEBFX\VRML\WEATHER"
  72.  
  73. '$IFDEF DEBUG
  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. '$ENDIF ''DEBUG
  81.  
  82.  
  83. WELCOME:
  84.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  85.  
  86.     IF sz$ = "CONTINUE" THEN
  87.         UIPop 1
  88.     ELSE
  89.         GOSUB ASKQUIT
  90.         GOTO WELCOME
  91.     END IF
  92.  
  93.  
  94. OPTION:
  95. OPTL1:
  96.  
  97.  
  98. GETPATH:
  99.     SetSymbolValue "EditTextIn", DEST$
  100.     SetSymbolValue "EditFocus", "END"
  101. GETPATHL1:
  102.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  103.     DEST$ = GetSymbolValue("EditTextOut")
  104.  
  105.     IF sz$ = "CONTINUE" THEN
  106.         IF IsDirWritable(DEST$) = 0 THEN
  107.             GOSUB BADPATH
  108.             GOTO GETPATHL1
  109.         END IF
  110.         UIPop 1
  111.     ELSEIF sz$ = "REACTIVATE" THEN
  112.         GOTO GETPATHL1
  113.     ELSEIF sz$ = "BACK" THEN
  114.         UIPop 1
  115.         GOTO WELCOME
  116.     ELSE
  117.         GOSUB ASKQUIT
  118.         GOTO GETPATH
  119.     END IF
  120.  
  121.  
  122. NETSCAPE:  
  123.     szNetscapeIni$ = GetIniKeyString("WIN.INI", "Netscape", "ini")
  124.     szNetscape$ = GetIniKeyString("WIN.INI", "Netscape", "ini")
  125.     IF szNetscape$ = "" THEN
  126.         szNetscape$ = MID$(GetWindowsDir, 1, 1) + ":\NETSCAPE\NETSCAPE.EXE"
  127.         szPlugin$ = MID$(GetWindowsDir, 1, 1) + ":\NETSCAPE\PLUGINS"
  128.     ELSE
  129.         SPLITPATH szNetscape$, drv$, dir$, filename$, ext$
  130.         szNetscape$ = drv$ + MID$(dir$, 1, LEN(dir$) - 1) + "\NETSCAPE.EXE"
  131.         szPlugin$ = drv$ + MID$(dir$, 1, LEN(dir$) - 1) + "\PLUGINS"
  132.     END IF
  133.  
  134.     SetSymbolValue "EditTextIn", szNetscape$
  135.     SetSymbolValue "EditFocus", "END"
  136. NETSCAPEL1:
  137.     sz$ = UIStartDlg(CUIDLL$, NETSCAPE, "FNetscapeDlgProc", APPHELP, HELPPROC$)
  138.     szNetscape$ = GetSymbolValue("EditTextOut")
  139.  
  140.     IF sz$ = "CONTINUE" THEN
  141. '*
  142. '*  NEED TO CHECK NETSCAPE.EXE HERE!
  143. '*    
  144. '*        IF IsDirWritable(DEST$) = 0 THEN
  145. '*            GOSUB BADPATH
  146. '*            GOTO GETPATHL1
  147. '*        END IF                 
  148.  
  149.         IF ExeFileType(szNetscape$) = 2 THEN
  150.             GOSUB BADNETSCAPE
  151.             GOTO  NETSCAPEL1
  152.         ENDIF
  153.  
  154.         IF szNetscape$ = "" THEN
  155.             szNetscape$ = MID$(GetWindowsDir, 1, 1) + ":\NETSCAPE\NETSCAPE.EXE"
  156.             szPlugin$ = MID$(GetWindowsDir, 1, 1) + ":\NETSCAPE\PLUGINS"
  157.         ELSE
  158.             SPLITPATH szNetscape$, drv$, dir$, filename$, ext$
  159.             szNetscape$ = drv$ + MID$(dir$, 1, LEN(dir$) - 1) + "\NETSCAPE.EXE"
  160.             szPlugin$ = drv$ + MID$(dir$, 1, LEN(dir$) - 1) + "\PLUGINS"
  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.     szSYSTEM$ = MakePath(DEST$, "SYSTEM")
  263.     CreateDir szSYSTEM$, cmoNone
  264.     szDATA$ = MakePath(DEST$, "SYSTEM\DATA")
  265.     CreateDir szDATA$, cmoNone
  266.  
  267.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  268.     WriteToLogFile ""
  269.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  270.     WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  271.     WriteToLogFile ""
  272.     WriteToLogFile "May have had to create the directory: " + DEST$
  273.     WriteToLogFile ""
  274.  
  275.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  276.     AddSectionFilesToCopyList "Data", SrcDir$, szDATA$
  277.     AddSectionFilesToCopyList "VRML", SrcDir$, szVRML$
  278.     AddSectionFilesToCopyList "Castle", SrcDir$, szCastle$
  279.     AddSectionFilesToCopyList "Jet", SrcDir$, szJet$
  280.     AddSectionFilesToCopyList "Models", SrcDir$, szModels$
  281.     AddSectionFilesToCopyList "Weather", SrcDir$, szWeather$
  282.     AddSectionFilesToCopyList "Mtv", SrcDir$, szMtv$
  283.     AddSectionFilesToCopyList "Plugin", SrcDir$, szPlugin$
  284.     AddSectionFilesToCopyList "System", SrcDir$, szSYSTEM$
  285.     AddSectionFilesToCopyList "WinSystem", SrcDir$, szWINSYSTEM$
  286.     CopyFilesInCopyList
  287.  
  288.     REM ini$ = MakePath(DEST$, "DEMO.INI")
  289.     CreateIniKeyValue "WIN.INI", "WebFX", "SystemDirectory", szSystem$ + "\", cmoOverwrite
  290.     REM CreateIniKeyValue ini$, "Section 1", "Key 1", "Value 1" , cmoNone
  291.     REM CreateIniKeyValue ini$, "Section 2", "Key 2", "Value 2" , cmoNone
  292.     REM CreateIniKeyValue ini$, "Section 3", "Key 3", "Value 3" , cmoNone
  293.     
  294.     szGreg$ = MakePath(DEST$,"webfx.exe")
  295.  
  296. '*    RemoveIniKey szNetscapeIni$, "Viewers",  "x-world/x-vrml", cmoNone
  297. '*    CreateIniKeyValue szNetscapeIni$, "Viewers",  "x-world/x-vrml", szGreg$, cmoNone
  298.  
  299. '*    CreateIniKeyValue szNetscapeIni$, "Viewers",  "x-world/x-vrml", szGreg$, cmoOverwrite
  300. '*    CreateIniKeyValue szNetscapeIni$, "Viewers",  "TYPE20",          "x-world/x-vrml", cmoNone
  301. '*    CreateIniKeyValue szNetscapeIni$, "Suffixes", "x-world/x-vrml", "wrl,wrz,gz", cmoOverwrite
  302.  
  303. '* Let's find the next available entry for this viewer type!!
  304. '*    j%=0
  305. '*    FOR i% = 0 TO 100 STEP 1
  306. '*
  307. '*        szGeeWiz$=STR$(i%)
  308. '*        szGeeWiz$="TYPE"+LTRIM$(szGeeWiz$)
  309. '*    
  310. '*        szGeeWiz$ = GetIniKeyString(szNetscapeIni$, "Viewers", szGeeWiz$)
  311. '*        
  312. '*        IF szGeeWiz$ = "" THEN
  313. '*            j% = i%
  314. '*            i% = 100    
  315. '*        ELSEIF szGeeWiz$ = "x-world/x-vrml" THEN
  316. '*            j% = -1
  317. '*            i% = 100
  318. '*        END IF
  319. '*        
  320. '*    NEXT
  321. '*
  322. '*    IF j% <> -1 THEN
  323. '*        szGeeWiz$=STR$(j%)
  324. '*        szGeeWiz$="TYPE"+LTRIM$(szGeeWiz$)
  325. '*        CreateIniKeyValue szNetscapeIni$, "Viewers",  szGeeWiz$, "x-world/x-vrml", cmoOverwrite
  326. '*    ENDIF
  327.  
  328.     CreateProgmanGroup "WebFX", "", cmoNone
  329.     ShowProgmanGroup  "WebFX", 1, cmoNone
  330.     CreateProgmanItem "WebFX", "WebFX Plugin for Netscape", szNetscape$+" "+MakePath(DEST$,"welcome.htm"), MakePath(DEST$,"webfx.ico"), cmoOverwrite
  331.     CreateProgmanItem "WebFX", "Cool Worlds", szNetscape$+" "+MakePath(DEST$,"coolwrls.htm"), "", cmoOverwrite
  332.     CreateProgmanItem "WebFX", "WebFX Readme", szNetscape$+" "+MakePath(DEST$,"readme.htm"), "", cmoOverwrite
  333. '*    CreateProgmanItem "WebFX", "WebFX Readme", "write.exe "+MakePath(DEST$,"webfx.wri"), "", cmoOverwrite
  334.  
  335.     AddDos5Help "WEBFX", "A brief help text for your Windows application."+chr$(10)+"It can be continued on another line with chr$(10).", cmoNone
  336.  
  337.     REM szNetscape$ = FindFileInTree("netscape.exe", "c:\")
  338.     szNetscape$ = FindFileUsingFileOpen("netscape.exe")
  339.     WriteToLogFile "Found Netscape at: " + szNetscape$
  340.  
  341.     CloseLogFile
  342.  
  343. END SUB
  344.  
  345.  
  346.  
  347. '**
  348. '** Purpose:
  349. '**     Appends a file name to the end of a directory path,
  350. '**     inserting a backslash character as needed.
  351. '** Arguments:
  352. '**     szDir$  - full directory path (with optional ending "\")
  353. '**     szFile$ - filename to append to directory
  354. '** Returns:
  355. '**     Resulting fully qualified path name.
  356. '*************************************************************************
  357. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  358.     IF szDir$ = "" THEN
  359.         MakePath = szFile$
  360.     ELSEIF szFile$ = "" THEN
  361.         MakePath = szDir$
  362.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  363.         MakePath = szDir$ + szFile$
  364.     ELSE
  365.         MakePath = szDir$ + "\" + szFile$
  366.     END IF
  367. END FUNCTION
  368.  
  369.