VFP6中文版安裝向?qū)ё较x記

字號(hào):

微軟的數(shù)據(jù)庫(kù)開發(fā)工具Visual FoxPro 6.0在國(guó)內(nèi)應(yīng)用很廣,但也不可避免地存在某些Bug。近日,本人在使用VFP 6.0簡(jiǎn)體中文版開發(fā)軟件時(shí),就發(fā)現(xiàn)了其安裝向?qū)е械囊粋€(gè)Bug,下面,筆者將具體介紹該問題及筆者的解決方案。
    在制作應(yīng)用程序發(fā)行版軟件時(shí),筆者利用安裝向?qū)?yīng)用軟件中的字形文件安裝到Windows目錄。按其提示正常操作后,得到的應(yīng)用程序發(fā)行版在執(zhí)行安裝過程中出錯(cuò),出錯(cuò)的窗口標(biāo)題為“安裝程序出錯(cuò)824”,錯(cuò)誤提示為“對(duì)象16,您的安裝程序文件可能已被破壞。請(qǐng)從您原來運(yùn)行它的位置重新啟動(dòng)安裝程序”。此錯(cuò)誤代碼在幫助文件中找不到。根據(jù)其提示的內(nèi)容,筆者檢查了所有的源文件和生成文件,發(fā)現(xiàn)均正確無(wú)誤。將該字形文件安裝到應(yīng)用程序目錄和Windows系統(tǒng)目錄亦正常。最后鎖定了故障的原因,即安裝向?qū)г诎盐募惭b到Windows目錄時(shí)出現(xiàn)錯(cuò)誤。
    經(jīng)過較長(zhǎng)時(shí)間的分析和思索,筆者最后在生成的安裝程序中的兩個(gè)參數(shù)文件setup.stf及setup.inf中找到了蛛絲馬跡。在setup.stf中,該字形文件對(duì)應(yīng)行有一個(gè)字段內(nèi)容為“應(yīng)用程序- Windows,-0b20z4avw”;而在setup.inf中,文件的內(nèi)容按節(jié)分開,節(jié)名用方括號(hào)包括。該字形文件單獨(dú)在一節(jié),節(jié)名為[Application - Windows]。筆者試著用debug反匯編程序把該節(jié)名修改為[應(yīng)用程序- Windows],以便與setup.stf對(duì)應(yīng),空出的三個(gè)字節(jié)用空格補(bǔ)齊。結(jié)果生成的安裝程序順利地將該字形文件安裝到了Windows目錄下,至此擺平了該Bug。
    回頭來看,此Bug產(chǎn)生的原因是微軟Visual FoxPro 6.0漢化不完全造成的,在英文版的Visual FoxPro 6.0中不應(yīng)該有此問題。為了以后應(yīng)用的方便,本人專門做了一段FoxPro程序自動(dòng)做替換節(jié)名的工作。程序如下:
    &&&&解決Visual Viusal FoxPro 6.0簡(jiǎn)體中文版安裝向?qū)ug的程序
    f1=locfile('setup.inf','inf:inf')
    if len(f1)>0
    setupinf=fopen(f1,2)
    else
    wait windows "沒找到setup.inf文件!"
    return
    endif
    if setupinf<0
    wait windows "打開setup.inf文件錯(cuò)誤!"
    return
    endif
    s1="[Application - Windows]"
    s2="[應(yīng)用程序- Windows] "
    &&&&s2字符串尾部有3個(gè)空格,以使其長(zhǎng)度與s1長(zhǎng)度相等
    flag1=.f.
    do while .not.feof(setupinf)
    s3=fgets(setupinf)
    if s3=s1
    fseek(setupinf,0-len(s1)-2,1)
    fputs(setupinf,s2)
    flag1=.t.
    exit
    endif
    enddo
    fclose(setupinf)
    if flag1
    wait windows "替換成功!"
    else
    wait windows "沒找到"+s1+"節(jié)!"
    endif
    return
    以上是筆者的解決方案,希望能對(duì)大家的開發(fā)有所幫助。