批量部署用C#.NET 4.0编写的托管ActiveX控件

时间:2011-10-17 21:35:29

标签: c# .net-4.0 activex clickonce

我在C#(.NET 4.0)中创建了一个托管ActiveX控件,可由Office VBA访问(当前从Dynamics中的VBA代码调用)。但是,在寻找一种方法将其部署到我们公司的大众(并保持更新)时,我找不到一种有效的方法。

起初,我认为我可以通过ClickOnce以某种方式做到这一点,但在阅读了一些文章之后,我认为这不会起作用。

有什么建议吗? PowerShell也许吧?

当我们添加新功能时,我需要经常更新此控件。

非常欢迎任何建议。

感谢您的时间,

罗布

2 个答案:

答案 0 :(得分:2)

不要排除ClickOnce。 ClickOnce的问题在于它安装应用程序 per-user 而不是每台机器/系统范围。由于COM / ActiveX注册通常是机器/系统范围的,即注册表项在HKLM下,因此ClickOnce不支持它(由于修改注册表的HKLM部分所需的权限)。

但是,自Windows 2000以来,可以在注册表的用户部分注册COM对象:HKEY_CURRENT_USER\Software\Classes映射到HKEY_LOCAL_MACHINE\SOFTWARE\Classes,与HKEY_CLASSES_ROOT相同。

因此,使用RegSvrEx之类的内容,您应该能够确定需要在HKCU下创建的注册表项。完成此操作后,找到一种在ClickOnce安装/更新发生时触发此HKCU reg更新的方法。

答案 1 :(得分:-1)

您可以使用regasm.exe实用程序:

regasm.exe /codebase foo.dll

其中foo.dll是包含要公开的ActiveX控件的托管程序集。