通過WEB頁面自動發布客戶端軟體

2021-08-25 12:51:43 字數 2103 閱讀 7882

作為軟體產品發布的途徑之一,開發人員應該了解通過 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...