?? delphi activeform發布全攻略.txt
字號:
BCB\Delphi ActiveForm發布全攻略
論壇上很多朋友(也包括我)提到ActiveForm的發布問題,都沒有得到很好的解決。
下面是本人開發ActiveForm的一點經驗,拿出來跟大家分享,開發環境為 Win2000Server,IIS5.0,BCB5.0,Delphi也差不多的了。
先說說程序的開發,如果是從一般應用程序移植而來,注意所有的窗體(除了主窗體)都要動態創建,工程的選項里面是沒有Auto-Create Forms的選項給你的。還有,很重要的就是要實現IObjectSafety接口,其實很簡單,加上兩句話就可以了(for BCB,摘自Borland新聞組borland.public.cppbuilder.activex,Delphi的嘛,對不起,不知道):
You have to implement the IObjectSafety interface.
I cut this code from a MSDN example and it worked great for me without any
changes. This code basically makes everything your control does safe for
scripting and initialization.
You can make the following changes in your class declaration:
class ATL_NO_VTABLE TYourcontrol:
.
.
, public IObjectSafetyImpl<TYourcontrol> // <--- Add this.
BEGIN_COM_MAP(TYourcontrol)
.
.
COM_INTERFACE_ENTRY(IObjectSafety) // <--- Add this
.
.
END_COM_MAP()
編譯和調試就不說了,請大家查查論壇。還是提一下吧,編譯時最好是把所有的包都編譯進AvtiveForm里面去,方法和一般程序是一樣的,不說了。
好了,正式開始了!
開始設置了哦,近視的趕緊戴上眼鏡,鼠標不好使的趕快換,鍵盤。。。。。。哎喲,好好好,就開始,就開始。。。。。。
Project->Web Deployment Options 打開設置選項卡。第一頁,設置路徑,這里根據實際情況填了,注意別填錯了哦。下面是我的填法(我的IIS根目錄是C:\Inetpub\wwwroot\,機子IP是192.168.0.88):
Target Dir: C:\Inetpub\wwwroot\
Target URl: http://192.168.0.88/
HTML Dir: C:\Inetpub\wwwroot\
接著是是一些可選項,一般都全部選上。第二頁,包設置,如果你編譯的時候把所有的包都編譯進ActiveForm了,這里是不用設的,最好也是這樣,要設的話,參考第三頁的設置。第三頁,附加文件,一般是一些供ActiveForm調用的DLL,很多朋友的控件裝不上,很大原因是沒設好這里。有時C++Builder會自動將所需的DLL添加到這里,有時則沒有,真是搞不懂。。。。。。沒辦法,還是得用。如果不知道你的程序用了什么特別的DLL,可以用一些Show Dependency工具看。本人的ActiveForm用到了客戶端數據集,需要midas.dll,所以我把它給加上了,CAB選項里面最好選壓縮在同一個壓縮包內,不然還要設下面的路徑。路徑的設置和第一頁一樣。
好了,大功告成!Project->Web Deploy,所設目錄下就生成三個文件,一個inf安裝文件,一個HTML文件,還有一個CAB格式的壓縮包文件(也可能有多個,看你怎么設置的了)。不用做任何修改,打開HTML文件,就可以看到ActiveFrom了。到別的機子上,IE瀏覽器安全級別設為最低,輸入那個HTML的地址,我這里是Http://192.168.0.88/PrintFormControl.htm,先是提示安裝XXX.inf文件,然后提示安裝XXX.cab文件,都點確定,就可以看到ActiveForm了。什么?看不見?那就只好回頭看看有什么沒做對的了。。。。。
就這么多了,反正我是這樣發布成功的。。。。。。不知大家把自己的ActiveForm發布好了沒有。還沒有?真的?試過有100遍了嗎?什么?都第1000遍了?
哈哈哈哈哈哈哈。。。。。
其實。。。其實還有更好更方便更簡單更標準的方法!
啊!!!!哎喲。。。好疼。。。。別。。別。。我這里不收購爛眼鏡和破鼠標,啊!不要再砸了!!!我說。。。我說。。。
下載一個做CAB壓縮包的軟件,我用的是PowerArchiver,找到微軟的代碼簽名軟件signcode.exe,搞到一個代碼簽名證書,www.ca365.com可以申請到免費的證書,要不,可以自己做CA給自己發證書。好了,就這三樣東西。然后修改或重新做一個.inf文件,內容大致如下:
[Add.Code]
PrintControl.ocx=PrintControl.ocx
midas.dll=midas.dll
[PrintControl.ocx]
file=thiscab
clsid={AECDCD52-732D-43AA-BB90-F8B784E1A169}
RegisterServer=yes
FileVersion=1,0,43,0
[midas.dll]
file=thiscab
FileVersion=6,0,6,163
再然后把*.ocx,*.dll還有那個.inf文件做成一個CAB壓縮包。用signcode.exe和證書對這個壓縮包進行代碼簽名。再修改HTML文件,內容大致如下:
<HTML>
<H1> C++Builder 5 ActiveX Test Page </H1><p>
You should see your C++Builder 5 forms or controls embedded in the form below.
<HR><center><P>
<OBJECT
classid="clsid:AECDCD52-732D-43AA-BB90-F8B784E1A169"
codebase="http://192.168.0.88/PrintFormControl.cab"
width=100%
height=100%
align=center
hspace=0
vspace=0
>
</OBJECT>
</HTML>
好了,現在可以把IE的安全級別設為中了,ActiveForm照樣下載運行。什么,不會用那幾個軟件?我可幫不了你了,自己看幫助吧,呵呵。
By RockNet
2002.4.30 23:30:00
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -