home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / WIN_UTL2 / WINSMILE.ZIP / WINSMILE.MS_ / WINSMILE.MS
Text File  |  1993-10-08  |  7KB  |  238 lines

  1. '**************************************************************************
  2. '*            Setup script for WINSMILE - (remember MSCUISTF.DLL)                       
  3. '**************************************************************************
  4.  
  5. rem ''$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''SHAREWARE VERSION HARD DISK SPACE NEEDED
  11. CONST DISK_FUDGE   = 100000
  12. CONST DISK_PROGRAM = 650000
  13. CONST DISK_SOUND   = 204000
  14. CONST DISK_SETUP   = 262000
  15.  
  16. CONST WS_VISIBLE       = &H10000000
  17. CONST WS_BORDER        = &H00800000
  18. CONST WS_CLIPCHILDREN  = &H02000000
  19. CONST GW_STYLE         = -16
  20. CONST SW_SHOWMAXIMIZED = 3
  21.  
  22. CONST ASKQUIT       = 200    ''Dialog ID's
  23. CONST DESTPATH      = 300
  24. CONST EXITFAILURE   = 400
  25. CONST EXITSUCCESS   = 700
  26. CONST OPTIONS       = 800
  27. CONST APPHELP       = 900
  28. CONST NOSPACE        = 6301
  29. CONST BADPATH       = 6400
  30. CONST LOGO            = 1        ''Bitmap ID
  31.  
  32. GLOBAL DEST$        ''Default destination directory.
  33. GLOBAL OPTCUR$      ''Option selection from option dialog.
  34. GLOBAL do_audio%    ''0 = no audio files, 1 = use audio files
  35.  
  36. DECLARE SUB Install
  37. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  38. DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  39. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%,offset%,style&) AS LONG
  40.  
  41. INIT:
  42.     hWnd% = HwndFrame()
  43.     ii& = SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE + WS_BORDER + WS_CLIPCHILDREN)
  44.     j% = ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  45.  
  46.     DEST$ = "C:\WINSMILE"
  47.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  48.     MSG1$ = "Winsmile needs"
  49.     MSG2$ = " bytes.  You have only"
  50.     MSG3$ = " bytes on drive "
  51.     MSG4$ = "You may have to delete some files in order to install Winsmile on drive "
  52.     MSG5$ = "Hint: consider installing Winsmile without the sound files."
  53.  
  54.     SetBitmap CUIDLL$,LOGO
  55.     SetTitle "Winsmile Setup"
  56.  
  57.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  58.     IF szInf$ = "" THEN
  59.         szInf$ = GetSymbolValue("STF_CWDDIR") + "WINSMILE.INF"
  60.     END IF
  61.     ReadInfFile szInf$
  62.  
  63.     OPTCUR$ = "1"
  64.  
  65.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  66.     WinDrive$ = MID$(GetWindowsDir,1,1)
  67.     IF IsDriveValid(WinDrive$) = 0 THEN
  68.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.","DEBUG",MB_TASKMODAL+MB_ICONHAND+MB_OK)
  69.         GOTO QUIT
  70.     END IF
  71.  
  72. OPTION:
  73.     SetSymbolValue "RadioDefault",OPTCUR$
  74. OPTL1:
  75.     sz$ = UIStartDlg(CUIDLL$,OPTIONS,"FRadioDlgProc",0,"" )
  76.     OPTCUR$ = GetSymbolValue("ButtonChecked")
  77.     
  78.     IF OPTCUR$ = "2" THEN
  79.         do_audio% = 0
  80.     ELSE
  81.         do_audio% = 1
  82.     ENDIF        
  83.  
  84.     IF sz$ = "CONTINUE" THEN
  85.         UIPop(1)
  86.     ELSEIF sz$ = "REACTIVATE" THEN
  87.         GOTO OPTL1
  88.     ELSE
  89.         GOSUB ASKQUIT
  90.         GOTO OPTION
  91.     END IF
  92.  
  93. GETPATH:
  94.     SetSymbolValue "EditTextIn",DEST$
  95.     SetSymbolValue "EditFocus","END"
  96. GETPATHL1:
  97.     sz$ = UIStartDlg(CUIDLL$,DESTPATH,"FEditDlgProc",0,"")
  98.     DEST$ = GetSymbolValue("EditTextOut")
  99.  
  100.     IF sz$ = "CONTINUE" THEN
  101.         IF IsDirWritable(DEST$) = 0 THEN
  102.             GOSUB BADPATH
  103.             GOTO GETPATHL1
  104.         END IF
  105.         UIPop 1
  106.     ELSEIF sz$ = "REACTIVATE" THEN
  107.         GOTO GETPATHL1
  108.     ELSEIF sz$ = "BACK" THEN
  109.         UIPop 1
  110.         GOTO OPTION
  111.     ELSE
  112.         GOSUB ASKQUIT
  113.         GOTO GETPATH
  114.     END IF
  115.  
  116. CHECKSPACE:
  117.     needspace& = DISK_FUDGE+DISK_PROGRAM+DISK_SETUP
  118.     IF Mid$(DEST$,2,2) = ":\" THEN
  119.         UDrive$ = Mid$(DEST$,1,1)
  120.     ELSE
  121.         UDrive$ = WinDrive$
  122.     ENDIF
  123.     gotspace& = GetFreeSpaceForDrive(UDrive$)
  124.  
  125.     IF needspace& > gotspace& THEN        
  126.         msg$ = MSG1$ + Str$(needspace&) + MSG2$ + Str$(gotspace&) + MSG3$
  127.         msg$ = msg$ + UDrive$ + "." + Chr$(13) + Chr$(13) + MSG4$ + UDrive$ + "."
  128.                  
  129.         IF do_audio% = 1 THEN
  130.             needspace& = needspace& + DISK_SOUND 
  131.             msg$ = msg$ + Chr$(13) + Chr$(13) + MSG5$
  132.         ENDIF
  133.  
  134.         SetSymbolValue "ConfirmTextIn",msg$
  135.         sz$ = UIStartDlg(CUIDLL$,NOSPACE,"FConfirmDlgProc",0,"" )
  136.  
  137.         IF sz$ = "BACK" THEN
  138.             UIPop 1
  139.             GOTO OPTION
  140.         ELSEIF sz$ = "REACTIVATE" THEN
  141.             GOTO CHECKSPACE
  142.         ELSE
  143.             END
  144.         ENDIF
  145.     ENDIF
  146.  
  147.     Install
  148.  
  149. QUIT:
  150.     ShowMgr% = 0
  151.     ON ERROR GOTO ERRQUIT
  152.  
  153.     IF ERR = 0 THEN
  154.         dlg% = EXITSUCCESS
  155.         ShowMgr% = 1
  156.     ELSEIF ERR = STFQUIT THEN
  157.         GOTO FINALQUIT
  158.     ELSE
  159.         dlg% = EXITFAILURE
  160.     END IF
  161. QUITL1:
  162.     sz$ = UIStartDlg(CUIDLL$,dlg%,"FInfo0DlgProc",0,"")
  163.     IF sz$ = "REACTIVATE" THEN
  164.         GOTO QUITL1
  165.     END IF
  166.     UIPop 1
  167.  
  168. FINALQUIT:
  169.     IF ShowMgr% = 1 THEN
  170.         CreateProgmanGroup "Winsmile","",cmoNone
  171.         CreateProgmanItem  "Winsmile","Winsmile",MakePath(DEST$,"winsmile.exe"),"",cmoOverwrite
  172.         CreateProgmanItem  "Winsmile","read.me","notepad.exe "+MakePath(DEST$,"read.me"),"",cmoOverwrite
  173.         ShowProgmanGroup   "Winsmile",1,cmoNone
  174.     END IF
  175.     END
  176.  
  177. ERRQUIT:
  178.     i% = DoMsgBox("Setup sources were corrupted, please call Wellsoft!","Winsmile Setup Problem",MB_OK+MB_TASKMODAL+MB_ICONHAND)
  179.     END
  180.  
  181. BADPATH:
  182.     sz$ = UIStartDlg(CUIDLL$,BADPATH,"FInfo0DlgProc",0,"")
  183.     IF sz$ = "REACTIVATE" THEN
  184.         GOTO BADPATH
  185.     END IF
  186.     UIPop 1
  187.     RETURN
  188.  
  189. ASKQUIT:
  190.     sz$ = UIStartDlg(CUIDLL$,ASKQUIT,"FQuitDlgProc",0,"")
  191.  
  192.     IF sz$ = "EXIT" THEN
  193.         UIPopAll
  194.         ERROR STFQUIT
  195.     ELSEIF sz$ = "REACTIVATE" THEN
  196.         GOTO ASKQUIT
  197.     ELSE
  198.         UIPop 1
  199.     END IF
  200.     RETURN
  201.  
  202. '*************************************************************************
  203. '** Purpose:   build copy list and performs all installation operations
  204. '** Arguments: none
  205. '** Returns:   none
  206. '*************************************************************************
  207. SUB Install STATIC
  208.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  209.     CreateDir DEST$,cmoNone
  210.     AddSectionFilesToCopyList "Files",SrcDir$,DEST$
  211.     IF do_audio% = 1 THEN
  212.         AddSectionFilesToCopyList "AudioFiles",SrcDir$,DEST$
  213.     ENDIF
  214.     CopyFilesInCopyList
  215. END SUB
  216.  
  217. '*************************************************************************
  218. '** Purpose:
  219. '**     Appends a file name to the end of a directory path,
  220. '**     inserting a backslash character as needed.
  221. '** Arguments:
  222. '**     szDir$  - full directory path (with optional ending "\")
  223. '**     szFile$ - filename to append to directory
  224. '** Returns: Resulting fully qualified path name.
  225. '*************************************************************************
  226. FUNCTION MakePath (szDir$,szFile$) STATIC AS STRING
  227.     IF szDir$ = "" THEN
  228.         MakePath = szFile$
  229.     ELSEIF szFile$ = "" THEN
  230.         MakePath = szDir$
  231.     ELSEIF MID$(szDir$,LEN(szDir$),1) = "\" THEN
  232.         MakePath = szDir$ + szFile$
  233.     ELSE
  234.         MakePath = szDir$ + "\" + szFile$
  235.     END IF
  236. END FUNCTION
  237.  
  238.