home *** CD-ROM | disk | FTP | other *** search
/ Internet Directory for Kids & Parents / InternetDirectory.iso / internet / srfwatch / win311 / surf.ms_ / surf.ms
Text File  |  1997-11-25  |  16KB  |  621 lines

  1. '**************************************************************************
  2. '*                       SurfWatch Setup
  3. '************************************************************************** 
  4.  
  5. '*************************** Change History ******************************* 
  6. '*     
  7. '*    12/16/95    WSD    Passed DateStr$ to isTrailWare to inhibit multiple purchase
  8. '*    12/14/95    WSD    Added isTrialWare purchase enabling
  9. '*  12/13/95    WSD    Added CONFIG options for ATT and TrialWare.  Search for CONFIG
  10. '*
  11. '*    12/13/95    WSD    Added GetDateTime and call to put encoded date/time into
  12. '*                    into surfw.ini
  13. '*
  14. '**************************************************************************
  15.  
  16. '$DEFINE DEBUG  ''Define for script development/debugging
  17.  
  18. '$INCLUDE 'setupapi.inc'
  19. '$INCLUDE 'msdetect.inc'
  20.  
  21. ''Dialog ID's
  22. CONST WELCOME    = 100        '' CONFIG: Standard
  23.  
  24. CONST BADVERIFY     = 200
  25. CONST LEGALSTUFF    = 300    
  26.  
  27. CONST EXITFAILURE        = 400        '' CONFIG: Standard
  28.  
  29. CONST REMOVER       = 500
  30. CONST EXITQUIT      = 600
  31. CONST EXITSUCCESS   = 700 
  32. CONST EXITSUCCESS_TRIAL = 703
  33. CONST OPTIONS       = 800 
  34. CONST OPTIONS_TRIAL    = 1803 
  35. CONST EXIT_ALREADY_PURCHASE    =    1903
  36. CONST REMOVECANCEL  = 900
  37. CONST EXITUISUCCESS = 1000
  38. CONST GETPASSWORD   = 1100
  39. CONST CONFIRMPSSWRD = 1200
  40. CONST GETNAME       = 1300
  41. CONST EXITNOCHANGE  = 1400
  42. CONST SELECTDRIVE   = 1500
  43. CONST WINSOCKLOAD   = 1600
  44. CONST BADPASSWORD   = 6000
  45.  
  46. ''following were taken from windows.h. &H means they're hex
  47. CONST WS_VISIBLE=&H10000000
  48. CONST WS_BORDER =&H00800000
  49. CONST WS_CLIPCHILDREN =&H02000000
  50. CONST GWL_STYLE =-16
  51. CONST SW_SHOWMAXIMIZED=3
  52.  
  53. DECLARE FUNCTION ShowWindow  LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  54. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  55. DECLARE FUNCTION WinExec LIB "kernel.exe" (szCmdLine$, wFlags%) AS INTEGER
  56. DECLARE FUNCTION encrypt LIB "mscuistf.dll" (sz$) AS INTEGER
  57. DECLARE FUNCTION SetFileAttr LIB "mscuistf.dll" (szFileName$,wAttr%) AS INTEGER
  58. DECLARE FUNCTION SetWildAttr LIB "mscuistf.dll" (szFileName$,wAttr%) AS INTEGER
  59. DECLARE FUNCTION KSW LIB "mscuistf.dll" () AS INTEGER
  60. DECLARE FUNCTION KSU LIB "mscuistf.dll" () AS INTEGER
  61. DECLARE FUNCTION Penguin LIB "mscuistf.dll" (sz$) AS INTEGER
  62. DECLARE FUNCTION UnPenguin LIB "mscuistf.dll" () AS INTEGER
  63. DECLARE FUNCTION Installed LIB "mscuistf.dll" () AS INTEGER
  64. DECLARE FUNCTION InstallDrive LIB "mscuistf.dll" () AS INTEGER
  65. DECLARE FUNCTION pmDeleteGroup LIB "mscuistf.dll" (szGroup$) AS INTEGER
  66. DECLARE FUNCTION pmDeleteItem LIB "mscuistf.dll" (szItem$) AS INTEGER
  67. DECLARE FUNCTION pmInitialize LIB "mscuistf.dll" () AS INTEGER
  68. DECLARE FUNCTION pmUninitialize LIB "mscuistf.dll" () AS INTEGER
  69. DECLARE FUNCTION Ostritch LIB "mscuistf.dll" (hWnd%,option%) AS INTEGER
  70. DECLARE FUNCTION Parrot LIB "mscuistf.dll" (sz$) AS INTEGER
  71. DECLARE FUNCTION Budgie LIB "mscuistf.dll" (sz$) AS INTEGER
  72. DECLARE FUNCTION Duck LIB "mscuistf.dll" () AS INTEGER
  73. DECLARE FUNCTION Goose LIB "mscuistf.dll" () AS INTEGER
  74. DECLARE FUNCTION WinVersionCheck LIB "mscuistf.dll" () AS INTEGER  
  75. DECLARE FUNCTION GetTrialDate LIB "mscuistf.dll" (szDateSpace$) AS INTEGER
  76. DECLARE FUNCTION GetTrialOverride LIB "mscuistf.dll" (szDateSpace$) AS INTEGER
  77. DECLARE FUNCTION isTrialWare LIB "mscuistf.dll" (IDStr$) AS INTEGER
  78. DECLARE FUNCTION DlgOffset LIB "mscuistf.dll" () AS INTEGER
  79.  
  80. ''Bitmap ID
  81. CONST LOGO = 1
  82.  
  83. GLOBAL DEST$        ''Default destination directory.
  84. GLOBAL OPTCUR$      ''Option selection from option dialog.
  85. GLOBAL DOSDIR$
  86. GLOBAL Password$
  87. GLOBAL EXENAME$
  88. GLOBAL DLLNAME$
  89. GLOBAL DESTDIR$
  90. GLOBAL DESTDRIVE$
  91. GLOBAL EXITREASON%
  92. GLOBAL UserName$
  93. GLOBAL DateStr$
  94. GLOBAL NetDriveInstall%
  95.  
  96. DECLARE SUB Install
  97. DECLARE SUB UnInstall
  98. DECLARE SUB AddToRunLine
  99. DECLARE SUB RemoveFromRunLine
  100. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  101. DECLARE FUNCTION GetFileFromPath(szPath$) AS STRING
  102.  
  103. INIT:
  104.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  105.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  106.  
  107.     ' Maximize the background window
  108.  
  109.     hWnd%=HwndFrame()
  110.     i1&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN)
  111.     j1%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  112.  
  113.     SetBitmap CUIDLL$, LOGO
  114.     SetTitle "SurfWatch"
  115.  
  116.     EXITREASON%=EXITSUCCESS
  117.  
  118.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  119.     IF szInf$ = "" THEN
  120.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SURF.INF"
  121.     END IF
  122.     ReadInfFile szInf$
  123.  
  124.     szLegal$ = GetSymbolValue("STF_SRCINFPATH")
  125.     IF szLegal$ = "" THEN
  126.         szLegal$ = GetSymbolValue("STF_CWDDIR") + "LEGAL.TXT"
  127.     END IF
  128.  
  129.     ' Read the setup.ini file to check for network drive install
  130.     
  131.     NetDriveInstall% = 0
  132.     szIniFile$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INI"
  133.     if FValidIniFile(szIniFile$) <> 0 then
  134.         Res$ = GetIniKeyString(szIniFile$,"Options","NetDrives")
  135.         NetDriveInstall% = VAL(Res$)
  136.     endif
  137.  
  138.     IF WinVersionCheck()=0 THEN
  139.         i% = DoMsgBox("This is the Windows 3.1 version of SurfWatch.  Please contact 415-948-9505 for Windows 95 upgrade information.","ERROR",MB_OK+MB_ICONSTOP)
  140.         END
  141.     END IF
  142.  
  143.     IF NOT EXISTS( szLegal$ ) THEN
  144.         i% = DoMsgBox("Cant open legal","ERROR",MB_OK)
  145.         GOTO QUIT
  146.     ENDIF
  147.  
  148.     OPTCUR$ = "1"
  149.     DESTDRIVE$ = "C"
  150.     DESTDIR$ = ":\CO_RO_NT"
  151.     DOSDIR$ = "c:\dos\"
  152.     EXENAME$ = "SURFW.EXE"
  153.     DLLNAME$ = "SWUTIL.DLL"
  154.     UserName$ = ""  
  155.     DateStr$ = "MMMMMMMM" 
  156.     i% = GetTrialDate(DateStr$)
  157.  
  158. WELCOME:
  159.     IF isTrialWare("") AND Installed() THEN
  160.         GOTO OPTION
  161.     ELSE
  162.         sz$ = UIStartDlg(CUIDLL$, WELCOME+DlgOffset(), "FInfoDlgProc",0,"")
  163.      ENDIF
  164.  
  165.       IF sz$ = "REACTIVATE" THEN
  166.         GOTO WELCOME
  167.     ENDIF
  168.     UIPop 1 
  169.     
  170. ' Check for reinstall
  171.     OstritchV% = 0
  172.     IF Installed() THEN
  173.         hWnd%=HwndFrame()
  174.         OstritchV% = Ostritch(hWnd%, 0) 
  175.         IF OstritchV%=0 THEN
  176.             EXITREASON%=EXITNOCHANGE
  177.             GOTO QUIT
  178.         END IF
  179.     ELSE
  180.         GOTO LEGAL
  181.     END IF
  182.  
  183. OPTION:
  184.     SetSymbolValue "RadioDefault", OPTCUR$
  185. OPTL1:
  186.     if isTrialWare("") THEN
  187.            sz$ = UIStartDlg(CUIDLL$, OPTIONS_TRIAL, "FRadioDlgProc", 0, "")
  188.     ELSE
  189.         sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", 0, "")
  190.        ENDIF
  191.     OPTCUR$ = GetSymbolValue("ButtonChecked")
  192.     IF sz$ = "REACTIVATE" THEN
  193.         GOTO OPTL1
  194.     ENDIF
  195.     UIPop 1 
  196.      
  197.     IF isTrialWare("") THEN
  198.          hWnd%=HwndFrame()
  199.            IF OPTCUR$="1" THEN
  200.               i% = GetTrialOverride(DateStr$)
  201.                 IF isTrialWare(DateStr$) = 0 THEN
  202.                  EXITREASON% = EXIT_ALREADY_PURCHASE
  203.                  GOTO QUIT
  204.              END IF
  205.             i% = GetTrialDate(DateStr$)
  206.             OstritchV% = Ostritch(hWnd%, 1) 
  207.          ELSE
  208.              OstritchV% = Ostritch(hWnd%, 0) 
  209.          ENDIF 
  210.          
  211.         IF OstritchV%=0 THEN
  212.             EXITREASON%=EXITNOCHANGE
  213.             GOTO QUIT
  214.         END IF
  215.     END IF
  216.  
  217.     IF (OPTCUR$="2") AND (OstritchV% < 2) THEN 
  218.         GOTO DOUNINSTALL  
  219.     ENDIF
  220.     IF (isTrialWare("")) AND (OPTCUR$="1") AND (OstritchV% = 2) THEN 
  221.           
  222.         i% = GetTrialOverride(DateStr$)
  223.  
  224.         i% = KSW()
  225.         i%= KSU()
  226.  
  227.         Drive%=InstallDrive()
  228.         IF Drive%<>-1 THEN
  229.             DESTDRIVE$=CHR$(Drive%+ASC("a"))
  230.         ENDIF
  231.  
  232.         DEST$ = DESTDRIVE$ + DESTDIR$
  233.         CreateProgmanGroup "startup","",cmoNone
  234.         ShowProgmanGroup "startup",6,cmoNone
  235.         Path$ = DEST$ + "\surfu.exe -s"
  236.         CreateProgmanItem "startup","SurfWatch Updater",Path$,"",cmoOverwrite  
  237.         
  238.         DataFile$ = DEST$ + "\surfw.dat"
  239.         IF DoesFileExist (DataFile$,femExists) THEN
  240.             RemoveFile DataFile$, cmoNone
  241.         ENDIF   
  242.         
  243.          IniFile$ = GetWindowsDir() + "SURFW.INI"
  244.         CreateIniKeyValue IniFile$,"SurfWatch","Code",DateStr$,cmoOverwrite
  245.         
  246.          SurfW$ = DEST$ + "\" + EXENAME$
  247.         i%=WinExec(SurfW$,0)
  248.         i%=WinExec(Path$,0) 
  249.         
  250. PURCHASE:
  251.            sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS_TRIAL, "FInfo0DlgProc", 0, "")
  252.         IF sz$="REACTIVATE" THEN
  253.             GOTO PURCHASE
  254.         END IF
  255.         UIPop 1
  256.         END
  257.     ENDIF 
  258.     
  259. LEGAL:
  260.     SetSymbolValue "EditTextIn" , szLegal$
  261. LEGAL1:
  262.     sz$ = UIStartDlg(CUIDLL$, LEGALSTUFF, "FLegalDlgProc", 0, "")
  263.     IF sz$ = "CONTINUE" THEN
  264.         UIPop 1
  265.     ELSEIF sz$ = "REACTIVATE" THEN
  266.         GOTO LEGAL1
  267.     ELSE
  268.         EXITREASON%=EXITQUIT
  269.         GOTO QUIT
  270.     ENDIF
  271.  
  272. DRIVECHECK:
  273.     Drive% = InstallDrive()
  274.     IF (Installed()) AND (Drive%<>-1) THEN
  275.         DESTDRIVE$=CHR$(Drive%+ASC("a"))
  276.     ELSE
  277.         GetLocalHardDrivesList("Drives")
  278.         IF NetDriveInstall%>0 THEN
  279.             GetNetworkDrivesList("NetDrives")
  280.             NumNetDrives% = GetListLength("NetDrives")
  281.             IF NumNetDrives%>0 THEN
  282.                 FOR i = 1 TO NumNetDrives%
  283.                     AddListItem "Drives",GetListItem("NetDrives",i)
  284.                 NEXT i
  285.             END IF
  286.         END IF
  287.         
  288.         NumDrives% = GetListLength("Drives")
  289.         IF NumDrives%>1 THEN
  290.             SetSymbolValue "ListItemsIn" , GetSymbolValue("Drives")
  291.             SetSymbolValue "ListItemsOut" , GetListItem("Drives",1)
  292. DRIVECHECK1:
  293.             sz$ = UIStartDlg(CUIDLL$, SELECTDRIVE, "FListDlgProc", 0,"")
  294.             IF sz$ = "CONTINUE" THEN
  295.                 UIPop 1
  296.                 DESTDRIVE$ = MID$(GetSymbolValue("ListItemsOut"),1,1)
  297.             ELSEIF sz$ = "REACTIVATE" THEN
  298.                 GOTO DRIVECHECK1
  299.             ELSE
  300.                 EXITREASON%=EXITQUIT
  301.                 GOTO QUIT
  302.             END IF
  303.         ENDIF
  304.     ENDIF
  305.     DEST$ = DESTDRIVE$ + DESTDIR$
  306.  
  307. USERNAME:
  308.     SetSymbolValue "EditTextIn" , ""
  309. USERNAME1:
  310.     sz$ = UIStartDlg(CUIDLL$, GETNAME, "FEditDlgProc", 0, "")
  311.     IF sz$ = "CONTINUE" THEN
  312.         UIPop 1
  313.     ELSEIF sz$ = "REACTIVATE" THEN
  314.         GOTO USERNAME1
  315.     ELSE
  316.         EXITREASON%=EXITQUIT
  317.         GOTO QUIT
  318.     END IF
  319.     UserName$ = GetSymbolValue( "EditTextOut" )
  320.  
  321. PASSWORD:
  322.     SetSymbolValue "EditTextIn", ""
  323. PASSWORD1:
  324.     sz$ = UIStartDlg(CUIDLL$, GETPASSWORD, "FEditDlgProc", 0, "")
  325.     IF sz$ = "CONTINUE" THEN
  326.         UIPop 1
  327.     ELSEIF sz$ = "REACTIVATE" THEN
  328.         GOTO PASSWORD1
  329.     ELSE
  330.         EXITREASON%=EXITQUIT
  331.         GOTO QUIT
  332.     END IF
  333.  
  334.     PassWord$ = GetSymbolValue("EditTextOut")
  335.     IF LEN(PassWord$) = 0 THEN
  336.         GOSUB BADPASSWORD
  337.         GOTO PASSWORD
  338.     ENDIF
  339.  
  340. PASSWORD2:
  341.     sz$ = UIStartDlg(CUIDLL$,CONFIRMPSSWRD,"FEditDlgProc", 0, "")
  342.     IF sz$ = "CONTINUE" THEN
  343.         UIPop 1
  344.     ELSEIF sz$ = "REACTIVATE" THEN
  345.         GOTO PASSWORD2
  346.     ELSE
  347.         EXITREASON%=EXITQUIT
  348.         GOTO QUIT
  349.     END IF
  350.  
  351.     IF PassWord$ = GetSymbolValue("EditTextOut") THEN
  352.         GOTO DOINSTALL
  353.     ELSE
  354. PASSWORD3:
  355.         sz$ = UIStartDlg(CUIDLL$,BADVERIFY,"FInfoDlgProc", 0, "")
  356.         IF sz$ = "CONTINUE" THEN
  357.             UIPop 1
  358.         ELSEIF sz$ = "REACTIVATE" THEN
  359.             GOTO PASSWORD3
  360.         ELSE
  361.             EXITREASON%=EXITQUIT
  362.             GOTO QUIT
  363.         END IF
  364.         GOTO PASSWORD
  365.     ENDIF
  366.  
  367.  
  368. DOINSTALL:
  369.     Install
  370.     IF isTrialWare("") THEN
  371.         Path$ = DEST$ + "\surfu.exe -t"  
  372.     ELSE
  373.         Path$ = DEST$ + "\surfu.exe"  
  374.     END IF
  375.     i%=WinExec(Path$,1)
  376.  
  377. DOINSTALL2:
  378.     sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FInfo0DlgProc", 0, "")
  379.     IF sz$="REACTIVATE" THEN
  380.         GOTO DOINSTALL2
  381.     END IF
  382.     UIPop 1
  383.     END
  384.  
  385. DOUNINSTALL:
  386.     sz$ = UIStartDlg(CUIDLL$, REMOVER, "FInfoDlgProc", 0, "")
  387.     IF sz$="CONTINUE" THEN
  388.         UIPop 1
  389.     ELSEIF sz$="REACTIVATE" THEN
  390.         GOTO DOUNINSTALL
  391.     ELSE
  392.         UIPop 1
  393.         EXITREASON%=REMOVECANCEL
  394.         GOTO QUIT
  395.     END IF
  396.  
  397.     Drive%=InstallDrive()
  398.     IF Drive%<>-1 THEN
  399.         DESTDRIVE$=CHR$(Drive%+ASC("a"))
  400.     ENDIF
  401.  
  402.     DEST$ = DESTDRIVE$ + DESTDIR$
  403.  
  404.     Uninstall
  405.     sz$ = UIStartDlg(CUIDLL$, EXITUISUCCESS , "FInfo0DlgProc",0,"")
  406.     UIPop 1
  407.     END
  408.  
  409. QUIT:
  410.     ON ERROR GOTO ERRQUIT
  411.     dlg% = EXITREASON
  412.  
  413.     IF ERR THEN 
  414.         dlg% = EXITFAILURE + DlgOffset()
  415.     END IF
  416. QUITL1:
  417.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  418.     IF sz$ = "REACTIVATE" THEN
  419.         GOTO QUITL1
  420.     END IF
  421.     UIPop 1
  422.  
  423.     END
  424.  
  425. ERRQUIT:
  426.     i% = DoMsgBox("Setup data corrupted, contact SurfWatch", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  427.     END
  428.  
  429. BADPASSWORD:
  430.     sz$ = UIStartDlg(CUIDLL$, BADPASSWORD, "FInfo0DlgProc", 0, "")
  431.     IF sz$ = "REACTIVATE" THEN
  432.         GOTO BADPASSWORD
  433.     END IF
  434.     UIPop 1
  435.     RETURN
  436.  
  437. '**
  438. '** Purpose:
  439. '**     Builds the copy list and performs all installation operations.
  440. '** Arguments:
  441. '**     none.
  442. '** Returns:
  443. '**     none.
  444. '*************************************************************************
  445. SUB Install STATIC
  446.  
  447.     i% = KSW()
  448.     i%= KSU()
  449.  
  450.     i%=Parrot(DEST$)
  451.  
  452.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  453.     CreateDir DEST$, cmoNone
  454.  
  455.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  456.     CopyFilesInCopyList
  457.  
  458.     SysDir$ = GetWindowsSysDir()
  459.     Ctl3d$ = SysDir$ + "ctl3d.dll" 
  460.  
  461.     IF NOT EXISTS (Ctl3d$) THEN
  462.         ClearCopyList
  463.         AddSectionFilesToCopyList "SYSTEM", SrcDir$ , SysDir$
  464.         CopyFilesInCopyList
  465.     END IF
  466.  
  467.     FileSpec$ = DEST$ + "\surfw.dat"
  468.     IF EXISTS( FileSpec$ ) THEN
  469.         RemoveFile FileSpec$, cmoNone
  470.     END IF
  471.  
  472.     AddToRunLine
  473.  
  474.     i% = encrypt(PassWord$)
  475.     PassWord$ = PassWord$
  476.     IniFile$ = GetWindowsDir() + "SURFW.INI"
  477.     CreateIniKeyValue IniFile$,"SurfWatch","Owner",UserName$,cmoOverwrite
  478.     CreateIniKeyValue IniFile$,"SurfWatch","Entry",PassWord$,cmoOverwrite
  479.     CreateIniKeyValue IniFile$,"SurfWatch","Code",DateStr$,cmoOverwrite
  480.     szIniFile$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INI"
  481.     if FValidIniFile(szIniFile$) <> 0 then
  482.         Default$ = GetIniKeyString(szIniFile$,"Options","DefaultFilters")
  483.         if( Default$<>"" ) then
  484.             CreateIniKeyValue IniFile$,"SurfWatch","DefaultFilters",Default$,cmoOverwrite
  485.         endif
  486.     endif
  487.  
  488.  
  489.     i%=Budgie(DEST$)
  490.     i%=Penguin(DEST$)
  491.  
  492.     CreateProgmanGroup "startup","",cmoNone
  493.     ShowProgmanGroup "startup",6,cmoNone  
  494.     IF isTrialWare("") THEN
  495.         Path$ = DEST$ + "\surfu.exe -t"  
  496.     ELSE
  497.         Path$ = DEST$ + "\surfu.exe -s"  
  498.     END IF
  499.     CreateProgmanItem "startup","SurfWatch Updater",Path$,"",cmoOverwrite
  500.     Path$ = DEST$ + "\surfw.exe"
  501.     CreateProgmanItem "startup","SurfWatch",Path$,"",cmoOverwrite
  502.  
  503.     ' Run SurfWatch
  504.  
  505.     SurfW$ = DEST$ + "\" + EXENAME$
  506.     i%=WinExec(SurfW$,0)
  507.  
  508. END SUB
  509.  
  510. '**
  511. '** Purpose:
  512. '**     Builds the copy list and performs all installation operations.
  513. '** Arguments:
  514. '**     none.
  515. '** Returns:
  516. '**     none.
  517. '*************************************************************************
  518. SUB UnInstall STATIC
  519.  
  520.     i% = KSW()
  521.     i% = KSU()
  522.  
  523.     i%=Parrot(DEST$)
  524.     i%=Duck()
  525.  
  526.     ' Erase all the files in the install directory
  527.  
  528.     KillFileStr$ = DEST$ + "\*.*"
  529.     IF EXISTS(KillFileStr$) THEN
  530.         KILL KillFileStr$
  531.     ENDIF
  532.  
  533.  
  534.     TempDir$ = DESTDRIVE$ + ":\"
  535.  
  536.     CHDIR TempDir$
  537.  
  538.     IF DoesDirExist(DEST$) THEN
  539.         RMDIR DEST$
  540.     ENDIF
  541.  
  542.     i%=Goose()
  543.  
  544.     RemoveFromRunLine
  545.  
  546.     i%=UnPenguin()
  547.  
  548.     ' Erase surfw.ini
  549.  
  550.     IniFile$ = GetWindowsDir() + "SURFW.INI"
  551.     IF DoesFileExist (IniFile$,femExists) THEN
  552.         RemoveFile IniFile$, cmoNone
  553.     ENDIF
  554.     
  555.     IF pmInitialize() THEN
  556.         CreateProgmanGroup "startup","",cmoNone
  557.         i% = pmDeleteItem("SurfWatch Updater")
  558.         i% = pmDeleteItem("SurfWatch")
  559.         i% = pmUninitialize()
  560.     ELSE
  561.         i%=DoMsgBox("Unable to remove Program Manager Items","SurfWatch Updater",MB_OK)
  562.     ENDIF
  563.  
  564. END SUB
  565.  
  566. '**
  567. '** Purpose:
  568. '**     Appends a file name to the end of a directory path,
  569. '**     inserting a backslash character as needed.
  570. '** Arguments:
  571. '**     szDir$  - full directory path (with optional ending "\")
  572. '**     szFile$ - filename to append to directory
  573. '** Returns:
  574. '**     Resulting fully qualified path name.
  575. '*************************************************************************
  576. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  577.     IF szDir$ = "" THEN
  578.         MakePath = szFile$
  579.     ELSEIF szFile$ = "" THEN
  580.         MakePath = szDir$
  581.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  582.         MakePath = szDir$ + szFile$
  583.     ELSE
  584.         MakePath = szDir$ + "\" + szFile$
  585.     END IF
  586. END FUNCTION
  587.  
  588. FUNCTION GetFileFromPath(szPath$) STATIC AS STRING
  589.     ' Find the last \
  590.     FOR i = LEN(szPath$) TO 1 STEP -1
  591.         IF MID$(szPath$,i,1)="\" THEN
  592.             GetFileFromPath = MID$(szPath,i+1)
  593.             i = 1
  594.         END IF
  595.     NEXT i
  596. END FUNCTION
  597.  
  598. SUB AddToRunLine STATIC
  599.     RemoveFromRunLine
  600.     SurfW$ = DEST$ + "\" + EXENAME$
  601.     RunStr$ = GetIniKeyString( "WIN.INI", "windows", "load" )
  602.     RunStr$ = RunStr$ + " " + SurfW$
  603.     CreateIniKeyValue "WIN.INI", "windows" , "load" , RunStr$ , cmoOverwrite
  604. END SUB
  605.  
  606. SUB RemoveFromRunLine STATIC
  607.     SurfW$ = DESTDIR$ + "\" + EXENAME$
  608.     RunStr$ = GetIniKeyString( "WIN.INI", "windows", "load" )
  609.     i% = INSTR( RunStr$ , SurfW$ )
  610.     IF NOT i%=0 THEN
  611.         i%=i%-1
  612.         SurfW$ = DESTDIR$ + "\" + EXENAME$
  613.         Temp$ = MID$( RunStr$ , 1 , i%-1 )
  614.         i% = i% + LEN( SurfW$ )
  615.         IF i%<LEN( RunStr$ ) THEN
  616.             Temp$ = Temp$ + MID$( RunStr$ , i% )
  617.         ENDIF
  618.         CreateIniKeyValue "WIN.INI","windows","load",Temp$,cmoOverwrite
  619.     ENDIF
  620. END SUB
  621.