0

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

无法安装或运行应用程序。该应用程序要求首先在全局程序集缓存 (GAC) 中安装程序集 stdole 版本 7.0.3300.0。请联系您的系统管理员。

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

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

4

3 回答 3

2

据我所知,安装 Office2k7 时会删除此版本的 stdole。您可以通过 gacutil 在所有目标机器上单独安装它,或者通过 ClickOnce 包引导程序以某种方式包含它。现在在mac上,所以我无法测试。

于 2008-09-23T18:45:29.373 回答
0

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

经过调查,我发现我们的应用程序实际上并没有使用 stdole。当我测试我在测试后删除的 COM dll 时,它可能已经添加了引用。所以我的解决方案只是将它从“发布”选项卡下的“应用程序文件”对话框中排除。所以首先确定你需要它。

据我了解,当您引用 Office 等一些 COM dll 时,它是必需的。如果您遇到这种情况,我发现一些帖子说通过将应用程序文件对话框上的发布状态从先决条件更改为包含,并将下载组从无更改为必需,解决了问题。在我的情况下,stdole 默认添加为先决条件。

于 2008-09-26T03:03:51.593 回答
0

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

我们使用 Office DLL 的包装器来使用 Office 必须提供的 Mailmerge 功能,不管你信不信,微软再次更改了接口,因此我们必须编译两个不同的包装器,链接到两个不同的 Office 版本。简而言之,一个 PITA。

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

尽管咆哮,我认为您应该在您的计算机中安装 Office 12 并从那里进行测试。您会注意到所有 Office 的东西都是不同的。如果你可以让它在 Office 12 下工作,它可能与带有 Office 11(也称为 2003)的机器兼容,但不要指望它并在部署任何东西之前对其进行测试。

我不认为这与 ClickOnce 有任何关系。这更像是一个 GAC/OfficeVersion 问题。此外,检查可能的 Vista 问题,因为 UAC 和 DEP 的东西往往会干扰“旧”应用程序的工作方式。

于 2008-09-23T18:37:29.003 回答