用Foxpro设计动态安装程序

Author: Date: 1995-06-23

        本程序运行时,屏幕中央的“安装窗口”中有“正在安装:'和“系统安装到:”两项提示,分别以文件名和百分比显示目前正在安装的内容和已经安装的比例。同时,还有一条不断延长的光带,动态显示安装的进度。
        安装前,先建一个安装文件数据库(install.dbf),该库只需一个字段(wjm,字符型,12个字节),然后一条记录一个文件名,把需要安装的文件输入库中。安装时,程序便按库中记录把提到的文件逐一安装。屏幕显示“正在安装:”的即是wjm字段的内容;而安装比例是当前记录与总记录数之比(即:bfs=dqjl/zjls)。动态光带长度是以安装比例乘以光带总长(程序中是50)获得,并以显示该长度的空格来实现。即:
        xs=(dqj1/zjls)*50
        @ x,y say space(xs)
        本程序如由批处理文件install.bat先拷贝到c:盘再运行,速度将更快,不过,这需在程序最后重新将它删除。下面是笔者为自己的“唐诗园”设计的安装程序。[程序清单]
        set talk off
        set start off
        clea
        set color to 7+/5,7+/5
        define window win51 from 9,12 to 14,60 doub shad color 7+/5
        acti window win51
        @ 1,2,3,45 box
        @ 0,5 say '  TSY安装选择'
        DATAD=" "
        @ 2,4 say '  请输入源盘所在驱动器(A/B):'get DATAD pict "!"
        read
        @ 0,5 say '  TSY安装目标盘选择'
        d=" "
        @ 2,4 say '  请输入目标盘(C/D/E/F/G):' get d pict "!"
        READ
        CLEAR WINDOWS
        IF UPPE(D)="C"  &&&判断目的盘,并建立和进入子目录。(E/F/G:已省略)
        !C:
        !MD TSY
        !CD TSY
        ENDIF
        IF UPPE(D)="D"
        !D:
        !MD TSY
        !CD TSY
        ENDIF
        DISK=DATAD
        TD=d
        define window win51 from 10, 10 to 16,70;
        title '“唐诗园”系统安装程序'doub shad color 7+/5
        acti window win51
        @ 2,3,4,55 box
        @ 1,5 say '正安装:    系统安装进行到:'
        use &DISK:install      &&&打开安装文件数据库:install.dbf
        do while !eof()        &&&进入循环,将库中文件一一拷贝
        zjls=recc()            &&&总记录数
        dqj1=recn()            &&&当前记录
        bfs=dqj1/zjls
        bfb1=round(bfs,2)*100  &&&计算安装比例
        xs=ROUND((bfs*50),2)   &&&计算显示光带的长度
        wjml=upper(wjm)
        @ 1,15 say wjml        &&&显示正在安装的文件
        copy file &DISK:&wjml to &td:&wjml
        set colo to 6/7*
        @ 3,5 say space(xs)    &&&显示光带
        set color to +7/5,5/5
        @ 1,50 say ltrim(str(bfb1,3)+"%") &&显示安装比例
        skip
        enddo
        @ 3,4 say "[唐诗园]系统安装完毕,任意键结束。  "
        wait "
        clear windows
        ! CD\
        ! DEL C:INSTALL.*    &&&删除由批处理拷贝到c:盘的安装文件
        quit