VSTO (Outlook Add-In)设置部署(C#)

6

我遇到了一些问题,在创建Outlook 2007添加程序的安装文件时。

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

谢谢。

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

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

  1. 如果我在安装中使用项目输出,则VSTO插件第一次安装就很好。如果我卸载并重新使用相同的安装程序安装,则无法正确安装。如果我重新构建安装��序,则再次安装正常(换句话说,它只在运行安装程序的第一次安装时安装)。
  2. 我通过从我的安装项目中删除项目输出,手动添加文件(我的dll + 清单),然后更新注册表键,以指向添加的清单,来纠正(1)。这次,我可以使用相同的安装程序卸载和重新安装多次。但是,由于某种原因,安装程序会创建两个注册表项:一个是我手动添加的,引用了我包含的清单;另一个是自动引用的,指向我的bin\debug文件夹中的清单。我无法删除第二组注册表项,因为它们在我的安装项目中没有出现过。保留他们的问题是插件每个命令都执行两次(因为它被注册了两次)。

奇怪吧?


通常情况下,VSTO是通过ClickOnce安装的,如果要使用MSI,则需要经过许多步骤才能使其正常工作。难道ClickOnce不是一个选择吗? - 76mel
我从未使用过ClickOnce,但我认为这不是一个选项。我们目前不想发布到服务器。 - i8abug
点击一次,你可以直接发布到本地驱动器或共享位置,但对于MSI安装,请开始阅读http://blogs.msdn.com/mshneer/archive/2007/09/04/deploying-your-vsto-add-in-to-all-users-part-i.aspx。 - 76mel
我没有忘记这些回复,感谢你抽出时间来回答。工作让我忙于其他事情几周,但我会回来处理这个问题,并告诉你进展如何。 - i8abug
1个回答

5
我发现这篇微软关于VSTO办公室2007插件部署的白皮书非常有用:http://msdn.microsoft.com/en-us/library/cc563937(office.12).aspx
(我最初链接到另一篇也很好的文章,但适用于2003 + 2007,与此略有不同:http://msdn.microsoft.com/en-us/library/bb332052.aspx
具体来说,在清单问题上,我通过艰难的方式发现,当注册表键为插件本身的名称时,由于某种神秘的原因,在构建过程中,清单值被静默地从VSTO清单替换为插件清单。

3
这是白皮书的更新版本(VSTO 2010)链接:http://msdn.microsoft.com/zh-cn/library/ff937654.aspx - bernhof

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接