明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

怎么處理VFP6中文版安裝出錯

[摘要]黃金鐵微軟的數(shù)據(jù)庫開發(fā)工具Visual FoxPro 6.0在國內(nèi)應(yīng)用很廣,但也不可避免地存在某些Bug。近日,本人在使用VFP 6.0簡體中文版開發(fā)軟件時,就發(fā)現(xiàn)了其安裝向?qū)е械囊粋Bug,下面,...
黃金鐵

微軟的數(shù)據(jù)庫開發(fā)工具Visual FoxPro 6.0在國內(nèi)應(yīng)用很廣,但也不可避免地存在某些Bug。近日,本人在使用VFP 6.0簡體中文版開發(fā)軟件時,就發(fā)現(xiàn)了其安裝向?qū)е械囊粋Bug,下面,筆者將具體介紹該問題及筆者的解決方案。

在制作應(yīng)用程序發(fā)行版軟件時,筆者利用安裝向?qū)?yīng)用軟件中的字形文件安裝到Windows目錄。按其提示正常操作后,得到的應(yīng)用程序發(fā)行版在執(zhí)行安裝過程中出錯,出錯的窗口標題為“安裝程序出錯824”,錯誤提示為“對象16,您的安裝程序文件可能已被破壞。請從您原來運行它的位置重新啟動安裝程序”。此錯誤代碼在幫助文件中找不到。根據(jù)其提示的內(nèi)容,筆者檢查了所有的源文件和生成文件,發(fā)現(xiàn)均正確無誤。將該字形文件安裝到應(yīng)用程序目錄和Windows系統(tǒng)目錄亦正常。最后鎖定了故障的原因,即安裝向?qū)г诎盐募惭b到Windows目錄時出現(xiàn)錯誤。

經(jīng)過較長時間的分析和思索,筆者最后在生成的安裝程序中的兩個參數(shù)文件setup.stf及setup.inf中找到了蛛絲馬跡。在setup.stf中,該字形文件對應(yīng)行有一個字段內(nèi)容為“應(yīng)用程序 - Windows,-0b20z4avw”;而在setup.inf中,文件的內(nèi)容按節(jié)分開,節(jié)名用方括號包括。該字形文件單獨在一節(jié),節(jié)名為[Application - Windows]。筆者試著用debug反匯編程序把該節(jié)名修改為[應(yīng)用程序 - Windows],以便與setup.stf對應(yīng),空出的三個字節(jié)用空格補齊。結(jié)果生成的安裝程序順利地將該字形文件安裝到了Windows目錄下,至此擺平了該Bug。

回頭來看,此Bug產(chǎn)生的原因是微軟Visual FoxPro 6.0漢化不完全造成的,在英文版的Visual FoxPro 6.0中不應(yīng)該有此問題。為了以后應(yīng)用的方便,本人專門做了一段FoxPro程序自動做替換節(jié)名的工作。程序如下:

&&&&解決Visual Viusal FoxPro 6.0簡體中文版安裝向?qū)?Bug 的程序
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 文件錯誤!"
return
endif
s1="[Application - Windows]"
s2="[應(yīng)用程序 - Windows] "
&&&&s2字符串尾部有3個空格,以使其長度與s1長度相等
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

以上是筆者的解決方案,希望能對大家的開發(fā)有所幫助。