作為軟體產品發布的途徑之一,開發人員應該了解通過 web 頁面發布客戶端軟體的基本方法和流程。發布過程涉及到軟體模組簽名、安裝指令碼和打包過程,具體流程如下:
1.獲取或生成乙個軟體出版證書(本文通過自已生成數字證書進行演示)
2.使用證書對需要發布的軟體模組進行數字簽名(建議,可省略)
3.編寫inf安裝指令碼,並隨同軟體模組打包到cab檔案
4.對cab檔案進行數字簽名
5.通過object codebase html標記在web頁面中嵌入cab引用
在開始這個過程前,先準備好所需的工具:
cabarc.exe - 用於打包生成 cab 檔案
makecert.exe - 生成簽名cab檔案的數字證書
cert2spc.exe - 生成出版商說明檔案
signtool.exe - 數字簽名嚮導
vs2005中,這些工具都可以在 microsoft visual studio 8\common7\tools\bin 目錄下找到。
以乙個ocx發布為例(target.ocx依賴於reiler.dll),整個流程可以以乙個批處理過程完成:
rem 生成 cab,檔案順序必須與 inf 檔案中相同
cabarc -s 6144 n client.cab target.ocx relier.dll client.inf
rem 生成證書 sk:私鑰 ss:描述 n:cn=公司名稱 -m:有效月數 證書名稱:cert.cer
makecert -sk clientsk -ss 「client certification」 -n cn=」organization description」 client.cer
rem 生成出版商說明檔案
cert2spc client.cer client.spc
rem 數字簽名嚮導
signtool signwizard
rem 應用在網頁中,注意正確的clsid和codebase版本號,否則可能每次都會執行安裝過程
上面的流程中我省略了對模組target.ocx和relier.dll的數字簽名過程,這個過程也可以通過 signtool signwizard來完成。下面給出client.inf的指令碼內容:
[version]
; 不要修改 signature,在 nt 和 win95 中為 chicago
signature=」$chicago$」
advancedinf=2.0
[add.code]
target.ocx = target.ocx
relier.dll = relier.dll
; 注意上面的排列順序應該是逆序的,即前面的檔案可以依賴於後面的檔案
;11 系統目錄(system32); 10 windows目錄(windows/winnt)
; 下面的順序則相反,根據依賴關係將依賴最少的放在最前面
[relier.dll]
file-win32-x86=thiscab
destdir = 11
[target.ocx]
file-win32-x86=thiscab
clsid=
;fileversion=1,0,0,0
destdir = 11
registerserver=yes
inf檔案的規範參考通常對於裝置驅動程式而言,所使用的inf檔案會比普通應用程式要複雜得多。
步驟1:選擇需要簽名的cab檔案
步驟2:簽名方式選擇自定義
步驟3:證書「從檔案選擇」,選擇在批處理流程中已經生成的pkcs#7證書 client.spc
步驟4:私鑰中選擇「csp中的私鑰」,然後從「金鑰容器」中選擇在批處理流程中已經生成的私鑰clientsk
步驟5:選擇一種雜湊演算法,通常情況下我們使用sha-1
步驟6:使用預設的「證書路徑中的所有證書」,這樣如果你的證書來自於ca,那麼在客戶系統中證書將會被認為是可信的
步驟8:略過時間戳,即可完成數字簽名
最後在web頁面中嵌入object標籤:
需要注意的是,是否能夠成功安裝還與使用者的瀏覽器設定相關,在預設情況下,需要使用可信的ca證書能夠保證安裝順利完成,而自己使用makecrt或openssl生成的非可信證書可能會產生警告或安裝失敗。
通過Web頁面自動發布客戶端軟體
作為軟體產品發布的途徑之一,開發人員應該了解通過 web 頁面發布客戶端軟體的基本方法和流程。發布過程涉及到軟體模組簽名 安裝指令碼和打包過程,具體流程如下 1.獲取或生成乙個軟體出版證書 本文通過自已生成數字證書進行演示 2.使用證書對需要發布的軟體模組進行數字簽名 建議,可省略 3.編寫inf安...
WEB動態頁面的客戶端快取
但有這樣一些頁面,雖然是動態的但變動頻率較小,且對於同一使用者重複呼叫可能很多 比如說個人管理後台或者新聞首頁面 我們希望像js或者ccs那樣在客戶端快取起來.並且,在我們希望的時候,可以更新客戶端備份的那個頁面,或者介面資料.是否可以做到呢 事實上,瀏覽器可以快取js,就一定能快取我們的動態頁面 ...
Windows Docker 客戶端發布
還記得之前為了演示需要在 windows 8.1上編譯和安裝docker客戶端的文章 嗎?如今已經可以忽略掉了。為什麼?本博已經交代清楚,因為出於快速擁抱開源和新興專案的新趨勢,微軟已經宣布和docker公司一起快速推出了windows版本的docker客戶端 1.6版本 了,如今我們已經可以和在m...