问题标签 [office-pia]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1148 浏览

deployment - 将 PIA 部署到混合版本的 Office

您好,我一直在与一些复杂性作斗争,以了解 MS Office 的主要互操作程序集 (PIA) 的部署。我在 VS 2008 中内置了基于纯 com 技术的 Visual Studio Com Add-IN(更多信息不是 VSTO,请参见底部),它引用了 2003 Primary Interop Assemblies,但该加载项可用于 2003、2007 或现在 2010办公机器。因为我不知道客户将使用 2003、2007 还是 2010,所以我不能简单地部署一个 PIA 版本作为先决条件(除非我制作了 3 个我不想做的安装程序)。现在,我的理解是,当您按照此处的步骤操作时要将 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 投票
1 回答
6736 浏览

.net - 如何在未安装 Office 的计算机上手动安装 Office 2007 PIA?

我看到了一些关于Office 2007 PIA的其他问题,特别是:

这个问题不一样。


根据我的经验,如果计算机上尚未安装 Office 2007,则无法安装 Office 2007 PIA。我运行 MSI,它显示一个对话框大约 5-7 秒,说“请稍候,Windows 配置 Office 2007 主互操作程序集...”,然后对话框消失,似乎没有任何变化。

最值得注意的是,GAC 中没有 Office 程序集。

如果我做错了什么,请纠正我。现在我假设这是预期的行为,并且对这个其他问题的主要答案是错误的。


这将我们引向我的实际问题。假设我在没有首先安装 Office 的情况下安装 PIA 的经验是预期的,我是否可以“手动”将 PIA 安装到 GAC 中?

我的目的是允许编译依赖于 PIA 的项目。我不希望运行该应用程序。我不是在问是否可以在未安装 Office 时运行使用 PIA 的应用程序。我知道答案。我在问是否可以安装 PIA 以允许在构建机器上编译项目,而无需先安装 Office。

我尝试用 解压缩 o2007pia.msi 文件msiexec /a,但没有任何乐趣。但是,我能够使用lessmsi手动提取 MSI 中的文件。

我正在考虑尝试gacutil -i从 MSI 文件中获取每个 DLL,如下所示:

但是,我也看到了这些项目:

我该如何处理这些策略 DLL 和配置文件?

我可以忽略它们吗?
感谢您提供的任何建议。

0 投票
5 回答
12163 浏览

c# - 在 C# 中使用 COM 互操作时的 RCW 和引用计数

我有一个使用 Office 互操作程序集的应用程序。我知道运行时管理的“运行时可调用包装器(RCW)”。但我不太确定引用计数是如何增加的。MSDN 说,

无论有多少托管客户端调用它,RCW 只保留一个对包装 COM 对象的引用。

如果我理解正确,在下面的例子中,

我将实例传递wrd给另一个方法。但这不会增加内部引用计数。所以我想知道在什么情况下引用计数会增加?谁能指出引用计数增加的情况?

我还阅读了一些博客,其中说在使用 COM 对象进行编程时避免使用双点。像,wrd.ActiveDocument.ActiveWindow。作者声称编译器创建了单独的变量来保存将增加引用计数器的值。恕我直言,这是错误的,第一个例子证明了这一点。那是对的吗?

任何帮助都会很棒!

0 投票
2 回答
15563 浏览

.net - 为什么办公室 PIA 不能正确安装到 GAC?

我目前正在处理 ac# 项目,我需要访问 Outlook。开发是在两台不同的机器上完成的,其中一台安装了办公室,另一台没有。我之前询问过如何针对 Outlook com 对象编译我的项目,其中一条评论建议我针对 Office 主互操作程序集或 PIA 进行编译。在我下载的Office 2007 PIA中,有一个 msi 文件,它应该为 Office 的不同部分安装许多 PIA。我的问题是这似乎不会发生。在我没有办公室的机器上,打字后

在提示符下,Windows 安装程序启动,显示“请稍候,Windows 正在配置 Microsoft Office 2007 主要互操作程序集。正在收集所需信息”的消息框以及大约 33% 的进度条,之后消失,之后

对于 Office 2007 没有产生任何结果(我确实得到了一个结果,它的版本为 10.0.4504.0,是早期安装尝试使用错误的 Office 版本的结果。但 Office 2007 PIA 的主要版本为 12。)

我看到了一些可能的解释,但我都不相信:

  • GAC 无法处理同一程序集的多个版本,因此不允许我安装更新版本。

  • 不知何故,我不满足要求。这些基本上是 XPsp2 和 .Net 1.1 或更高版本,我都有。要求部分还提到,下载适用于我尚未安装的 office 2007,但我认为这不是必需的。这既是因为 is 没有被指定为要求,也是因为 Hans Passant 在对我原来的问题的评论中非常确定 PIA 可以专门用于在没有安装 Office 的情况下进行开发,所以没有任何意义办公室为先决条件。

那么有没有人知道为什么 Office 2007 PIA 没有正确安装,或者我可以做些什么来接近答案?如果您需要更多信息,请告诉我。谢谢。

0 投票
1 回答
486 浏览

excel - Using Office 2007 PIAs with Excel 2002 (Primary Interop Assembly)

Is this possible?

My app references Excel 2007 Primary Interop Assemblies. Can I install these on a PC which has only Excel 2002 (XP) installed?

Or do I need the Office XP PIAs?

In that case, do I need to modify my program to reference the old PIAs?

0 投票
3 回答
457 浏览

c# - 如何杀死 Office PIA 调用的 Office Word 进程

我打电话给 Office PIA 做某事,但文字处理总是挂起,CPU 使用率为 0%。

如何添加超时机制?

或者说,在过期时间后停止文字处理?

0 投票
5 回答
35829 浏览

c# - 使用 Microsoft.Office.Interop 打开文件时如何禁用弹出窗口

如只读确认,其他警报。如何处理这些弹出窗口?还是忽略它们?

0 投票
1 回答
4133 浏览

c# - 如何在word文档中插入圆形

我不知道如何在我的文档中插入一个圆形。我正在使用 iterop.word intro c#,我需要在一个清晰的文档中插入 4 个小圆圈。

0 投票
7 回答
30177 浏览

svg - 使用 Microsoft Office 2010 PIA 将 PPT 转换为 SVG

我正在尝试将 powerpoint 演示文稿转换为单独的 svg 文件(每张幻灯片 1 个),是否可以使用 Microsoft Office 2010 PIA 来做到这一点?

如果是这样,那么是否有任何关于在 Java 中使用 Microsoft Office 2010 PIA 的教程?

0 投票
2 回答
2405 浏览

.net - 我可以使用 Microsoft Office 2010:Primary Interop Assemblies 将 word、excel 转换为 PDF

我可以使用 Microsoft Office 2010:主要互操作程序集将 word、excel 转换为 PDF 吗?有多容易?任何 C# 示例?