【发布时间】:2011-04-11 19:11:56
【问题描述】:
您好,我一直在与一些复杂性作斗争,以了解 MS Office 的主要互操作程序集 (PIA) 的部署。我在 VS 2008 中内置了基于纯 com 技术的 Visual Studio Com Add-IN(不是 VSTO,请参阅此底部了解更多信息),它引用了 2003 Primary Interop Assemblies,但该插件可用于 2003、2007 或现在 2010办公机器。因为我不知道客户将使用 2003、2007 还是 2010,所以我不能简单地部署一个 PIA 版本作为先决条件(除非我制作了 3 个我不想做的安装程序)。现在,我的理解是,当您按照here 的步骤将 2003 和 2007 PIA 添加到 Visual Studio (2008) 安装包中显示的先决条件列表中时,先决条件足够聪明,可以确定正在运行的 Office 版本您的目标客户。因此,如果您要选择 2003 主互操作程序集和 2007 主迭代程序集作为先决条件,那么当它安装在具有 2003 的机器上时,它应该足够智能,仅在这台机器上缺少 2003 PIA 时才尝试添加 2003 PIA 并且如果这是 2007 Office 机器,那么它将只安装 2007 PIA(而不尝试安装 2003 PIA)。
问题 1 这是正确的理解吗(前提包如此智能,只能根据 Office 的版本安装它需要的东西?)
问题 2 有没有办法让 2010 PIA 像 2003 和 2007 一样显示在 VS 2008 的先决条件列表中?我不想将此项目升级到 VS 2010 b/c,它现在被认为是一个遗留应用程序,来自世界各地的许多客户都在使用它。
问题 3 尽管实际程序集引用了 2003 主要互操作,但我目前没有将这些互操作与加载项一起部署到安装位置。相反,我假设如果我可以安装正确的 PIA,那么我不需要在安装路径中显示它,因为 PIA 将在 GAC 中。但是,一种可能的方法可能是在安装路径中仅包含引用的 2003 程序集(在我的情况下为 excel 和 word),而不用担心 PIA。我怀疑这将适用于 2003 机器,但可能不适用于 2007 和 2010 机器 b/c,即使在运行时在程序集的安装路径中找到引用的 2003 互操作,我认为如果没有GAC 中的 Policy.11.0.Microsoft.Office.Interop.Excel/Word(etc),然后 2007 和 2010 可能不知道如何处理 11.0 (2003) 互操作(我认为 Policy.11.0.Microsoft. Office.Interop 文件将对 2003 互操作的请求重定向到 2007 或 2010)。对此有什么想法吗?
问题 4:Framework 2.0 应用程序 Office 加载项和 Office 2003 存在一个众所周知的错误,即加载项无法加载。 KB907417 aka KB908002 解决了这个问题。如果您在 3.0 或 3.5 框架上开发(并使 3.0 或 3.5 作为先决条件),是否有人知道此 KB 是否必要,因为此问题特定于框架 2.0?或者知识库是否仍然需要部署 b/c 是 office 2003 的问题,而不是框架的版本?
您可以从我的 3 个问题中看出,我试图确定的是我们是否可以通过 VS 设置实用程序构建一个安装程序。如果 PIA 可以用一个安装程序完成,但上面的 KB 是障碍(因为也许答案会回来,即使在 3.0 或 3.5 框架 2003 上,客户也需要 KB),那么一个安装程序的路径可能就是制作KB 是全面的先决条件,并将其安装在 2007 或 2010 机器上,尽管它们在技术上不需要它们。对该选项的任何想法也将不胜感激。最后,我知道现在通常使用 VSTO 而不是纯托管框架代码来为 excel 或 word 编写托管 Com Add-IN,但这不是目前将遗留应用程序更改为这个方向的选项。另据报道,现在可以使用 4.0 框架来部署插件,而无需任何 PIA 作为先决条件,但同样,目前这不是一个可行的选择。
【问题讨论】:
标签: deployment ms-office office-pia