home *** CD-ROM | disk | FTP | other *** search
- *:*********************************************************************
- *:
- *: Program: PROINST.PRG
- *:
- *: System:
- *: Author:
- *: Copyright (c) 1989,
- *: Last modified: 11/05/89 15:12
- *:
- *: Procs & Fncts: ERRPROC
- *: : COLOR
- *: : MAIN
- *: : SELALL
- *: : SELNONE
- *: : SELONE
- *: : DISPDISK
- *: : DONE
- *: : ABORT
- *: : FOXUSER
- *: : INSTALL
- *: : INSRTDSK
- *: : UNARCH
- *: : FINISHED
- *: : ERRPROC2
- *: : ESCPROC
- *: : MSG3
- *:
- *: Calls: ERRPROC (procedure in PROINST.PRG)
- *: : COLOR (procedure in PROINST.PRG)
- *: : MAIN (procedure in PROINST.PRG)
- *:
- *: Uses: MONITOR.DBF
- *:
- *: Documented 11/06/89 at 11:52 FoxDoc version 2.0
- *:*********************************************************************
- PARAMETER srcdrive
- ON ERROR DO errproc &&establish error routine
- PUBLIC color, alone
- DEFINE WINDOW alert FROM 16,10 TO 22,70 DOUBLE COLOR SCHEME 5
- SET HELP OFF
- SET SAFETY OFF
- SET ESCAPE OFF
- SET TALK OFF
- SET CONFIRM ON
- SET SYSMENU OFF
- CLEAR
- CLEAR MACROS
- CLOSE ALL
- SET EXACT ON
- IF PARAMETERS()=0
- alone = .T.
- srcdrive = SPACE(2)
- @ 4,32 SAY "Source Drive: " GET srcdrive PICTURE "@M A:,B:";
- MESSAGE "Press spacebar to select source drive."
- READ
- CLEAR
- ENDIF
- SET EXACT OFF
- SET RESOURCE OFF
- USE monitor
- INDEX ON sequence TO temp
- @ 2,20 SAY "Please select your monitor type:"
- DEFINE POPUP COLOR FROM 4,20 PROMPT FIELD descript
- ON SELECTION POPUP COLOR DO color
- ACTIVATE POPUP COLOR
- RELEASE POPUP COLOR
- DO main
-
- *!*********************************************************************
- *!
- *! Procedure: MAIN
- *!
- *! Called by: PROINST.PRG
- *!
- *! Calls: FOXUSER (procedure in PROINST.PRG)
- *! : DISPDISK (procedure in PROINST.PRG)
- *! : SELONE (procedure in PROINST.PRG)
- *! : SELALL (procedure in PROINST.PRG)
- *! : SELNONE (procedure in PROINST.PRG)
- *! : DONE (procedure in PROINST.PRG)
- *! : ABORT (procedure in PROINST.PRG)
- *!
- *! Uses: PROINST.DBF Alias: CONTENTS
- *!
- *! Indexes: SEQNO.IDX
- *!
- *!*********************************************************************
- PROCEDURE main
- PUBLIC temp
- CLOSE ALL
- CLEAR WINDOW
- CLEAR
- DEFINE WINDOW tbrowse FROM 7,1 TO 19,35 COLOR SCHEME 8
- DEFINE WINDOW thelp FROM 7,40 TO 19,77 SYSTEM COLOR SCHEME 8 ;
- TITLE ' Details '
- DEFINE WINDOW tkeys FROM 0,1 TO 4,78 COLOR SCHEME 8 ;
- DOUBLE TITLE " FoxPro Optional Products Installation Procedure "
- DEFINE WINDOW DISK FROM 22,1 TO 24,78 COLOR SCHEME 8 ;
- DOUBLE TITLE " Disk Statistics "
- DEFINE WINDOW alert FROM 16,10 TO 22,70 DOUBLE COLOR SCHEME 7
- DEFINE WINDOW abort FROM 11,5 TO 22,75 DOUBLE COLOR SCHEME 5
- DO foxuser
- USE proinst ALIAS contents
- INDEX ON seqno TO seqno
- homedir = SYS(2004) && get directory where foxpro.exe resides
- tdisk = 0
- SUM SPACE TO mdisk
- REPLACE ALL install WITH " NO "
- GO TOP
- ACTIVATE WINDOW tkeys
- @ 0,0 SAY "Press Spacebar to select current item"
- @ 1,0 SAY "Press F2 to select all items"
- @ 2,0 SAY "Press F3 to deselect all items"
- @ 0,39 SAY "Press arrow keys to move cursor"
- @ 1,39 SAY "Press Enter to install selected items"
- @ 2,39 SAY "Press Esc to abort installation"
- ACTIVATE WINDOW DISK
- DO dispdisk
- DO WHILE .T.
- ON KEY
- ON KEY LABEL spacebar DO selone
- ON KEY LABEL f2 DO selall
- ON KEY LABEL f3 DO selnone
- ON KEY LABEL enter DO done
- * removed 2/16/90 SET WINDOW OF MEMO TO thelp
- MODIFY MEMO details WINDOW thelp NOWAIT
- * removed 2/16/90 ACTIVATE WINDOW tbrowse
- BROWSE FIELDS product/17,SPACE/5,install/7 ;
- NOMODIFY NOMENU NOAPPEND NODELETE ;
- NOCLEAR SAVE FREEZE product WINDOW tbrowse
- IF LASTKEY() = 27
- DO abort
- ENDIF
- ENDDO
- CLOSE ALL
- CLEAR WINDOWS
- CLEAR MENUS
- DELETE FILE monitor2.dbf
- DELETE FILE monitor2.fpt
- DELETE FILE temp.idx
- DELETE FILE seqno.idx
- DELETE FILE foxvinst.prg
- DELETE FILE foxvinst.fxp
- DELETE FILE fvbrand.com
- DELETE FILE foxview.bak
- QUIT
-
- *!*********************************************************************
- *!
- *! Procedure: COLOR
- *!
- *! Called by: PROINST.PRG
- *!
- *!*********************************************************************
- PROCEDURE color
- STORE RECNO() TO mbar
- SET INDEX TO
- COPY TO monitor2 FIELDS MONITOR.TYPE,MONITOR.ID,MONITOR.NAME,;
- MONITOR.READONLY,MONITOR.CKVAL,MONITOR.DATA,MONITOR.UPDATED
- USE monitor2
- GOTO mbar
- IF LASTKEY() <> 27 .AND. BAR() <> 1 .AND. BAR() <> 2
- REPLACE name WITH "DEFAULT"
- USE
- SET RESOURCE TO monitor2
- SET COLOR SET TO default
- CLEAR
- COLOR = .T.
- ELSE
- USE
- ENDIF
- DEACTIVATE POPUP COLOR
-
- *!*********************************************************************
- *!
- *! Procedure: SELALL
- *!
- *! Called by: MAIN (procedure in PROINST.PRG)
- *! : DONE (procedure in PROINST.PRG)
- *! : ABORT (procedure in PROINST.PRG)
- *!
- *! Calls: DISPDISK (procedure in PROINST.PRG)
- *!
- *!*********************************************************************
- PROCEDURE selall
- REPLACE ALL install WITH " YES "
- LOCATE FOR FILENAME = "SMHELP.PAK"
- IF FOUND()
- REPLACE install WITH " NO "
- ENDIF
- tdisk = mdisk
- DO dispdisk
- GO TOP
- RETRY
-
- *!*********************************************************************
- *!
- *! Procedure: SELNONE
- *!
- *! Called by: MAIN (procedure in PROINST.PRG)
- *! : DONE (procedure in PROINST.PRG)
- *! : ABORT (procedure in PROINST.PRG)
- *!
- *! Calls: DISPDISK (procedure in PROINST.PRG)
- *!
- *!*********************************************************************
- PROCEDURE selnone
- REPLACE ALL install WITH " NO "
- tdisk = 0
- DO dispdisk
- GO TOP
- RETRY
-
- *!*********************************************************************
- *!
- *! Procedure: SELONE
- *!
- *! Called by: MAIN (procedure in PROINST.PRG)
- *! : DONE (procedure in PROINST.PRG)
- *! : ABORT (procedure in PROINST.PRG)
- *!
- *! Calls: DISPDISK (procedure in PROINST.PRG)
- *!
- *!*********************************************************************
- PROCEDURE selone
- IF install = " YES "
- REPLACE install WITH " NO "
- tdisk = tdisk - SPACE
- ELSE
- REPLACE install WITH " YES "
- tdisk = tdisk + SPACE
- ENDIF
- SKIP 1
- SKIP -1
- DO dispdisk
- SHOW WINDOW contents SAME
-
- *!*********************************************************************
- *!
- *! Procedure: DISPDISK
- *!
- *! Called by: MAIN (procedure in PROINST.PRG)
- *! : SELALL (procedure in PROINST.PRG)
- *! : SELNONE (procedure in PROINST.PRG)
- *! : SELONE (procedure in PROINST.PRG)
- *!
- *!*********************************************************************
- PROCEDURE dispdisk
- ACTIVATE WINDOW DISK SAME
- CLEAR
- @ 0,3 SAY "Available disk space: "+LTRIM(TRANSFORM(DISKSPACE()/1024,"999,999 Kbytes"))
- @ 0,42 SAY "Disk space needed: "+LTRIM(TRANSFORM(tdisk,"999,999 Kbytes"))
-
- *!*********************************************************************
- *!
- *! Procedure: DONE
- *!
- *! Called by: MAIN (procedure in PROINST.PRG)
- *! : DONE (procedure in PROINST.PRG)
- *! : ABORT (procedure in PROINST.PRG)
- *!
- *! Calls: SELONE (procedure in PROINST.PRG)
- *! : SELALL (procedure in PROINST.PRG)
- *! : SELNONE (procedure in PROINST.PRG)
- *! : DONE (procedure in PROINST.PRG)
- *! : INSTALL (procedure in PROINST.PRG)
- *! : MSG3 (procedure in PROINST.PRG)
- *! : FINISHED (procedure in PROINST.PRG)
- *!
- *!*********************************************************************
- PROCEDURE done
- ON KEY
- mchoice = 1
- IF tdisk > (DISKSPACE()/1024)
- DEFINE WINDOW tdone FROM 14,10 TO 22,70 DOUBLE COLOR SCHEME 5
- ACTIVATE WINDOW tdone
- CLEAR
- @ 1,3 SAY "Insufficient disk space to install all selected products."
- @ 3,2 SAY " Please select products that will fit on your drive."
- @ 5,3 SAY " Press any key to continue "
- WAIT ""
- ON KEY LABEL spacebar DO selone
- ON KEY LABEL f2 DO selall
- ON KEY LABEL f3 DO selnone
- ON KEY LABEL enter DO done
- DEACTIVATE WINDOW tdone
- RETURN
- ENDIF
- DEFINE WINDOW tdone FROM 16,20 TO 22,60 DOUBLE COLOR SCHEME 5
- ACTIVATE WINDOW tdone
- @ 1,9 SAY "Begin Installation: "
- @ 3,6 PROMPT CHR(174)+" \<Yes "+CHR(175)
- @ 3,21 PROMPT "< \<No >"
- =INKEY("M")
- MENU TO mchoice
- IF mchoice = 1
- mdone = .T.
- CLOSE ALL
- CLEAR windows
- CLEAR MENUS
- CLEAR
- DO install
- DO msg3 WITH "Installation complete. Press any key to continue.",.T.
- DO finished
- ELSE
- ON KEY LABEL spacebar DO selone
- ON KEY LABEL f2 DO selall
- ON KEY LABEL f3 DO selnone
- ON KEY LABEL enter DO done
- DEACTIVATE WINDOW tdone
- ENDIF
-
- *!*********************************************************************
- *!
- *! Procedure: ABORT
- *!
- *! Called by: MAIN (procedure in PROINST.PRG)
- *!
- *! Calls: SELONE (procedure in PROINST.PRG)
- *! : SELALL (procedure in PROINST.PRG)
- *! : SELNONE (procedure in PROINST.PRG)
- *! : DONE (procedure in PROINST.PRG)
- *!
- *!*********************************************************************
- PROCEDURE abort
- ON KEY
- mchoice = 1
- DEFINE WINDOW tdone FROM 16,20 TO 22,60 DOUBLE COLOR SCHEME 5
- ACTIVATE WINDOW tdone
- @ 1,9 SAY "Abort Installation: "
- @ 3,6 PROMPT CHR(174)+" \<Yes "+CHR(175)
- @ 3,21 PROMPT "< \<No >"
- =INKEY("M")
- MENU TO mchoice
- IF mchoice = 1
- CLOSE ALL
- CLEAR windows
- CLEAR MENUS
- DELETE FILE monitor2.dbf
- DELETE FILE monitor2.fpt
- DELETE FILE temp.idx
- DELETE FILE seqno.idx
- DELETE FILE foxvinst.prg
- DELETE FILE foxvinst.fxp
- DELETE FILE fvbrand.com
- DELETE FILE foxview.bak
- QUIT
- ELSE
- ON KEY LABEL spacebar DO selone
- ON KEY LABEL f2 DO selall
- ON KEY LABEL f3 DO selnone
- ON KEY LABEL enter DO done
- ENDIF
- DEACTIVATE WINDOW tdone
-
- *!*********************************************************************
- *!
- *! Procedure: FOXUSER
- *!
- *! Called by: MAIN (procedure in PROINST.PRG)
- *!
- *! Uses: FOXUSER.DBF
- *! : MONITOR.DBF
- *!
- *!*********************************************************************
- PROCEDURE foxuser
- IF FILE("FOXUSER.DBF")
- USE foxuser
- IF RECC() > 0
- mchoice = 1
- DEFINE WINDOW foxuser FROM 16,10 TO 22,70 DOUBLE COLOR SCHEME 5
- ACTIVATE WINDOW foxuser
- @ 1,2 SAY "Do you want to overwrite your existing FoxUser file? "
- @ 3,20 PROMPT CHR(174)+" \<Yes "+CHR(175)
- @ 3,30 PROMPT "< \<No >"
- =INKEY("M")
- MENU TO mchoice
- RELEASE WINDOW foxuser
- IF mchoice=2
- USE
- SET RESOURCE TO foxuser
- RETURN
- ENDIF
- ENDIF
- ENDIF
- SET RESOURCE OFF
- USE monitor2
- COPY TO FOXUSER
- SET RESOURCE TO foxuser
- IF COLOR
- SET COLOR SET TO DEFAULT
- CLEAR
- ENDIF
-
- *!*********************************************************************
- *!
- *! Procedure: INSTALL
- *!
- *! Called by: DONE (procedure in PROINST.PRG)
- *!
- *! Calls: ESCPROC (procedure in PROINST.PRG)
- *! : INSRTDSK (procedure in PROINST.PRG)
- *! : UNARCH (procedure in PROINST.PRG)
- *! : &IP
- *!
- *! Uses: PROINST.DBF Alias: CONTENTS
- *! : FOXUSER.DBF
- *! : COLORS.DBF
- *!
- *! Indexes: PROINST.IDX
- *!
- *! Other Files: COLORS.FPT
- *!
- *!*********************************************************************
- PROCEDURE install
- ON ESCAPE DO escproc
- SET ESCAPE ON &&establish escape proc
- DEFINE WINDOW alert FROM 16,10 TO 22,70 DOUBLE COLOR SCHEME 5
- PUBLIC thisone
- lastdisk = 2
- USE proinst
- INDEX ON STR(diskno,2) TO proinst
- GO TOP
- DO WHILE .NOT. EOF(1)
- IF install = " NO "
- SKIP
- LOOP
- ENDIF
- IF lastdisk <> diskno
- DO insrtdsk
- lastdisk = diskno
- ENDIF
- IF .NOT. FILE(srcdrive+filename)
- DO insrtdsk
- ENDIF
- DO unarch
- IF installprc <> SPACE(8) &&any external program needed?
- ip = TRIM(installprc) &&do that install proc!
- DO &ip
- CLEAR
- ENDIF
- CLEAR
- SKIP
- ENDDO
- IF FILE("COLOR.DBF")
- SET RESOURCE OFF
- USE foxuser
- APPEND FROM color
- USE
- SET RESOURCE ON
- DELETE FILE color.dbf
- DELETE FILE color.fpt
- ENDIF
-
- *!*********************************************************************
- *!
- *! Procedure: INSRTDSK
- *!
- *! Called by: INSTALL (procedure in PROINST.PRG)
- *!
- *!*********************************************************************
- PROCEDURE insrtdsk &&this routine is invoked when it's time
- ACTIVATE WINDOW alert
- @ 2,10 SAY "Please insert disk #" + STR(diskno, 2) + " into drive " + srcdrive
- WAIT WINDOW
- DO WHILE .NOT. FILE(srcdrive+filename) &&loop until we find that file
- CLEAR
- @ 1, 5 SAY "The file " + TRIM(filename) + " was not found on that disk."
- @ 3, 10 SAY "Please insert disk #" + STR(diskno, 2) + " into drive " + srcdrive
- WAIT WINDOW
- CLEAR
- ENDDO
- DEACTIVATE WINDOW alert
-
- *!*********************************************************************
- *!
- *! Procedure: UNARCH
- *!
- *! Called by: INSTALL (procedure in PROINST.PRG)
- *!
- *! Calls: ERRPROC2 (procedure in PROINST.PRG)
- *!
- *!*********************************************************************
- PROCEDURE unarch &&this routine unarchives files using pkxarc
- IF .NOT. FILE('foxunpak.exe')
- DO errproc2 WITH 'Unable to find FOXUNPAK.EXE. Installation aborted.'
- ENDIF
- arccmd = "FOXUNPAK " + '-p"' + TRIM(product) + '" ';
- + srcdrive + filename + " " + homedir + TRIM(subdir)
- IF SUBSTR(arccmd,LEN(arccmd),1) != "\"
- arccmd = arccmd + "\"
- ENDIF
- RUN /0 &arccmd
-
- *!*********************************************************************
- *!
- *! Procedure: ERRPROC
- *!
- *! Called by: PROINST.PRG
- *!
- *! Calls: MSG3 (procedure in PROINST.PRG)
- *! : FINISHED (procedure in PROINST.PRG)
- *!
- *!*********************************************************************
- PROCEDURE errproc &&our on error routine
- ? CHR(7)
- IF ERROR() <> 1101 .AND. ERROR() <> 6 .AND. ERROR() <> 1 .AND. ERROR() <> 1410 .AND. ERROR() <> 0
- DO msg3 WITH MESSAGE() + " Installation aborted.",.T.
- ELSE
- DO msg3 WITH "Increase files in CONFIG.SYS to greater than 25.",.T.
- ENDIF
- DO finished
-
- *!*********************************************************************
- *!
- *! Procedure: FINISHED
- *!
- *! Called by: ERRPROC (procedure in PROINST.PRG)
- *! : DONE (procedure in PROINST.PRG)
- *! : ERRPROC2 (procedure in PROINST.PRG)
- *!
- *!*********************************************************************
- PROCEDURE finished &&our clean-up-and-go-home routine
- ON ESCAPE
- = SYS(2002,1) &&turn cursor on
- CLOSE ALL
- CLEAR windows
- CLEAR
- DELETE FILE monitor2.dbf
- DELETE FILE monitor2.fpt
- DELETE FILE temp.idx
- DELETE FILE seqno.idx
- DELETE FILE foxvinst.prg
- DELETE FILE foxvinst.fxp
- DELETE FILE fvbrand.com
- DELETE FILE foxview.bak
- QUIT
-
- *!*********************************************************************
- *!
- *! Procedure: ERRPROC2
- *!
- *! Called by: UNARCH (procedure in PROINST.PRG)
- *! : ESCPROC (procedure in PROINST.PRG)
- *!
- *! Calls: MSG3 (procedure in PROINST.PRG)
- *! : FINISHED (procedure in PROINST.PRG)
- *!
- *!*********************************************************************
- PROCEDURE errproc2 &&quit with a specified message.
- PARAMETERS msg
- DO msg3 WITH msg
- DO finished
-
- *!*********************************************************************
- *!
- *! Procedure: ESCPROC
- *!
- *! Called by: INSTALL (procedure in PROINST.PRG)
- *!
- *! Calls: ERRPROC2 (procedure in PROINST.PRG)
- *!
- *!*********************************************************************
- PROCEDURE escproc &&handle the escape key
- DEFINE WINDOW abort FROM 16,10 TO 22,70 ;
- DOUBLE COLOR SCHEME 5
- ACTIVATE WINDOW abort
- @ 1,10 SAY ' Do you want to abort installation?'
- mi = 0
- DO WHILE mi = 0
- @ 3,17 PROMPT CHR(174)+" \<Yes "+CHR(175)
- @ 3,30 PROMPT "< \<No >"
- =INKEY("M")
- MENU TO mi
- DO CASE
- CASE mi = 1
- DEACTIVATE WINDOW abort
- DO errproc2 WITH 'Installation aborted. Press a key to continue.'
- alone = .F.
- CASE mi = 2
- DEACTIVATE WINDOW abort
- RETURN
- ENDCASE
- ENDDO
- DEACTIVATE WINDOW abort
-
- *!*********************************************************************
- *!
- *! Procedure: MSG3
- *!
- *! Called by: ERRPROC (procedure in PROINST.PRG)
- *! : DONE (procedure in PROINST.PRG)
- *! : ERRPROC2 (procedure in PROINST.PRG)
- *!
- *!*********************************************************************
- PROCEDURE msg3 &&display line 24
- PARAMETERS msg,yeswait
- ACTIVATE WINDOW alert
- CLEAR
- IF LEN(msg) < 61
- @ 2, INT(((60 - LEN(msg)) /2) - 1) SAY msg
- ELSE
- @ 2, 0 SAY msg
- ENDIF
- IF yeswait
- WAIT WINDOW
- ENDIF
- *: EOF: PROINST.PRG
-