Можно ли установить надстройку .NET Word 2003 вне GAC? - PullRequest
4 голосов
/ 16 февраля 2009

Я создал компонент надстройки Word и проект установки Visual Studio для его установки.

На чистой машине с установленным Office 2003, кажется, не удается загрузить компонент надстройки в Word.

Попытка поиска в Google позволяет предположить, что это связано с тем, что сборке не доверяют. Я полностью доверял сборке, используя инструмент командной строки:

caspol -af AssemblyName.dll

Это не имеет значения, и компонент все еще не загружен в Word. caspol выводит сообщение «Поскольку все сборки GAC всегда получают полное доверие, полный список доверия не более значимым. Вы должны установить любые сборки, которые используются в безопасности политика в GAC, чтобы гарантировать, что им доверяют "

Изменение установщика для помещения сборки в GAC позволяет корректно загружаться в Word. Но в будущем компоненту, возможно, придется использовать общие сборки, совместно используемые другими приложениями .NET, и добавление этих библиотек в GAC было бы нежелательным.

Кто-нибудь знает, как настроить безопасность, позволяющую загружать компонент при установке вне GAC?

Ответы [ 3 ]

3 голосов
/ 17 февраля 2009

Вы можете вручную запустить следующую команду, чтобы установить безопасность, чтобы слово могло запускать сборку извне GAC. Это создает новую группу с полным доверием, что позволяет запускать сборку.

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

У Microsoft есть пример настраиваемого действия для установщика на следующем сайте ссылка на MSDN , что позволит вам включить эту команду в качестве настраиваемого действия установщика.

2 голосов
/ 16 февраля 2009

Вам определенно не нужно устанавливать свои сборки в GAC, и при этом нет необходимости определять политику безопасности для вашей сборки надстройки.

Используете ли вы .NET 2.0 с Office 2003? Office 2003 и Office XP имеют проблемы с загрузкой надстроек .NET 2.0. Они загружаются с использованием .NET 1.1 Framework (если он присутствует на компьютере, что весьма вероятно). Поэтому вам необходимо установить исправление для установки Office с помощью Совместного обновления поддержки надстроек для Microsoft .NET Framework 2.0 (KB908002) .

Вы обязательно должны включить этот патч в предварительные условия вашего установщика.

Подробнее см. В ответе на эти вопросы .

И, конечно же, в вашей целевой системе должна быть установлена ​​правильная версия PIA (почти забыл об этом, неправильная или отсутствующая PIA - одна из главных проблем, почему надстройки не загружаются).

Обновление : для KB908002 требуется 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: \ 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, вы увидите исправление в списке.

1 голос
/ 16 февраля 2009

Я не думаю, что размещение сборки надстройки в GAC является обязательным. Я думаю, что вы просто пропустили шаг в своем развертывании.

Офисные приложения, такие как MS Word, загружают свои надстройки, читая определенные записи реестра. Скорее всего, вы не создаете эти записи во время развертывания.

Чтобы узнать подробности всего этого реестра, см. эту статью. Читайте также о развертывании надстроек Office в целом, см. эту статью

...