ClickOnce应用程序无法与Office 2007一起使用

时间:2020-03-06 14:37:03  来源:igfitidea点击:

我是使用ClickOnce进行部署的.net应用程序的开发人员。我已经部署了60多次,并且计算机在下载最新版本时没有任何问题。但是,当我今天早上进行部署时,当安装了Office 2007的计算机尝试启动该应用程序时,会发生以下错误:

Unable to install or run the application. The application requires that assembly stdole Version 7.0.3300.0 be installed in the Global Assembly Cache (GAC) first. Please contact your system administrator.

但是,装有Office 2003的计算机可以毫无问题地启动应用程序。

有人对解决此问题有任何建议吗?

解决方案

我不确定特定问题,但是stdole库的Office 12版本与我们使用Office 2003时的版本不同(并且-根据我的经验,并不总是向后兼容)。

我们使用Office DLL周围的包装器来使用Office必须提供的Mailmerge功能,并且不管我们信不信,Microsoft再次更改了接口,因此我们必须编译针对两个不同Office版本的两个不同的包装器。简而言之,是PITA。

在他们不提供托管库之前,我不会再针对MS Office进行编码。

尽管有很多麻烦,我认为我们应该在计算机中安装Office 12并从那里进行测试。我们会注意到,所有Office内容都是不同的。如果我们可以使其在Office 12下工作,则它可能与具有Office 11(也称为2003)的计算机兼容,但是请不要指望它并在进行任何部署之前对其进行测试。

我认为这与ClickOnce没有任何关系;更多的是GAC / OfficeVersion问题。另外,请检查是否存在Vista问题,因为UAC和DEP内容往往会干扰"旧"应用程序的工作方式。

据我所知,安装Office2k7时会删除此版本的stdole。我们可以通过gacutil在所有目标计算机上分别安装它,也可以通过ClickOnce软件包bootstrapper以某种方式将其包括在内。现在在Mac上,因此我无法测试。

公司开始部署Office 2007后,我遇到了完全相同的问题。我的第一个快速解决方案是将stdole复制到出现问题的两台计算机的GAC中。

经过调查,我发现我们的应用程序实际上并未使用stdole。当我测试在测试后删除的COM dll时,它可能已经添加了参考。因此,我的解决方案是将其从"发布"选项卡下的"应用程序文件"对话框中排除。因此,首先请确保我们需要它。

据我了解,当我们引用某些COM dll(如Office)时,这是必需的。如果是这种情况,我发现一些帖子说可以通过将"应用程序文件"对话框上的"发布状态"从"准备工作"更改为"包括",并将"下载组"从"无"更改为"必需"来解决问题。在我的情况下,默认情况下已将stdole添加为前提条件。