2011-03-07 83 views
4

我想要创建与Office 2003,2007和2010兼容的Office加载项。VS2008允许在2003/2010添加插件,而VS2010允许2007/2010。我都安装了。VSTO 2003-2010加载项兼容性

我已经开发之前2007/2010加载项为2007年加载项与Office自动计算2010

我现在面临的问题是在Office 2003和缺乏功能区界面如何构建该项目使一个加载项与Office 2003-2010兼容。

考虑到各个Office版本(特别是2003到2007/2010)之间的差异,是否有可能只有一个加载项?

+0

如果您有兴趣请提交此:stackoverflow.com/documentation/outlook-addin/commit – 2016-07-27 05:28:22

回答

1

使用VSTO,您可能需要不同的加载项(请参阅英文维基百科关于VSTO的文章中的table of compatibility)。 (1)您需要快速将您的解决方案推向市场,并且如果(2)您有理由相信您的代码库将来需要频繁更新,那么您可以考虑使用第三方工具比如Add-in Express,它可以让你以更少的麻烦创建你所需要的东西。

+0

第三方解决方案不适合我。看来我需要建立至少2个插件,一个用于2003年,另一个用于2007/2010。谢谢! – wpfwannabe 2011-03-08 16:17:52

+0

不是,你只需要两组UI代码。您的功能区代码可以采用XML格式,也可以通过设计人员创建,而2003版本则采用命令行模式代码。运行命令栏代码并挂接事件或根据应用程序在启动时加载XML文件并不困难。版本 – 2013-06-02 22:06:39

+0

说我同意Domke给出Addin Express的低成本,它是一个合适的解决方案团队或个人没有资金用于支持更复杂的部署和发布过程。 – 2013-06-04 01:20:11

2

其实我正在开发使用Visual Studio 2010的Office共享加载项,而且我对Office版本也有相同的要求。它实际上在这些办公室中加载(尽管微软称VS 2010插件与Office 2003不兼容)。我使用Application.Version检查版本。如果它是< 12,那么我使用CommandBars以编程方式构建菜单。否则,我使用功能区扩展(从XML加载)来构建菜单。

UPDATE您必须记住,有些功能在Office 2003中不可用。例如TextRange2。

2

我已经创建了一个加载项,它的目标2003,展望2007 & 2010版本。 我这样做与VS2008,VSTOSE和PIA2003,与Outlook 2003我的开发机器上沿。我不是如何扩展到办公室/文档级插件,但它可能工作。

你会的,但是,需要检测每个客户端上的Outlook/Office版本并安装相应的PIA。

这可以使用Component Checker完成。在每一个引导程序包,您可以再检查一下,哪个版本存在并且只适用在安装该包。例如在product.xml的引导程序包你会:

<?xml version="1.0" encoding="utf-8"?> 

<InstallChecks> 
    <ExternalCheck Property="Office2003Exists" PackageFile="ComponentCheck.exe" Arguments="{3EC1EAE0-A256-411D-B00B-016CA8376078}"/> 
    <ExternalCheck Property="Office2003PIAExists" PackageFile="ComponentCheck.exe" Arguments="{14D3E42A-A318-4D77-9895-A7EE585EFC3B}"/> 
</InstallChecks> 


<Commands Reboot="Defer"> 
    <Command PackageFile="o2003pia.msi" Arguments="" EstimatedInstalledBytes="30000000" EstimatedInstallSeconds="60"> 
     <InstallConditions> 
      <BypassIf Property="Office2003Exists" Compare="ValueNotEqualTo" Value="0" /> 
      <BypassIf Property="Office2003PIAExists" Compare="ValueEqualTo" Value="0" /> 
      <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/> 
     </InstallConditions> 

     <ExitCodes> 
      <ExitCode Value="0" Result="Success"/> 
      <ExitCode Value="1641" Result="SuccessReboot"/> 
      <ExitCode Value="3010" Result="SuccessReboot"/> 
      <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" /> 
     </ExitCodes> 
    </Command> 
</Commands> 

2007年产品ID:

Outlook : 0638C49D-BB8B-4CD1-B191-050E8F325736 
PIA: ED569DB3-58C4-4463-971F-4AAABB6440BD 

该pr 2010年oduct ID是:

Outlook : CFF13DD8-6EF2-49EB-B265-E3BFC6501C1D 
PIA: 1D844339-3DAE-413E-BC13-62D6A52816B2 

这是否意味着你将要包括的先决条件到您的安装程序包,而不是允许下载,这将显着提高下载大小。

您还将只能使用2003年的方法等。此外,您创建的任何工具栏都将是基本的,因为您无法完全控制功能区。您仍然可以添加按钮等,你会在2003 & 2007年他们将在自己的功能区组出现在建议的2010年

一个字,虽然,在我的解决方案,我创建了一个单独的组件,用于任何没有与Outlook进行交互。这样,如果将来需求发生变化,我可以轻松地将加载项分割为特定版本的目标,而不会影响加载项的主要核心功能。