如何製作cab包(解決不能註冊的問題)

本文轉自:http://kiki1120.iteye.com/blog/512474

 

在上一篇文章中,講述瞭如何製作客戶端Activex插件的cab包,但是在使用過程中發現有的瀏覽器不能註冊成功,手動註冊也不行,提示缺少動態鏈接庫的問題,導致不能正常使用。後來重新編譯ocx,將其他dll補充進來一起打包,但仍然不能註冊成功。

 

    於是將所有文件複製到system32文件夾下,手動進行註冊,結果註冊失敗。原來是inf中的寫法將system32作爲目的文件夾,而該文件夾卻不允許這樣操作。至於原因,目前還不清楚,網上搜索到的例子也都是使用system32,可能我的ocx比較特殊吧,那就使用system32下新建的一個目錄吧,這次手動註冊可以成功。

 

    重新打包、測試,有點崩潰了,爲什麼還是註冊不了。現象是瀏覽器提示是否安裝,點擊安裝後無反應,刷新頁面還是提示是否安裝。後來查看支付寶的支付控件中的inf文件,按照其格式重新制作inf文件,再次測試,成功!

 

如何製作cab包

製作SSL VPN客戶端插件cab包有兩種方法,一種是手動打包,另一種是利用Ant自動打包,下面分別對兩種方法進行說明,你可以根據熟練程度自由選擇。

一、手動打包

準備工作

l  用到的工具

打包工具iexpress.exe

簽名工具signcode.exe

代碼簽名證書

l  打包文件

WVC.ocx

LiteUnzip.dll

mfc80u.dll

mfcm80u.dll

msvcm80.dll

msvcp80.dll

msvcr80.dll

Microsoft.VC80.CRT.manifest

Microsoft.VC80.MFC.manifest

       在製作cab包之前,需要準備以上的打包、簽名工具和文件,將iexpress.exe和signcode.exe複製到Java環境變量的bin目錄下。打包文件全部存放在獨立的一個文件夾下。

製作步驟

步驟1 準備inf文件

將以下代碼另存爲wvc.inf,存放於打包文件目錄下。文件內容一般情況下不需要改變,除非cab需要增加或減少文件的情況下,再修改此文件。

 

 

Text代碼 複製代碼 收藏代碼
  1. [version]   
  2. signature="$CHICAGO$"  
  3. AdvancedINF=2.0  
  4.   
  5. [DefaultInstall]   
  6. CopyFiles=files   
  7. RegisterOCXs=RegisterFiles   
  8.   
  9. [DefaultUninstall]   
  10. cleanup=1  
  11. Delfiles=files   
  12. UnRegisterOCXs=RegisterFiles   
  13.   
  14. [SourceDisksNames]   
  15. 1 = %DiskName%,"wvc.cab",1  
  16.   
  17. [SourceDisksFiles]   
  18. WVC.ocx=1  
  19. LiteUnzip.dll=1  
  20. mfc80u.dll=1  
  21. mfcm80u.dll=1  
  22. msvcm80.dll=1  
  23. msvcp80.dll=1  
  24. msvcr80.dll=1  
  25. Microsoft.VC80.CRT.manifest=1  
  26. Microsoft.VC80.MFC.manifest=1  
  27. westone.cer=1  
  28.   
  29. [RegisterFiles]   
  30. %11%\sslvpn\WVC.ocx   
  31.   
  32. [DestinationDirs]   
  33. files=11, sslvpn   
  34.   
  35. [files]   
  36. WVC.ocx=WVC.ocx   
  37. LiteUnzip.dll=LiteUnzip.dll   
  38. mfc80u.dll=mfc80u.dll   
  39. mfcm80u.dll=mfcm80u.dll   
  40. msvcm80.dll=msvcm80.dll   
  41. msvcp80.dll=msvcp80.dll   
  42. msvcr80.dll=msvcr80.dll   
  43. Microsoft.VC80.CRT.manifest   
  44. Microsoft.VC80.MFC.manifest   
  45. westone.cer=westone.cer   
  46.       
  47. [WVC.ocx]   
  48. file-win32-x86=thiscab   
  49. clsid={C8E6EFFA-ED02-4858-836A-B164102F3C5D}   
  50. RegisterServer=yes   
  51. FileVersion=1,0,0,1  
  52.       
  53. [LiteUnzip.dll]   
  54. file-win32-x86=thiscab   
  55. FileVersion=0,0,0,2  
  56.   
  57. [mfc80u.dll]   
  58. file-win32-x86=thiscab   
  59. FileVersion=8,0,50727,42  
  60.   
  61. [mfcm80u.dll]   
  62. file-win32-x86=thiscab   
  63. FileVersion=8,0,50727,42  
  64.   
  65. [msvcm80.dll]   
  66. file-win32-x86=thiscab   
  67. FileVersion=8,0,50727,42  
  68.   
  69. [msvcp80.dll]   
  70. file-win32-x86=thiscab   
  71. FileVersion=8,0,50727,42  
  72.   
  73. [msvcr80.dll]   
  74. file-win32-x86=thiscab   
  75. FileVersion=8,0,50727,42  
  76.   
  77. [westone.cer]   
  78. file-win32-x86=thiscab   
  79.   
  80. [Strings]   
  81. DiskName = "sslvpn"  

