從頁面上下載控件時制作CAB包的方法
發表時間:2024-01-23 來源:明輝站整理相關軟件相關文章人氣:
[摘要]Internet 軟件分發單位是“軟件包”,它由包含 .inf 文件或軟件分發 (.osd) 文件(或兩者都包括)的 CAB 文件 (.cab) 所組成。一個分發單位也可以包含軟件組件,如 ActiveX 控件 (.ocx)、.dll 文件、.exe 文件、Java 類文件或小程序。當 Web 頁...
Internet 軟件分發單位是“軟件包”,它由包含 .inf 文件或軟件分發 (.osd) 文件(或兩者都包括)的 CAB 文件 (.cab) 所組成。一個分發單位也可以包含軟件組件,如 ActiveX 控件 (.ocx)、.dll 文件、.exe 文件、Java 類文件或小程序。當 Web 頁上 OBJECT 元素的 CODEBASE 特性引用包含.inf 文件的 CAB 文件時,Internet Explorer 3.0 和更新的版本將自動把 CAB 文件作為軟件分發單位。
第一步:創建一個inf文件:
INF文件是一個文本文件,指定運行控件所需要下載或者呈交的文件(比如DLL或者其它OCX)。
一個INF文件就捆綁了CAB壓縮文件所有的必須文件。 缺省情況下,
與現有硬盤中文件版本號相同的文件不被下載。
要了解有關INF文件及其選項(包括如何創建獨立于平臺的INF文件)的詳細情況,
請參考平臺軟件開發工具包(Platform SDK,)的設置和系統管理服務(Setup and System Management Services)
部分的\Setup API\Overview\INF Files目錄下的內容。
下面就以我自己寫的一個videoweb.dll為例子。在videoweb.dll中使用到:tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini,
camer.ini,drivo.ini.
video.inf的例子:
;inf file for videoweb.dll
[version]
signature=$CHICAGO$
[DestinationDirs]
DLLSysCopy=11
IniWinCopy=25
[DefaultInstall]
CopyFiles=DllSysCopy,IniWinCopy
AddReg=videoReg
[DllSysCopy]
tdiio.dll
Decoder.dll
VideoWeb.dll
[IniWinCopy]
camer.ini
user.ini
xvidMP4.ini
[videoReg]
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC},"",%REG_SZ%,"Video Class"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Control
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Implemented Categories
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\InprocServer32,"", %REG_SZ%,"%11%\VideoWeb.dll"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\InprocServer32,"ThreadingModel",%REG-SZ%,"Apartment"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\MiscStatus,"",%REG_SZ%,"0"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\MiscStatus\1,"",%REG_SZ%,"131473"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\ProgID,"",%REG_SZ%,"VideoWeb.1.1"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Programmable
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\ToolboxBitmap32,"",%REG_SZ%,"%11%\VideoWeb.dll,102"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\TypeLib,"",%REG_SZ%,"{FC4352CB-BB55-498C-BB21-E4BAE2FC2584}"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\Version,"",%REG_SZ%,"1.0"
HKCR,CLSID\{4BDA0AA3-2164-44B7-8A88-208A145F51DC}\VersionIndependentProgID,"",%REG_SZ%,"VideoWeb.1"
;end of INF file
DestinationDirs:指的是裝載目錄或者文件的地址: 11 指定為系統目錄 WINDOWS/SYSTEM 或者 WINNT/SYSTEM32;
10 規定為窗口目錄、WINDOWS或者WINNT。
videoReg:如果是自己寫的控件:可以在本地先用regsvr32 xxx.dll注冊后,從注冊表中找到上面的注冊信息。
當然以上僅僅是在internet上分發軟件時一個很簡單的inf文件,還有更復雜的inf文件。請看SDK。
第二步:把video.inf,tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini,
camer.ini,drivo.ini.放在一個文件夾中。
第三步:開始制作cab文件,我是用IExpress工具制作的(該工具在winnt\system32目錄下面)。
1:選擇創建新的自解壓指令文件。
2:選擇僅創建壓縮文件(ActiveX安裝)
3:點擊添加把你要供別人下載的文件添加
4:點擊瀏覽 輸入*.cab文件的存放地址(包含文件名)
5:就隨便了
好了制作完成。
現在在你的網頁中使用該控件,當別人訪問你的網頁時,如果他的機子上沒有你的控件,瀏覽器就會自動下載安裝。因為你的控件可能沒有獲得簽名
因此得在你的瀏覽器中把瀏覽器的安全級別降低。在internet 工具中選擇安全,選擇自定義。找到下載未簽名的ActiveX控件。選擇其下面的提示或者啟用。
在網頁中插入:
<OBJECT classid=clsid:4BDA0AA3-2164-44B7-8A88-208A145F51DC
codebase="video.cab#version=2,0,0,1"
id=Video1 style="HEIGHT: 507px; WIDTH: 718px"></OBJECT>
該句.
注意:得把*.cab 文件你和的網頁放在同一目錄下。或者在codebase中指定*.cab的路徑。