我有一个用C#编写的COM组件,它实现了ISmartTagAction,以便为邮件收件人和发件人之类的东西添加操作到右键菜单。
它只是一个.NET类库,通过COM互操作公开一些类。目前,我使用Visual Studio安装项目部署它。该安装程序只是为COM注册DLL,并添加一个额外的注册表项,以告诉Outlook有关新的智能标记类。
这样可行,但我最近完成了两个不相关的项目,这些项目在一个案例中单击一次,在另一个案例中作为VSTO Outlook插件进行部署,这对最终用户来说是一个更好的体验,主要是因为自动clickonce的更新功能。
我做了一些调查,我没有找到任何方法通过点击一次分发这个COM dll,因为似乎没有办法点击一次注册DLL。它是否正确?有没有办法使这项工作?
我的另一个想法是创建一个Outlook插件项目,并以某种方式将这些类放在该项目中,并使用VSTO发布功能将其推出。我不知道如何在飞行中注册智能标签。
任何人都可以想到一种可以使这项工作的方法吗?大多数情况下,我正在寻找自动更新功能,这样非技术人员可以轻松获取更新。
答案 0 :(得分:2)
你说得对 - ClickOnce无法注册一个dll。它只能在客户端和服务器之间同步文件。好消息是它可以同步任何类型的文件,而不仅仅是.Net程序集。因此,您可以通过将其添加到ClickOnce安装中来轻松地将组件发送到客户端。
从那里开始,任何其他安装步骤都必须在您自己的代码中完成。您可以将文件复制到逻辑位置,使用DllRegisterServer注册,然后添加额外的注册表项。只要用户具有执行所有这些操作的安全权限,这应该有效。
我认为您的COM dll会经常更改,因为您对ClickOnce的自动更新功能感兴趣。如果情况并非如此,并且只有VSTO应用程序的.Net部分经常更改,您可以尝试Visual Studio可以为您生成的引导程序。有很多理由我不喜欢这种方法,所以除非你感兴趣,否则我会把你的细节留给你。