我是使用ClickOnce进行部署的.net应用程序的开发人员。我已经部署了60多次,计算机在下载最新版本时没有任何问题。但是,当我今天早上部署时,安装了Office 2007的计算机尝试启动应用程序时发生以下错误:
无法安装或运行该应用程序。该应用程序要求首先在全局程序集缓存(GAC)中安装程序集版本7.0.3300.0。请联系您的系统管理员。
但是,使用Office 2003的计算机可以毫无问题地启动应用程序。
有人对解决此问题有任何建议吗?
答案 0 :(得分:2)
据我所知,安装Office2k7时会删除此版本的stdole。您可以通过gacutil在所有目标计算机上单独安装它或以某种方式通过ClickOnce软件包引导程序包含它。在Mac上,所以我无法测试。
答案 1 :(得分:0)
我不确定您的特定问题,但是Office 12版本的stdole库与您使用Office 2003时的版本不同(并且 - 根据我的经验 - 并不总是向后兼容)。
我们使用Office DLL周围的包装器来使用Office提供的Mailmerge功能,不管你信不信,微软改变了接口再次,因此我们必须编译两个< / em>不同的包装器,链接到两个不同的办公室版本。简而言之,就是PITA。
在他们不提供托管库之前,我不再对MS office进行编码。
尽管有这种咆哮,我认为你应该在你的计算机上安装Office 12并从那里进行测试。您会注意到所有Office的内容都不同。如果您可以在Office 12下运行它可能与Office 11(也称为2003)的计算机兼容,但在部署任何内容之前不要依赖它并进行测试。
我认为这与ClickOnce没有任何关系;它更像是GAC / OfficeVersion问题。此外,检查可能的Vista问题,因为UAC和DEP的东西往往会干扰“旧”应用程序以前的工作方式。
答案 2 :(得分:0)
一旦我们公司开始推出Office 2007,我就遇到了完全相同的问题。我的第一个快速解决方案就是将stole复制到两台计算机的GAC上。
经过调查我发现我们的应用程序实际上并没有使用stdole。当我测试我在测试后删除的COM dll时,它可能已经添加了引用。所以我的解决方案只是将它从“发布”选项卡下的“应用程序文件”对话框中排除。所以首先要确保你需要它。
据我所知,当你引用像Office这样的一些COM dll时,它是必需的。如果是这种情况,我发现一些帖子说通过将“应用程序文件”对话框上的“发布状态”从“先决条件”更改为“包含”并将“下载组”从“无”更改为“必需”来解决问题。在我的情况下,stole默认添加为Prerequisite。