2013-06-21 124 views
2

我正在嘗試在Inno Setup中自動執行我們的代碼簽名過程。不幸的是,我們對.pfx和密碼分發有相當嚴格的協議,只有一個人可以訪問它。Inno Setup SignTool密碼請求

如果所有安裝都在該人機器上編譯,這本身不會有問題。 SignTool可以在IDE中設置,並且密碼在用戶PC上將保持安全。但是,我們使用共享機器來編譯我們的版本,所以我們無法設置SignTool,因爲我們不能將該密碼容易訪問。這有很多原因,不能改變。

我想要做的是Inno在編譯完成後彈出一個「Enter .pfx Password」對話框。

目前,我的想法是讓Inno安裝程序請求身份驗證,我不知道該怎麼辦,或者編寫一個編譯安裝程序的小腳本,並在Inno安裝程序之外簽名。後來我可以做得相對容易,但是由於我們的工作流程的性質,如果Inno setup可以被利用,這將會更好。

任何人都可以幫助我獲取Inno Setup爲.pfx文件請求SignTool密碼嗎?

+0

您使用哪種標誌工具?微軟標誌工具?如果是這樣,你可以使用'signwizard'命令,這將啓動簽名嚮導,如果需要,將會提示輸入密碼。但考慮一下當你自己編譯腳本時你會做什麼。你會打電話給老闆輸入密碼嗎?我會爲你提到的後一個想法,讓你的團隊成員編譯未簽名的安裝程序,一旦你完成了,讓老闆簽名(從InnoSetup之外)。 – TLama

+0

是的,使用Windows sdk 7.1的微軟標誌工具。建議的解決方案不適合我們,不幸的是,我們每天編譯超過20-40個安裝程序,跨越大約20個.iss文件,所以我們不能傳遞文件進行簽名。這就是爲什麼我們要把它與Inno的構建過程聯繫起來,這樣如果密鑰持有者不存在,我們可以跳過簽名,但是對於大多數構建,他將會這樣。 問題的一部分是我們的測試是外包的,而且我們很快通過構建,所以編譯完成後,它幾分鐘內就可以正常運行。 我將嘗試在Innosetup中使用signwizard –

+0

Signtool/a將搜索證書,並且您可以安裝私鑰而無需導出。 –

回答

2

如果鑰匙持有人可以自動簽署版本而不是他的實際許可,那麼你可以在他的機器上設置某種服務器程序來執行簽名,然後更改Inno中的命令以交付通過網絡構建該程序而不是直接調用signtool。這樣只有他的機器纔會知道密碼和/或擁有私鑰。

另外,只需簽署構建,直到他們通過QA並實際上向客戶發佈。刪除SignTool設置並將其替換爲SignedUninstaller設置。

SignedUninstaller而不SignTool使用,則需要密鑰持有者手動登入卸載文件一次,那麼這可以從共享位置沒有進一步辭職(直到你升級的Inno,此時你需要做的可重複使用它再次)。正在構建的腳本將具有簽名的卸載,但是是未簽名的輸出安裝程序。然後,您可以將其傳遞給QA,並在密鑰持有者可用時手動簽名(如果QA失敗,則丟棄)。

+0

這是非常有用的信息。我有一半使用這個。我實現的是一個python文件,它從不在SVN上的本地文件讀取.pfx位置。如果該文件存在,python會請求密碼,並運行簽名工具。 我現在需要弄清楚如何讓inno安裝程序繼續編譯,如果符號失敗 –

+0

如果您按照我的建議做了,那麼它只會停止編譯,如果您以前沒有使用特定版本的Inno。您在上面採取的方法將無法正常工作,因爲Inno會在繼續之前確保卸載程序已正確簽名。 – Miral

+0

IT安全要求密碼不能以任何方式存儲在任何其他方式,除了精神上 –