|
[問題] 最近一段時間與教研室的各位老師在做一個山東省一級OFFICE模擬軟件時,前面的開發(fā)工作一切順利,卻在后面的安裝運行階段出現(xiàn)了一個似乎有些莫名其妙的錯誤,完整的錯誤提示如下: Run-time error '339': Component 'Tabcl32.ocx' or one of its dependencies no correctly registered: a fiel is missing or invalid [簡要分析] 乍從字面錯誤來看,是控件Tabcl32.ocx有關(guān)的問題。我所使用的安裝軟件是Inno setup,這是個輕量級的安裝程序,特別適合于制作共享軟件。因為你想開發(fā)共享軟件的話,如果使用像INSTALL SHIELD這樣的大型重量級安裝軟件(當(dāng)然功能也更為齊全)的話,自然可能導(dǎo)致版權(quán)的問題,特別如果是你想在國外發(fā)行你的軟件的話。所以,經(jīng)網(wǎng)友推薦使用了輕量級的Inno setup。這個安裝軟件無論對于VC或是VB,或是DELPHI開發(fā)的軟件的安裝制作都支持得很好,僅是許多操作需要手工進行。正是這一點導(dǎo)致了上述錯誤。 因為使用VB6開發(fā)軟件時,VB本身需要各種各樣的控件(.OCX),而這些控件在系統(tǒng)安裝文件的后期制作過程中自然需要考慮在內(nèi),有些是必須由安裝程序復(fù)制到目標(biāo)機器的。但是,我們開發(fā)的這款軟件,沒有用到特別的OCX控件,更沒有涉及到復(fù)雜的第三方控件。怎么會出現(xiàn)上述錯誤呢? 在學(xué)校機房中在所有安裝有VB6的XP機器上運行安裝軟件并實際使用軟件沒有任何問題。但是,有些老師在沒有安裝VB6的XP機上運行安裝軟件后,在具體進行系統(tǒng)后出現(xiàn)上述錯誤提示。 [第一次試驗] 根據(jù)上述錯誤提示,我在Inno setup的腳本中添加了如下語句: [Files] Source: C:\WINDOWS\system32\tabctl32.ocx; DestDir: {sys}; Flags: regserver restartreplace sharedfile; 結(jié)果錯誤依然如上,??? [第二...N次試驗] 無奈之下,只好打開了google。根據(jù)老思路,先使用中文GOOGLE,也找到許多類似的疑問,但是都沒有理想(或者說是可行的方案)。在無奈之下,只好又進入了英文GOOGLE,輸入幾乎全部上述錯誤提示,終于在如下地址找到了一種解決辦法: http://www./archive/index.php/t-483366.html 于是,我重新修改了在Inno setup的腳本,并結(jié)合自己的系統(tǒng)進一步添加了如下完整的語句: Source: C:\WINDOWS\system32\richtx32.ocx; DestDir: {sys}; Flags: regserver restartreplace sharedfile; Source: C:\WINDOWS\system32\comdlg32.ocx; DestDir: {sys}; Flags: regserver restartreplace sharedfile; Source: C:\WINDOWS\system32\mscomctl.ocx; DestDir: {sys}; Flags: regserver restartreplace sharedfile; Source: C:\WINDOWS\system32\tabctl32.ocx; DestDir: {sys}; Flags: regserver restartreplace sharedfile; 重新編譯上述腳本,生成新的安裝文件SETUP.EXE。一切OK了?。?! [截圖欣賞] 下面是我主持開發(fā)的拙作的一個典型快照: ![]() 唉,真是苦盡甘來,這真是個硬道理啊! |
|
|