黃金鐵
微軟的數(shù)據(jù)庫(kù)開(kāi)發(fā)工具Visual FoxPro 6.0在國(guó)內(nèi)應(yīng)用很廣,但也不可避免地存在某些Bug。近日,本人在使用VFP 6.0簡(jiǎn)體中文版開(kāi)發(fā)軟件時(shí),就發(fā)現(xiàn)了其安裝向?qū)е械囊粋(gè)Bug,下面,筆者將具體介紹該問(wèn)題及筆者的解決方案。
在制作應(yīng)用程序發(fā)行版軟件時(shí),筆者利用安裝向?qū)?yīng)用軟件中的字形文件安裝到Windows目錄。按其提示正常操作后,得到的應(yīng)用程序發(fā)行版在執(zhí)行安裝過(guò)程中出錯(cuò),出錯(cuò)的窗口標(biāo)題為“安裝程序出錯(cuò)824”,錯(cuò)誤提示為“對(duì)象16,您的安裝程序文件可能已被破壞。請(qǐng)從您原來(lái)運(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)過(guò)較長(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é)分開(kāi),節(jié)名用方括號(hào)包括。該字形文件單獨(dú)在一節(jié),節(jié)名為[Application - Windows]。筆者試著用debug反匯編程序把該節(jié)名修改為[應(yīng)用程序 - Windows],以便與setup.stf對(duì)應(yīng),空出的三個(gè)字節(jié)用空格補(bǔ)齊。結(jié)果生成的安裝程序順利地將該字形文件安裝到了Windows目錄下,至此擺平了該Bug。
回頭來(lái)看,此Bug產(chǎn)生的原因是微軟Visual FoxPro 6.0漢化不完全造成的,在英文版的Visual FoxPro 6.0中不應(yīng)該有此問(wèn)題。為了以后應(yīng)用的方便,本人專門(mén)做了一段FoxPro程序自動(dòng)做替換節(jié)名的工作。程序如下:
&&&&解決Visual Viusal FoxPro 6.0簡(jiǎn)體中文版安裝向?qū)?Bug 的程序 f1=locfile('setup.inf','inf:inf') if len(f1)>0 setupinf=fopen(f1,2) else wait windows "沒(méi)找到 setup.inf 文件!" return endif if setupinf<0 wait windows "打開(kāi) 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 "沒(méi)找到 "+s1+" 節(jié)!" endif return
以上是筆者的解決方案,希望能對(duì)大家的開(kāi)發(fā)有所幫助。
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!