VSTO(Outlook加载项)安装部署(C#)

时间:2010-04-28 19:08:10

标签: c# deployment outlook vsto

我在为Outlook 2007加载项创建安装文件时遇到一些问题。

问题是加载项需要有一个引用清单(http://msdn.microsoft.com/en-us/library/bb386106.aspx)的注册表项。该项目构建一个显示在bin \ debug文件夹中的清单文件。但是,在我的安装项目中,如果我去添加项目输出,则清单永远不会列为输出的一部分。奇怪的是,安装程序确实创建了一个注册表项,它引用了我的bin \ debug文件夹中的清单,但这不合适,因为我将部署到的机器上没有该文件夹。

感谢。

====================================

对于那些感兴趣的人,一些背景问题。

  1. 如果我在设置中使用项目输出,则VSTO加载项第一次安装正常。如果我使用相同的设置卸载并重新安装,则无法正确安装。如果我重建设置,它会再次安装正常(换句话说,它只会在第一次安装设置时安装)。
  2. 我更正了(1)但是从我的安装项目中删除了项目输出,而是手动添加文件(我的dll +清单),然后更新注册表项以指向添加的清单。这一次,我可以使用相同的设置卸载并重新安装。但是,出于某种原因,安装程序会创建两个注册表项,一个是我手动放入的,指的是我包含的清单,另一个自动引用并指向bin \ debug文件夹中的清单。我无法删除第二组注册表项,因为它们没有出现在我的安装项目中。将它们留在那里的问题是加载项执行每个命令两次(因为它被注册了两次)。
  3. 奇数,嗯?

1 个答案:

答案 0 :(得分:5)

我发现这篇关于VSTO for Office 2007加载项部署的Microsoft白皮书非常有用: http://msdn.microsoft.com/en-us/library/cc563937(office.12).aspx
(我最初链接到另一篇也很好的论文,但适用于2003 + 2007,有些不同:http://msdn.microsoft.com/en-us/library/bb332052.aspx
特别是关于清单的问题,我发现当加载项的注册表项与加载项本身具有相同名称时,我发现了一个很难的方法,出于构建期间的一些神秘原因,Manifest值被默默地替换从VSTO清单到加载项清单。