2014-11-06 66 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