2009-02-16 35 views
4

我已经创建了一个Word加载项组件,以及一个Visual Studio安装项目来安装该组件。.NET Word 2003加载项可以安装在GAC之外吗?

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

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

caspol -af AssemblyName.dll 

这没什么区别和compenent仍然没有在Word中加载。 caspol打印出一条消息“因为所有GAC组件总是得到充分信任,充分信任列表是没有 不再有意义。你应该安装在安全 策略中使用的GAC任何组件,以确保他们是值得信赖的”

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

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

回答

3

您可以手动运行以下命令来设置安全性,让这个词从GAC之外运行的组件。这创建了一个完全信任的新组织,这是组装运行的基础。

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

微软必须在以下网站link to MSDN一个安装程序,这将让你有这个命令的自定义操作的示例自定义操作。

1

我不认为将插件程序集放入GAC是强制性的。我认为你只是缺少部署中的一个步骤。

MS Word等办公应用程序通过读取某些注册表项来加载它们的加载项。您很可能不会在部署过程中创建这些条目。

要了解所有此注册表业务的详细信息,请参阅this文章。另请参阅this文章

+0

谢谢 - 很好的建议。我已经加倍检查了所有的注册表设置,他们看起来正确 – 2009-02-17 11:17:19

2

您绝对不必将组件安装到GAC,也无需在加载项组件中定义任何安全策略。

您是否在Office 2003中使用.NET 2.0? Office 2003和Office XP都有加载.NET 2.0插件的问题。他们使用.NET 1.1框架加载(如果存在于机器上,很可能)。因此,您需要使用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. 导航到C:\ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages,找到KB908002文件夹。
  3. 登录到具有Visual Studio 2008的安装和机器KB908002文件夹复制到C:\ Program Files文件\微软的SDK \的Windows \ v6.0A \引导程序\软件包
  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:\ tmp \ KB908002 \ tmp,setup.exe和bootstrapper.msi

  3. 我们感兴趣的是bootstapper.msi的内容,所以我们提取这个文件的内容:

    msiexec /a bootstrapper.msi /qb TARGETDIR=C:\KB908002\tmp\ 
    cd tmp 
    
  4. 最后,我们复制我们提取到Windows SDK的引导程序文件夹现在

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

+0

感谢您的反馈divo。我们正在使用Visual Studio 2008构建插件并定位.NET 2.0平台,因此KB补丁不适用于我们的情况。我们已经安装了正确的PIA,并且在GAC中它的加载正确 - 所以我认为所有必需的组件都在 – 2009-02-17 10:04:21

相关问题