基礎知識
html語言中Object標籤
定義和用法
定義一個嵌入的對象。請使用此元素向您的 XHTML 頁面添加多媒體。此元素允許您規定插入 HTML 文檔中的對象的資料和參數,以及可用來顯示和操作資料的代碼。<object> 標籤用於包含對象,比像、音頻、視頻、Java applets、ActiveX、PDF 以及 Flash。object 的初衷是取代 img 和 applet 元素。不過由於漏洞以及缺乏瀏覽器支援,這一點並未實現。瀏覽器的對象支援有賴於物件類型。不幸的是,主流瀏覽器都使用不同的代碼來載入相同的物件類型。而幸運的是,object 對象提供瞭解決方案。如果未顯示 object 元素,就會執行位於 <object> 和 </object> 之間的代碼。通過這種方式,我們能夠嵌套多個 object 元素(每個對應一個瀏覽器)。
執行個體
向HTML中添加對象:
view plaincopy to clipboardprint?<object classid="clsid:F08DF954-8592-11D1-B16A-00C0F0283628" id="Slider1" width="100" height="50"> <param name="BorderStyle" value="1" /> <param name="MousePointer" value="0" /> <param name="Enabled" value="1" /> <param name="Min" value="0" /> <param name="Max" value="10" /> </object> <object classid="clsid:F08DF954-8592-11D1-B16A-00C0F0283628" id="Slider1"
width="100" height="50">
<param name="BorderStyle" value="1" />
<param name="MousePointer" value="0" />
<param name="Enabled" value="1" />
<param name="Min" value="0" />
<param name="Max" value="10" />
</object> 參考
http://www.w3school.com.cn/tags/tag_object.asp
Windows中註冊類ID:clsid
“通用唯一識別碼”(UUID),用於標識 COM 組件。每個 COM 組件在 Windows 註冊表中都有自己的 CLSID,以便讓其他應用程式載入。
ActiveX控制項CLSID的擷取
在編譯完成每一個ActiveX控制項之後,系統會產生ocx.html檔案,其中是調用該ActiveX控制項的方法。該頁面中有一個標籤即為Object,其中有一行則記錄著該ocx檔案的CLSID,如下:
view plaincopy to clipboardprint?<object ID="TopoSceneViewer" WIDTH=800 HEIGHT=600 CLASSID="CLSID:321B84C8-3745-4AC9-BF04-55753F40CE63"> </object> <object
ID="TopoSceneViewer"
WIDTH=800
HEIGHT=600
CLASSID="CLSID:321B84C8-3745-4AC9-BF04-55753F40CE63">
</object>
--------------------------------------------------------------------------------
建立cab檔案
cab檔案中需要包含一系列檔案,其中.inf檔案會告訴IE如何去安裝這些檔案。我們從.inf檔案開始怎麼寫inf
INF檔案的組成有節(Sections),鍵(Key)和值(value)三部分。 關鍵節有 [Version]版本描述資訊,主要用於版本控制。 [Strings]字串資訊,用於常量定義。 [DestinationDirs]定義系統路徑資訊。 [SourceDisksNames]指明來源硬碟資訊。 [SourceDisksNames]指明來源硬碟檔案名稱。 [DefaultInstall]開始執行安裝。 [Version]版本描述資訊,主要用於版本控制。
[Strings]字串資訊,用於常量定義。
[DestinationDirs]定義系統路徑資訊。
[SourceDisksNames]指明來源硬碟資訊。
[SourceDisksNames]指明來源硬碟檔案名稱。
[DefaultInstall]開始執行安裝。 其它的節可以自訂
最開始一般是[Version]區:
[Version] signature="$XXXX$" AdvancedINF=2.0 [Version]
signature="$XXXX$"
AdvancedINF=2.0 "Signature"項定義了該INF檔案需要運行在何種作業系統版本中。有$Windows NT$, $Chicago$, or $Windows 95$三個值供選擇,一般選擇$Chicago$即可。
接下來就是最重要的[Add.Code]區:
[Add.Code] Ctrl1.dll=C1Section Ctrl2.dll=Ctrl2.dll [Add.Code]
Ctrl1.dll=C1Section
Ctrl2.dll=Ctrl2.dll 前面是要下載的檔案名稱,後面是對應這個檔案的地區名,可以是任何名字,不過一般都是和檔案的名字相同,這樣方便維護。
還有需要注意是在[Add.Code]區出現的檔案要根據依賴性進行排序,例如前面說的ctrl1.dll要依賴於ctrl2.dll,則ctrl2.dll要出現在ctrl1.dll的前面。因為安裝時是按照相反的順序進行的,也就是說先安裝ctrl2.dll,然後才是ctrl1.dll,哧哧,記清楚了,不要搞反了。
再接下來是各個檔案的地區了
[Ctrl1.dll] file-win32-x86=thiscab RegisterServer=yes clsid={.....} DestDir= FileVersion=1,0,0,0 [Ctrl1.dll]
file-win32-x86=thiscab
RegisterServer=yes
clsid={.....}
DestDir=
FileVersion=1,0,0,0 [Ctrl1.dll]地區中的第一個file值告訴ie到哪裡去得到這個dll,file一共包括三個部分,第一部分是file,這個永遠都是這樣的(至少目前來說);第二部分告訴聲明支援的OS,win32表示windows,mac就是蘋果MAC OX了;第三部分是CPU類型,比如說x86、 ppc (Power PC)、 mips或者alpha了。
file的值可以取三個一個URL、ignore和thiscab,如果是URL則說明到URL所在的位置去下;如果是ignore說明對於這種OS和CPU,不需要下載這個檔案(ctrl1.dll);如果是thiscab很明顯就在當前的cab檔案中了。
接下來是RegisterServer,可以取兩個值yes和no,如果為yes則說明ie要註冊該dll,如果是no就不必了。+如果這裡選yes,則需要指定clsid,否則clsid一行可以省略。+
再下來是DestDir,它的值是dll將要存到本地硬碟的位置,如果它的值是10,則將dll放到\Windows或者\WinNT下;如果是11,則放到\Windows\System或者\WinNT\System32下;如果是空(就是沒有值)則會放到\Windows或者\WinNT下的Downloaded Program Files目錄下;
最後是FileVersion,這個就比較明顯了,說明了ctrl1.dll的版本號碼。
其他部分詳見參考文獻。
建立cab檔案
如果需要建立cab檔案,首先需要Cabarc或者Makecab,它們隨著Cabinet SDK的安裝就有了,Cabinet SDK的是http://msdn.microsoft.com/workshop/management/cab/cabdl.asp
Cabarc可以建立、查看或者解出cab裡面的檔案,而Makecab則只可以用來建立cab檔案。
製作cab檔案時需要將所有的相關檔案都包含進去,可以通過Depends(VC內建的)檢查需要的檔案。使用inf檔案將這些東西都寫進去。
inf搞法:inf檔案描述cab中所有的ocx及dll檔案,inf通過一些命名地區來提供需要的資訊。
cabarc N ctrl1.cab ctrl1.inf ctrl1.dll cabarc N ctrl1.cab ctrl1.inf ctrl1.dll N表示要建立一個新的檔案,ctrl1.cab是建立的檔案名稱,ctrl1.inf是cab的inf,後而是需要加到cab裡的檔案,可以使用萬用字元。
然後就可以將cab檔案放到網頁上了
參考
如何編寫INF:http://www.cnblogs.com/sbdx/archive/2006/12/14/whatisinffile.html
如何寫cab相關的INF:http://docs.google.com/Doc?docid=0Aehzv88zbfy_ZGdncGdqczZfMjIxZHNnZDhtYzg&hl=zh_CN
--------------------------------------------------------------------------------
簽名
申請認證
要使用到makecert工具,在VS2005目錄下搜尋可以搜尋到。
在命令提示行中執行
makecert -sk myNewKey -r -n "CN=發證機關的名字,OU=Certification,O=公司名字,E=name@email.com" -ss my myNew.cer cert2spc myNew.cer myNew.spc makecert -sk myNewKey -r -n "CN=發證機關的名字,OU=Certification,O=公司名字,E=name@email.com" -ss my myNew.cer
cert2spc myNew.cer myNew.spc makecert具體使用協助可參考建立認證的工具(makecert.exe)
簽名
要使用到signtool工具,也可以在VS2005目錄下找到。
signtool工具有多種使用模式,下面使用的是帶UI的嚮導模式。
在命令提示行中執行
signtool signwizard signtool signwizard 之後進入signcodewizard:
step1.選擇要簽名的cab檔案 step2.自訂 step3.從檔案中選擇 myNew.spc step4.csp中的私密金鑰/密鑰容器:myNewKey step5.sha1 step6.next step7.描述:外掛程式名稱/web:www.yourcompany.com step8.http://timestamp.verisign.com/scripts/timstamp.dll step1.選擇要簽名的cab檔案
step2.自訂
step3.從檔案中選擇 myNew.spc
step4.csp中的私密金鑰/密鑰容器:myNewKey
step5.sha1
step6.next
step7.描述:外掛程式名稱/web:www.yourcompany.com
step8.http://timestamp.verisign.com/scripts/timstamp.dll signtool 的具體使用協助可參考簽名工具 (SignTool.exe)
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/wangjingfei/archive/2010/03/25/5417028.aspx