註釋:

²  "thiscab" 是一個關鍵字,意指包含該INF的CAB文件。也可以從網上下載所需要的DLL文件,只要指定一個HTTP 網址即可,如:

²  關鍵字"file-win32-x86" 指定平臺是 x86。

²  文件版本號可見屬性。

²  "DestDir"指的是裝載目錄或者文件的地址: 11 指定爲系統目錄 WINDOWS/ /SYSTEM32;

²  "clsid" 指的是要安裝控件的CLSID。

步驟2 簽名ocx文件

運行signcode.exe

1)      選擇要簽名的ocx文件,由於dll不需要註冊到系統,所以不必簽名。

2)      選擇代碼簽名證書公鑰。

3)      選擇代碼簽名證書私鑰。

4)      其他選項均爲默認設置,輸入證書私鑰口令,輸入時間戳,再一次輸入私鑰口令。

步驟3 製作CAB

運行iexpress.exe

1)      選擇“Create new Self Extraction Directive file”,點擊下一步。

2)      選擇“Create compressed files only(ActiveX Installs)”,點擊下一步。

3)      點擊Add,選擇所有文件包括inf,點擊下一步。

4)      點擊Browse,輸入.CAB文件的存放地址(包含所取文件名),並且要選中 “Store files using Long File Name inside Package”。點擊下一步。

5)      選擇“Don’t save”,一直點擊下一步,直到完成。

步驟4 簽名CAB

 

同步驟2,選擇剛剛生成的cab包進行簽名,注意簽名後複製到webapp/download目錄時需要更名爲wvc.cab。

 

步驟5 刪除ocx插件

如果想刪除已安裝的插件,重新註冊,那麼進入安裝目錄c:\windows\downloaded program files,選中WVC刪除即可。

二、自動打包

準備工作

l  用到的工具

打包工具cabarc.exe

簽名工具signcode.exe

l  打包文件

WVC.ocx

LiteUnzip.dll

mfc80u.dll

mfcm80u.dll

msvcm80.dll

msvcp80.dll

msvcr80.dll

Microsoft.VC80.CRT.manifest

Microsoft.VC80.MFC.manifest

在製作cab包之前,需要準備以上的打包、簽名工具和文件,將cabarc.exe和signcode.exe複製到Java環境變量的bin目錄下。打包文件全部存放在webapp/download/wvc文件夾下。更新build.xml文件。

製作步驟

步驟1 準備inf文件

參照手動打包步驟。

步驟2 修改本地時間

 

由於代碼簽名證書已經過期,所以需要將本地時間修改成證書還沒有過期的時間,否則簽名失敗。如果擁有未過期的代碼簽名證書,此步驟可以忽略。

步驟3 執行build.xml的activex任務

在Eclipse中打開build.xml文件,執行activex任務。該任務會自動簽名wvc.ocx文件,生成wvc.cab並簽名

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章