我创建了一个 Word 加载项组件和一个用于安装该组件的 Visual Studio 安装项目。

在安装了 Office 2003 的干净计算机上,似乎无法在 Word 中加载加载项组件。

谷歌搜索该问题表明这是因为该程序集不受信任。我使用命令行工具给予程序集完全信任:

caspol -af AssemblyName.dll

这没有什么区别,并且组件仍然没有加载到 Word 中。caspol 打印出一条消息 “由于所有GAC组件始终都得到完全信任,因此完整的信任列表不再有意义。您应该在GAC中安装安全策略中使用的所有程序集,以确保它们被信任”

更改安装程序以将程序集放入 GAC 中,使其能够在 Word 中正确加载。但是该组件将来可能必须使用在我们的其他 .NET 应用程序之间共享的通用程序集,并且将这些库添加到 GAC 中是不可取的。

有谁知道如何设置安全性以允许在 GAC 外部安装时加载组件?

有帮助吗?

解决方案

可以手动运行下面的命令来设置安全性,以允许这个词来从GAC外运行的组件。这产生以完全信任一个新的组,其是允许的组件来运行。

caspol.exe -u -addgroup All_Code -url "\*"  FullTrust -n AssemblyName.dll

微软具有以下站点链接到用于安装程序的示例的自定义动作MSDN 时,这将允许您包括这个命令作为安装程序的自定义动作。

其他提示

您绝对不必将程序集安装到 GAC,也不必在外接程序集中定义任何安全策略。

您是否在 Office 2003 中使用 .NET 2.0?Office 2003 和 Office XP 在加载 .NET 2.0 插件时都存在问题。它们使用 .NET 1.1 Framework 加载(如果机器上存在,这很可能)。因此,您需要使用以下命令修补您的 Office 安装 Microsoft .NET Framework 2.0 的共享加载项支持更新 (KB908002).

您绝对应该将此补丁包含在安装程序的先决条件中。

查找更多详细信息 回答这个问题.

当然,您必须在目标系统上安装正确版本的 PIA(几乎忘记了这一点,错误或丢失的 PIA 是加载项无法加载的主要问题之一)。

更新:KB908002 需要 PC 上有 VS 2005,才能将共享插件支持更新添加到安装项目的先决条件对话框中。在这种情况下必须使用以下解决方法:

如果您使用的是 Visual Studio 2008,则必须遵循 解决方法 下面提到的获取添加先决条件对话框下列出的 KB908002:

  1. 在安装了 Visual Studio 2005 的计算机上下载并安装该修复程序。
  2. 导航 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages, ,找到 KB908002 文件夹。
  3. 登录到安装了 Visual Studio 2008 的计算机并将 KB908002 文件夹复制到 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages
  4. 现在,如果您转到 Visual Studio 2008 计算机上的先决条件列表,您将看到列出的修复程序。

根本不需要 VS 2005 的另一种选择是:

  1. 将修复程序下载到临时文件夹。
  2. 打开命令提示符,导航到修复程序所在的文件夹,然后启动以下命令以从自解压安装文件中提取文件:

    vs2005-kb908002-enu-x86.exe /C /T:C:\KB908002\
    cd \KB908002
    

    现在文件夹 C:\KB908002 将包含三个文件,vs2005-kb908002-enu-x86.exe /C /T:C: mp\KB908002 mp、setup.exe 和 bootstrapper.msi

  3. 我们对 bootstapper.msi 的内容感兴趣,因此我们提取该文件的内容:

    msiexec /a bootstrapper.msi /qb TARGETDIR=C:\KB908002\tmp\
    cd tmp
    
  4. 最后,我们将提取的packages文件夹复制到Windows SDK的bootstrapper文件夹中

    xcopy /E "C:\KB908002\tmp\SDK\BootStrapper\Packages" "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages"
    
  5. 现在,如果您转到 Visual Studio 2008 中的先决条件列表,您将看到列出的修复程序。

我不认为把外接组件GAC是强制性的。我认为你只是缺少在部署中的一个步骤。

在办公应用,如MS Word通过读取某些注册表项加载其加载项。你最有可能不会在部署期间创建这些条目。

要了解这一切注册业务的详情,请参阅这个文章。另外要了解一般部署Office插件,请参见一文

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top