.NET Word 2003 加载项可以安装在 GAC 之外吗?
题
我创建了一个 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:
- 在安装了 Visual Studio 2005 的计算机上下载并安装该修复程序。
- 导航 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages, ,找到 KB908002 文件夹。
- 登录到安装了 Visual Studio 2008 的计算机并将 KB908002 文件夹复制到 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages
- 现在,如果您转到 Visual Studio 2008 计算机上的先决条件列表,您将看到列出的修复程序。
根本不需要 VS 2005 的另一种选择是:
- 将修复程序下载到临时文件夹。
打开命令提示符,导航到修复程序所在的文件夹,然后启动以下命令以从自解压安装文件中提取文件:
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
我们对 bootstapper.msi 的内容感兴趣,因此我们提取该文件的内容:
msiexec /a bootstrapper.msi /qb TARGETDIR=C:\KB908002\tmp\ cd tmp
最后,我们将提取的packages文件夹复制到Windows SDK的bootstrapper文件夹中
xcopy /E "C:\KB908002\tmp\SDK\BootStrapper\Packages" "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages"
现在,如果您转到 Visual Studio 2008 中的先决条件列表,您将看到列出的修复程序。