可以在GAC之外安装.NET Word 2003加载项吗?

时间:2009-02-16 16:02:39

标签: .net ms-word gac

我已经创建了一个Word加载项组件,以及一个用于安装组件的visual studio安装项目。

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

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

caspol -af AssemblyName.dll

这没有任何区别,并且仍然没有在Word中加载功能。 caspol打印出消息“因为所有GAC程序集总是得到完全信任,所以完全信任列表是否定的 更有意义。您应该安装在安全性中使用的任何程序集 GAC中的政策,以确保他们受信任“

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

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

3 个答案:

答案 0 :(得分:3)

您可以手动运行以下命令来设置安全性,以允许该字从GAC外部运行程序集。这将创建一个具有完全信任的新组,这是允许程序集运行的原因。

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

Microsoft在以下站点link to MSDN上为安装程序提供了示例自定义操作,这将允许您将此命令包含为安装程序自定义操作。

答案 1 :(得分:2)

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

您是否在Office 2003中使用.NET 2.0? Office 2003和Office XP都存在加载.NET 2.0插件的问题。它们使用.NET 1.1 Framework加载(如果存在于机器上,很可能)。因此,您需要使用 Shared Add-in Support Update for the Microsoft .NET Framework 2.0 (KB908002) 修补Office安装。

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

answer to this questions

中查找更多详情

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

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

如果您使用的是Visual Studio 2008,则必须按照下面提到的workaround在“添加先决条件”对话框中列出KB908002:

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

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

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

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

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

    < / LI>   
  4. 我们对bootstapper.msi的内容感兴趣,因此我们提取此文件的内容:

    msiexec /a bootstrapper.msi /qb TARGETDIR=C:\KB908002\tmp\
    cd tmp
    
  5.   
  6. 最后,我们将我们解压缩的packages文件夹复制到Windows SDK的bootstrapper文件夹

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

  9.   

答案 2 :(得分:1)

我认为将附加程序集放在GAC中是强制性的。我认为你只是错过了部署中的一步。

Office Word等办公应用程序通过读取某些注册表项来加载其加载项。您很可能在部署期间不创建这些条目。

要了解所有此注册表业务的详细信息,请参阅this文章。另外,有关部署Office加载项的一般信息,请参阅this文章