2014-11-06 95 views
1

我希望使用安裝項目MSI.NETassembly安裝到GAC中。雖然我對如何去解決這個問題有一個大致的想法,但是在MSI安裝之前是否需要對assembly進行簽名,如果是這樣,在生產環境中,assembly應該如何簽名?使用MSI將.NET程序集安裝到GAC中

即我能建立在Visual Studio/InstallShield自動登錄的組裝,然後通過MSI目標機器GAC上安裝它?

此外,如果我卸載應用程序,是否也會刪除裝載在GAC,中的程序集?

幫我一把。謝謝。

回答

4

向GAC發佈程序集要求程序集有strong name。這是一種不使用傳統的基於證書權限的數字證書的簽名形式。至少,InstallShield不提供將強名稱應用於程序集的特定支持,但Visual Studio提供了在項目中執行此操作的選項。

一旦您的程序集有一個強名稱,它可以安裝到GAC。一旦MSI配置正確(假設您使用的是MSI),它將在卸載時將其刪除(或至少減少引用計數)。

+0

那麼,在生產環境中,我該如何整合?即創建一個強命名密鑰,然後將其應用於文件?關鍵是這些文件還使用證書進行了外部和內部簽名,並且是否會有任何衝突?另外,該過程如何實現自動化? – user1173240 2014-11-10 11:56:31

+2

@ user1173240在應用authenticode簽名之前,您必須嚴格命名該程序集。這兩種數字簽名[完成兩個不同的目標](http://blogs.msdn.com/b/ericlippert/archive/2009/09/03/what-s-the-difference-part-five-certificate-signing -VS-強naming.aspx)。無論如何,只需閱讀鏈接的MSDN文章,並實現它鏈接的[如何用強名稱簽署程序集](http://msdn.microsoft.com/zh-cn/library/xc31ft41.aspx)。如果您還需要authenticode簽名,則InstallShield可以應用這些(發佈視圖>簽名選項卡)。或者提出一個新問題。 – 2014-11-12 12:53:00

+0

對。非常感謝。 – user1173240 2014-11-13 05:50:31