Создание инсталлятора для надстройки MS Office 2013

Отличительная черта надстроек MS Project, которые мы создаем — легкость установки как в MS Office версии 2010, так и в Office 2013. Программа-инсталлятор надстройки сама определяет, установлены ли в системе компоненты, необходимые надстройке, и вы узнаете об этом еще до того, как запустите Project с нашим дополнением. В этом нам помогает технология Windows Installer и среда разработки MS Visual Studio.

Инструкция по созданию инсталлятора надстройки для любого приложения MS Office не является секретом, и опубликована в статье MSDN: Deploying a Visual Studio 2010 Tools for Office Solution Using Windows Installer. Не все шаги инструкции обязательны, и мы выполняем следующие.

  • Создать setup-проект и присоединить к нему выходные файлы (output) проекта надстройки.
  • Добавить в проект манифесты приложения и развертывания (файлы .dll.manifest и .vsto) из проекта надстройки.
  • Настроить список сборок, от которых зависит приложение, чтобы исключить из них те, которые нет необходимости включать в setup-проект.
  • Настроить перечень компонентов, которые будут установлены программой setup.exe перед установкой надстройки.
  • Описать ключи реестра, которые будут создаваться инсталлятором, дающие команду приложению Office включать надстройку при запуске.
  • Создать условия запуска инсталлятора (launch conditions), проверяющие наличие в системе среды исполнения VSTO 2010 Runtime.
  • Создать условие запуска инсталлятора, которое проверяет, установлено ли приложение Office, в котором будет запускаться надстройка. По сути, это проверка наличия в системе одной из сборок PIA (Primary Interop Assemblies), которые идентифицируются своими ID, список которых приведен в вышеуказанной статье.

Инструкций в MSDN вполне достаточно, чтобы всё это сделать, надо только постараться избежать копирования кода условий запуска в свой setup-проект. Иначе могут возникнуть ошибки, вызванные некорректными символами кавычек, о которых Visual Studio не сообщает при сборке инсталлятора из проекта.

Проблема поиска компонентов Office 2013

Инструкция по созданию инсталляторов для надстроек Office 2013 пока не выложена в MSDN, но и предыдущая по большей части подходит для новой версии Office. Основная проблема — нигде не опубликованы коды компонентов PIA for Office 2013, для их использования в условиях запуска.

Многие разработчики задаются вопросом как найти Component ID, и официальный ответ Microsoft — использовать программу MSI Spy. Однако, несмотря на обилие ссылок, эта утилита давно исчезла с сайтов Microsoft. Мы нашли альтернативное решение проблемы — использование запросов к WMI, к таблице Win32_SoftwareElement. К примеру, можно запустить следующий код на C#:

    using System;
    using System.Text;
    using System.Management;

    class Program
    {
      static void Main(string[] args)
      {
        ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Name, SoftwareElementId, Version FROM Win32_SoftwareElement WHERE Name LIKE \"%PIA%\"");
        foreach (ManagementObject share in searcher.Get()) {
          foreach (PropertyData pd in share.Properties) {
            Console.WriteLine(pd.Name + " = " + pd.Value);
          }
          Console.WriteLine("");
        }
      }
    }

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

Name = Office_PIA
SoftwareElementID = {64E2917E-AA13-4CA4-BFFE-EA6EDA3AFCB4}
Version = 14.0.4763.1000

Это Office 2010 Shared PIA, Component ID — {64E2917E-AA13-4CA4-BFFE-EA6EDA3AFCB4}.

Name = Global_Project_ClientPIA
SoftwareElementID = {957A4EC0-E67B-4E86-A383-6AF7270B216A}
Version = 14.0.4763.1000

Project 2010 PIA, Component ID — {957A4EC0-E67B-4E86-A383-6AF7270B216A}.

Аналогичным образом получаем Component ID для компонентов Office 2013.

  • Office 2013 Shared PIA: {6A174BDB-0049-4D1C-86EF-3114CB0C4C4E}
  • Project 2013 PIA: {1C50E422-24FA-44A9-A120-E88280C8C341}

Создание инсталлятора для надстройки MS Office 2013: Один комментарий

  1. Неплохой обзор. Вообще, при создании инсталляторов есть ряд тонкостей. Все очень сильно зависит от того, что должен уметь инсталлятор.
    Если вам интересно, то еще несколько бесплатных аналогов можно найти в обзоре по адресу http://ida-freewares.ru/programming/7-best-free-program-setup-builder.html

Добавить комментарий для Tutanhamon Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>