home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / OTHERUTI / DASHBRD.ZIP / DBDASH.MS_ / DBDASH.MS
Text File  |  1993-06-14  |  8KB  |  314 lines

  1. '**************************************************************************
  2. '*                       Dashboard for Windows Setup Script
  3. '**************************************************************************
  4.  
  5. '$INCLUDE 'setupapi.inc'
  6. '$INCLUDE 'msdetect.inc'
  7.  
  8. ''Dialog ID's 
  9. CONST WELCOME         = 100
  10. CONST ASKQUIT         = 200
  11. CONST NOWIN30         = 300
  12. CONST EXITFAILURE     = 400
  13. CONST EXITQUIT        = 600
  14. CONST EXITSUCCESS     = 700
  15. CONST EXITCREATE      = 800
  16. CONST NODASHSPACE     = 2000
  17. CONST DASHISSHELL     = 3100
  18. CONST DASHISRUNNING   = 3200
  19. CONST UPDATEDASH      = 3400
  20. CONST UPDATENEWDASH   = 3500
  21. CONST BADPATH         = 6400
  22.  
  23.  
  24. ''Bitmap ID
  25. CONST LOGO = 1
  26.  
  27. ''SPACE REQUIREMENT
  28. CONST DASHSPACES& = 1600000
  29.  
  30. GLOBAL DEST$        ''Default destination directory.
  31. GLOBAL WINSYSDIR$   ''Windows System Directory
  32. GLOBAL WINDIR$      ''Windows Directory
  33. GLOBAL DASHDRIVE$   ''Dashboard drive.
  34. GLOBAL CUIDLL$      ''DialogBox Dll File
  35. GLOBAL WINMAJOR%    ''Windows Major Version Number
  36. GLOBAL WINMINOR%    ''Windows Minor Version Number
  37. GLOBAL SETASSHELL%  ''Set the DASH as the shell.
  38. GLOBAL MERGEOLDINI% ''Merge old and new DASH.INI's
  39. GLOBAL COPYNEWINI%  ''Copy new DASH.INI file
  40. GLOBAL DELETEDATA%  ''Delete existing data files
  41. GLOBAL DELETEITEMS% ''Delete existing program items
  42. GLOBAL DBWASSHELL%  ''Set the DASH as the shell.
  43.  
  44. DECLARE FUNCTION CheckOldShell LIB "DASHINST.DLL" AS INTEGER
  45. DECLARE FUNCTION DeleteGroupItem LIB "DASHINST.DLL" (szItem$) AS INTEGER
  46. DECLARE FUNCTION IsDashShell LIB "DASHINST.DLL" AS INTEGER
  47. DECLARE FUNCTION IsDashRunning LIB "DASHINST.DLL" AS INTEGER
  48. DECLARE FUNCTION MergeIni LIB "DASHINST.DLL" (szIni$, szOldIni$) AS INTEGER
  49. DECLARE FUNCTION RestartWindows LIB "DASHINST.DLL" (szPath$) AS INTEGER
  50. DECLARE FUNCTION SetDashAsShell LIB "DASHINST.DLL" (szSrc$, szPath$) AS INTEGER
  51. DECLARE SUB Install
  52. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  53.  
  54. CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  55.  
  56. SetBitmap CUIDLL$, LOGO
  57. SetCopyGaugePosition 80, 80
  58.  
  59. szInf$ = GetSymbolValue("STF_SRCINFPATH")
  60. IF szInf$ = "" THEN
  61.   szInf$ = GetSymbolValue("STF_CWDDIR") + "DBDASH.INF"
  62. END IF
  63. ReadInfFile szInf$
  64.     
  65. WINSYSDIR$ = Mid$(GetWindowsSysDir(),1,Len(GetWindowsSysDir())-1)
  66. WINDIR$ = GetWindowsDir()
  67. DEST$ = Mid$(WINDIR$,1,2) + "\DASH"
  68.  
  69. WINMAJOR% = GetWindowsMajorVersion()
  70. WINMINOR% = GetWindowsMinorVersion()
  71.  
  72. MERGEOLDINI% = 0
  73. COPYNEWINI%  = 1
  74. DELETEDATA%  = 0
  75. DELETEITEMS  = 0
  76. SETASSHELL%  = 0
  77.  
  78. IF ((WINMAJOR% < 3) OR ((WINMAJOR% = 3) AND (WINMINOR% < 10))) THEN
  79.   sz$ = UIStartDlg(CUIDLL$, NOWIN30, "FInfoDlgProc", 0, "")
  80.   UIPop 1
  81.   ERROR STFQUIT
  82.   GOTO QUIT
  83. END IF
  84.  
  85. IF (IsDashShell() = 1) THEN
  86.   sz$ = UIStartDlg(CUIDLL$, DASHISSHELL, "FInfoDlgProc", 0, "")
  87.   UIPop 1
  88.  
  89.   IF (sz$ = "CONTINUE") THEN
  90.     szSetup$ = MakePath(GetSymbolValue("STF_SRCDIR"), "SETUP.EXE")
  91.     x% = RestartWindows(szSetup)
  92.     'if we get here, the restart failed...
  93.   END IF
  94.  
  95.   ERROR STFQUIT
  96.   GOTO QUIT
  97. END IF
  98.  
  99. DBWASSHELL% = CheckOldShell()
  100.  
  101. DASHRUNNING:
  102. IF (IsDashRunning() = 1) THEN
  103.   sz$ = UIStartDlg(CUIDLL$, DASHISRUNNING, "FInfoDlgProc", 0, "")
  104.   UIPop 1
  105.  
  106.   IF (sz$ = "CONTINUE") THEN
  107.     GOTO DASHRUNNING
  108.   END IF
  109.  
  110.   ERROR STFQUIT
  111.   GOTO QUIT
  112. END IF
  113.     
  114. SetSymbolValue "EditTextIn", DEST$
  115. SetSymbolValue "EditFocus", "END"
  116.  
  117. GETPATH:
  118. sz$ = UIStartDlg(CUIDLL$, WELCOME, "FEditDlgProc", 0, "")
  119. DEST$ = GetSymbolValue("EditTextOut")
  120.  
  121. IF (sz$ = "CONTINUE") THEN
  122.   IF (IsDirWritable(DEST$) = 0) THEN
  123.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfoDlgProc", 0, "")
  124.     UIPop 1
  125.     GOTO GETPATH
  126.   END IF
  127.  
  128.   szDash$ = MakePath(DEST$, "DASH.EXE")
  129.   x% = DoesFileExist(szDash$, femExists)
  130.  
  131.   IF (x% = 1) THEN
  132.     szVer$ = GetVersionOfFile(szDash$)
  133.     szIni$ = MakePath(DEST$, "DASH.INI")
  134.     bIni% = DoesFileExist(szIni$, femExists)
  135.  
  136.     IF (szVer$ = "") THEN
  137.       sz$ = UIStartDlg(CUIDLL$, UPDATEDASH, "FInfoDlgProc", 0, "")
  138.       UIPop 1
  139.  
  140.       IF (sz$ <> "CONTINUE") THEN
  141.         GOTO GETPATH
  142.       ELSE
  143.         IF (bIni% = 1) THEN
  144.           szTempIni$ = MakePath(DEST$, "~DASHOLD.INI")
  145.           CopyFile szIni$, szTempIni$, cmoOverwrite, 0
  146.           MERGEOLDINI% = 1
  147.           DELETEITEMS% = 1
  148.         END IF
  149.  
  150.       END IF
  151.     ELSEIF (szVer$ = "2.0.0.0") THEN
  152.       IF (bIni% = 1) THEN
  153.         COPYNEWINI% = 0
  154.       END IF
  155.     ELSE
  156.       sz$ = UIStartDlg(CUIDLL$, UPDATENEWDASH, "FInfoDlgProc", 0, "")
  157.       UIPop 1
  158.  
  159.       IF (sz$ <> "CONTINUE") THEN
  160.         GOTO GETPATH
  161.       ELSE
  162.         DELETEDATA% = 1
  163.       END IF
  164.     END IF
  165.   END IF
  166.  
  167.   UIPop 1
  168. ELSE
  169.   sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FInfoDlgProc", 0, "")
  170.  
  171.   IF sz$ = "CONTINUE" THEN
  172.     UIPopAll
  173.     GOTO QUITL2
  174.   ELSE
  175.     UIPop 1
  176.   END IF
  177.  
  178.   GOTO GETPATH
  179. END IF
  180.  
  181. DASHDRIVE$ = Mid$(DEST$,1,1)
  182. IF (GetFreeSpaceForDrive(DASHDRIVE$) < DASHSPACES&) THEN
  183.   sz$ = UIStartDlg(CUIDLL$, NODASHSPACE, "FInfoDlgProc", 0, "")
  184.   UIPop 1
  185.   ERROR STFQUIT
  186.   GOTO QUIT
  187. END IF
  188.  
  189. Install
  190.  
  191. ON ERROR GOTO GROUPFAIL    
  192. CreateProgmanGroup "Dashboard for Windows", "", cmoNone
  193. ShowProgmanGroup "Dashboard for Windows", 1, cmoNone
  194. ON ERROR GOTO QUIT
  195.  
  196. IF (DELETEITEMS% = 1) THEN
  197.   x% = DeleteGroupItem("Dashboard for Windows")
  198.   x% = DeleteGroupItem("Remove Dashboard")
  199.   x% = DeleteGroupItem("Read Me")
  200.   x% = DeleteGroupItem("Read Me Advanced")
  201. ENDIF
  202.  
  203. path$ = MakePath(DEST$, "DASH.EXE")
  204. CreateProgmanItem "Dashboard for Windows", "Dashboard 2.0 for Windows", path$, "", cmoOverwrite
  205.  
  206. path$ = MakePath("", "DASHZAP.EXE " + DEST$)
  207. CreateProgmanItem "Dashboard for Windows", "Remove Dashboard 2.0", path$, "", cmoOverwrite
  208.  
  209. readme$ = MakePath(DEST$, "README.WRI")
  210. CreateProgmanItem "Dashboard for Windows", "Read Me 2.0", readme$, "", cmoOverwrite
  211.  
  212. readme$ = MakePath(DEST$, "READADV.WRI")
  213. CreateProgmanItem "Dashboard for Windows", "Read Me Advanced 2.0", readme$, "", cmoOverwrite
  214.  
  215. QUIT:
  216. IF (ERR = 0) THEN
  217.   sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FInfoDlgProc", 0, "")
  218.   UIPop 1
  219.  
  220.   IF (MERGEOLDINI% = 1) THEN
  221.     szIni$ = MakePath(DEST$, "DASH.INI")
  222.     szTempIni$ = MakePath(DEST$, "~DASHOLD.INI")
  223.     x% = MergeIni(szIni$, szTempIni$)
  224.   END IF
  225.  
  226.   IF (DBWASSHELL% = 1) THEN
  227.     SETASSHELL = 1
  228.   END IF
  229. ELSEIF (ERR = STFQUIT) THEN
  230.   sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  231.   UIPop 1
  232. ELSE
  233.   sz$ = UIStartDlg(CUIDLL$, EXITFAILURE, "FInfoDlgProc", 0, "")
  234.   UIPop 1
  235. END IF
  236.  
  237. QUITL2:
  238. IF (MERGEOLDINI% = 1) THEN
  239.   szTempIni$ = MakePath(DEST$, "~DASHOLD.INI")
  240.   x% = DoesFileExist(szTempIni$, femExists)
  241.  
  242.   IF (x% = 1) THEN
  243.     RemoveFile szTempIni$, cmoNone
  244.   END IF
  245. END IF
  246.     
  247. IF (SETASSHELL% = 1) THEN
  248.   szSrc$ = GetSymbolValue("STF_SRCDIR")
  249.   szShell$ = MakePath(DEST$, "DASH.EXE")
  250.   x% = SetDashAsShell(szSrc$, szShell$)
  251. END IF
  252.  
  253. END
  254.  
  255. GROUPFAIL:
  256. sz$ = UIStartDlg(CUIDLL$, EXITCREATE, "FInfoDlgProc", 0, "")
  257. UIPop 1
  258. GOTO QUITL2
  259.  
  260.  
  261. '**
  262. '** Purpose:
  263. '**     Builds the copy list and performs the copy.
  264. '** Arguments:
  265. '**     none.
  266. '** Returns:
  267. '**     none.
  268. '*************************************************************************
  269. SUB Install STATIC
  270.  
  271.   SrcDir$ = GetSymbolValue("STF_SRCDIR")
  272.   CreateDir DEST$, cmoNone
  273.     
  274.   AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  275.  
  276.   IF (COPYNEWINI% = 1) THEN
  277.     AddSectionFilesToCopyList "INIFILES", SrcDir$, DEST$
  278.   END IF
  279.  
  280.   IF (DELETEDATA% = 1) THEN
  281.     AddSectionFilesToCopyList "DELDATA", SrcDir$, DEST$
  282.   END IF
  283.  
  284.   AddSectionFilesToCopyList "DEINSTALL", SrcDir$, WINDIR$
  285.  
  286.   CopyFilesInCopyList
  287.   ClearCopyList
  288.  
  289. END SUB
  290.  
  291.  
  292. '**
  293. '** Purpose:
  294. '**     Appends a file name to the end of a directory path,
  295. '**     inserting a backslash character as needed.
  296. '** Arguments:
  297. '**     szDir$  - full directory path (with optional ending "\")
  298. '**     szFile$ - filename to append to directory
  299. '** Returns:
  300. '**     Resulting fully qualified path name.
  301. '*************************************************************************
  302. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  303.     IF szDir$ = "" THEN
  304.         MakePath = szFile$
  305.     ELSEIF szFile$ = "" THEN
  306.         MakePath = szDir$
  307.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  308.         MakePath = szDir$ + szFile$
  309.     ELSE
  310.         MakePath = szDir$ + "\" + szFile$
  311.     END IF
  312. END FUNCTION
  313.  
  314.