Нужно ли заставлять своих клиентов устанавливать основные сборки взаимодействия Office Xxxx? - PullRequest
5 голосов
/ 31 декабря 2008

Кажется, что если вы попытаетесь сослаться на объекты Office COM (как вы это сделали бы в других средах разработки), Visual Studio ошибется - , и он просто не будет работать .

Таким образом, вы должны использовать преобразованную библиотеку типов, которую Microsoft преобразует вручную и делает доступной для загрузки , загрузки и загрузки .

Теперь, похоже, для запуска приложения требуется код Office Interop, который содержится в сборке.

Теперь я не хочу заставлять своих клиентов устанавливать основные сборки взаимодействия Office 2007, основные сборки взаимодействия Office 2003 или основные сборки взаимодействия Office XP. я хочу развертывание xcopy.

Если мне удастся достать копию Microsoft сборок взаимодействия, могу ли я просто скопировать их в папки Bin / Debug и Bin / Release?

Если я включу сборки взаимодействия Office 2007, будет ли он работать, если на клиенте установлен Office 95, или мне нужно будет включить все версии Microsoft Office Interop dll, которые когда-либо публиковались? *

Ответы [ 3 ]

4 голосов
/ 31 декабря 2008

Это распространенный вопрос с довольно сложным ответом. Мэри Ли из MSFT - отличный источник информации об этом:

http://blogs.msdn.com/vsto/archive/tags/Deployment/default.aspx

Использование ClickOnce для развертывания - самое близкое к установке XCopy любое приложение, построенное на VSTO.

Также проверьте этот пост:

http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/1666d2b0-a4d0-41e8-ad86-5eab3542de1e/

Наконец, у Миши отличный блог:

http://blogs.msdn.com/mshneer/archive/2006/01/05/deployment-articles.aspx

PIA являются специфическими для версии Office, на которую вы нацелены, поэтому PIA 2003 необходимы для нацеливания на 2003, а PIA 2007 необходимы для 2007. Автоматизация Office 95 с помощью управляемого кода - это то, чего я раньше не делал, но я могу представить, что вы напрямую ссылаетесь на библиотеки типов, так что RCW генерируется для вас и не имеет ничего общего с PIA.

НТН

Colby Africa (MSFT)

2 голосов
/ 21 мая 2009

Из собственного опыта:

Если вы хотите настроить таргетинг на Office 2003 и более поздние версии, вы должны использовать PIA Office 2003 - и ограничиться API Office 2003. Код будет работать в Office 2003 или более поздней версии . Вы по-прежнему можете вызывать функции Office 2007, используя рефлексию, но это неприятно.

Я полагаю, что если вы используете базовую версию Office 2000, то это почти та же история, хотя я не пробовал ее и считаю, что самой ранней версией, для которой сами Microsoft предоставляют PIA, является Office 2002 (XP).

Вы можете создавать свои собственные сборки Interop для 2000, и у меня нет оснований полагать, что вы не можете сделать это для '95, хотя вы первый человек, которого я когда-либо видел, просят поддержку '95! Само собой разумеется, что если вы создаете свои собственные сборки Interop, вам нужно будет развернуть их вместе с приложением.

В любом случае вы хотите использовать версию наивысшую Office, которую вы можете использовать в качестве базовой линии, чтобы вы могли поддерживать как можно больше функций, не прибегая к рефлексии. Вы должны разработать свой код на компьютере, на котором установлена ​​ только эта версия Office.

В моем случае я разрабатываю для Office 2003 и знаю, что у моих пользователей также есть 2003. Поэтому я прошу их убедиться, что у них включена функция «Поддержка программируемости .NET» (что можно сделать с помощью программы установки Office 2003 через Установка и удаление программ, если вы выберете опцию Изменить). Эта опция в основном устанавливает PIA в GAC. Для тех пользователей, которые не могут этого сделать, моя программа установки обнаруживает отсутствие PIA и устанавливает их до установки моего приложения (как это делается для .NET Framework).

Развертывание XCOPY? Да, я бы тоже этого хотел - но забудь. Во-первых, если ваша надстройка будет работать в режиме «высокой» безопасности, вам понадобится COM-код с кодовой подписью, который будет находиться между вашим кодом и Office, и это необходимо зарегистрировать. Я полагаю, что VSTO предоставляет свою собственную оболочку, если вы решите пойти по этому пути (я этого не сделал, поскольку мне нужно было иметь возможность «управлять» Office с нуля, а не полагаться на то, что пользователь запустит приложение).

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

Мой сильный совет - сэкономить дни и недели хлопот и взглянуть на Add-in Express . Я только недавно сталкивался с этим сам, и с тех пор бью себя, потому что это могло бы сэкономить мне столько времени. Он имеет несколько преимуществ, которые, я думаю, будут полезны для вас:

  1. Позволяет создать одну надстройку, предназначенную для Office 2000 для Office 2007 (извините, но не для 95), независимо от того, какая версия у вас установлена ​​на ПК для разработки.
  2. Он создает инсталлятор для вас (который даже работает на Vista!), Который сам по себе стоит своей цены.
  3. Он поставляется с собственной шайбой COM и интегрирован настолько, что вам не нужно об этом беспокоиться.
  4. Это позволит вам иметь одну надстройку, которая имеет интерфейс меню / панели инструментов в версиях Office до 2003 года, но интерфейс ленты в 2007 году.

Обратите внимание, что я не связан с Add-in Express (кроме как в качестве недавнего клиента), но в то же время я еще не перевел свои проекты на его использование. Первоначальные тесты, которые я провел, заставили меня поверить, что это довольно хорошо - и определенно способ пойти для малых и средних проектов.

0 голосов
/ 21 мая 2009

Если мне удастся достать копию Microsoft сборок взаимодействия, могу ли я просто скопировать их в папки Bin / Debug и Bin / Release?

Это сработало для меня. Когда я компилировал программу, я использовал ссылку на библиотеки взаимодействия (PIA) в корзине, а затем развернул ее для клиента.

Если я включу сборки взаимодействия Office 2007, будет ли он работать, если у клиента установлен Office 95?

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

...