Можно ли установить надстройку.NET Word 2003 вне GAC?

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

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

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

caspol -af AssemblyName.dll

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

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

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

3 ответа

Решение

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

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

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

Вам определенно не нужно устанавливать свои сборки в 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, вы увидите исправление в списке.

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

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

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

Другие вопросы по тегам