Поделиться через


Пошаговое руководство. Развертывание нескольких решений Office с помощью одного установщика ClickOnce

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

Применение. Сведения этого раздела применяются к проектам уровня документа и уровня приложения для Microsoft Office 2013 Preview и Microsoft Office 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.

В данном пошаговом руководстве рассмотрены следующие задачи:

  • Создание нескольких решений Office.

  • Изменение манифеста приложения.

  • Повторное подписывание манифестов.

Примечание

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Обязательные компоненты

Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.

-

Выпуск Visual Studio 2012, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в разделе [Настройка компьютера для разработки решений Office](https://msdn.microsoft.com/ru-ru/library/bb398242\(v=vs.110\)).
  • Предварительная версия Word 2013

  • Предварительная версия Outlook 2013

  • Предварительная версия Excel 2013

  • Word 2010

  • Outlook 2010

  • Excel 2010

  • Тестовый компьютер.

Создание нескольких решений Office

Начните с создания трех проектов Office, один из которых работает в качестве установщика. Два других проекта будут развернуты на компьютере пользователя.

Создание и разработка новых проектов Word, Outlook и Excel

  1. Создайте проект уровня документа слова. Назовите проект ContosoInstaller и сохраните в каталоге %USERPROFILE%\Documents\Visual Studio 2012\Projects.

    Проект ContosoInstaller будет использоваться как установщик. Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Office в Visual Studio.

  2. В решении ContosoInstaller создайте проект Outlook уровня приложения с именем ContosoOutlookAddIn и добавьте в него свой код.

  3. В решении ContosoInstaller создайте проект Excel уровня документа с именем ContosoExcelWorkbook и добавьте в него свой код.

Публикация решений Office

Используйте мастер публикации или страницу проекта в конструкторе проектов для публикации решений Office на компьютере, где ведется разработка.

Публикация проектов Word, Outlook и Excel

  1. Опубликуйте проект ContosoInstaller в папке c:\publish. Дополнительные сведения см. в разделе Практическое руководство. Публикация решения Office с помощью ClickOnce.

  2. Опубликуйте проект ContosoOutlookAddIn в папке c:\publish.

  3. Опубликуйте проект ContosoExcelWorkbook в папке c:\publish.

Изменение манифеста приложения

Используйте редактор XML в Visual Studio для добавления зависимостей установки, файлов, точек входа и сборок в манифест приложения. Содержимое манифеста приложения совпадает со спецификацией, где перечислено все содержимое поля; манифест приложения перечисляет все зависимые и предварительные сборки, а также файлы, необходимые приложению. Манифест приложения для решений Office также перечисляет сборки, которые должны быть загружены приложением Office для надстройки уровня приложения и настроек уровня документа.

Dd465290.collapse_all(ru-ru,VS.110).gifДобавление зависимостей установки

Измените манифест приложения, чтобы устанавливались сборки ContosoOutlookAddin и ContosoExcelWorkbook, а также удалите ссылки на сборку ContosoInstaller.

Добавление зависимостей установки в манифест приложения

  1. Из папки c:\publish\Application Files перенесите содержимое каталогов ContosoOutlookAddIn_1_0_0_0 и ContosoExcelWorkbook_1_0_0_0 в каталог ContosoInstaller_1_0_0_0.

  2. Откройте файлы ContosoInstaller.dll.manifest, ContosoOutlookAddIn.dll.manifest и ContosoExcelWorkbook.dll.manifest в редакторе XML.

  3. Из файла ContosoOutlookAddIn.dll.manifest скопируйте все зависимости файла и установки, в том числе файл ContosoOutlookAddIn.dll. Теперь скопируйте все зависимости, начинающиеся с элемента <dependentAssembly dependencyType="install" или <file name="app.config">. Код должен выглядеть следующим образом: только элемент <dsig:DigestValue> изменяется.

      <dependency>
        <dependentAssembly 
           dependencyType="install"
           allowDelayedBinding="true" 
           codebase="Microsoft.Office.Tools.Common.v4.0.Utilities.dll" 
           size="30816">
          <assemblyIdentity 
            name="Microsoft.Office.Tools.Common.v4.0.Utilities" 
            version="10.0.0.0"
            publicKeyToken="B03F5F7F11D50A3A"
            language="neutral"
            processorArchitecture="msil" />
          <hash>
            <dsig:Transforms>
              <dsig:Transform
                Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
            </dsig:Transforms>
            <dsig:DigestMethod 
              Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <dsig:DigestValue>Ki0…</dsig:DigestValue>
          </hash>
        </dependentAssembly>
      </dependency>
      <dependency>
        <dependentAssembly
          dependencyType="install"
          allowDelayedBinding="true" 
          codebase="Microsoft.Office.Tools.Outlook.v4.0.Utilities.dll"   
          size="47200">
          <assemblyIdentity 
            name="Microsoft.Office.Tools.Outlook.v4.0.Utilities" 
            version="10.0.0.0"
            publicKeyToken="B03F5F7F11D50A3A"
            language="neutral" 
            processorArchitecture="msil" />
          <hash>
            <dsig:Transforms>
              <dsig:Transform
                Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
            </dsig:Transforms>
            <dsig:DigestMethod 
              Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <dsig:DigestValue>050...</dsig:DigestValue>
          </hash>
        </dependentAssembly>
      </dependency>
      <dependency>
        <dependentAssembly
          dependencyType="install" 
          allowDelayedBinding="true"
          codebase="ContosoOutlookAddIn.dll"
          size="10240">
          <assemblyIdentity
            name="ContosoOutlookAddIn" 
            version="1.0.0.0" 
            language="neutral" 
            processorArchitecture="msil" />
          <hash>
            <dsig:Transforms>
              <dsig:Transform Algorithm=
                "urn:schemas-microsoft-com:HashTransforms.Identity" />
            </dsig:Transforms>
            <dsig:DigestMethod Algorithm=
              "http://www.w3.org/2000/09/xmldsig#sha1" />
            <dsig:DigestValue>i4e</dsig:DigestValue>
          </hash>
        </dependentAssembly>
      </dependency>
      <file name="ContosoOutlookAddIn.dll.config" size="77">
        <hash>
          <dsig:Transforms>
            <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
          </dsig:Transforms>
          <dsig:DigestMethod 
             Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
          <dsig:DigestValue>w7W...</dsig:DigestValue>
        </hash>
      </file>
    
  4. В файле ContosoInstaller.dll.manifest вставьте зависимость ContosoOutlookAddIn.dll в конце раздела зависимостей.

  5. Из файла ContosoExcelWorkbook.dll.manifest скопируйте все зависимости файла и установки, включая файлы ContosoExcelWorkbook.dll и Microsoft.Office.Tools.Common.v4.0.Utilities.dll. Теперь скопируйте все зависимости, начинающиеся с элемента <dependentAssembly dependencyType="install" или <file name="app.config">. Код должен выглядеть следующим образом: только элемент <dsig:DigestValue> изменяется.

      <dependency>
        <dependentAssembly
          dependencyType="install"
          allowDelayedBinding="true"
          codebase="ContosoExcelWorkbook.dll"
          size="12800">
          <assemblyIdentity
            name="ContosoExcelWorkbook" 
            version="1.0.0.0"
            language="neutral"
            processorArchitecture="msil" />
          <hash>
            <dsig:Transforms>
              <dsig:Transform Algorithm=
                "urn:schemas-microsoft-com:HashTransforms.Identity" />
            </dsig:Transforms>
            <dsig:DigestMethod Algorithm=
              "http://www.w3.org/2000/09/xmldsig#sha1" />
            <dsig:DigestValue>i4e</dsig:DigestValue>
          </hash>
        </dependentAssembly>
      </dependency>
      <dependency>
        <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Microsoft.Office.Tools.Common.v4.0.Utilities.dll" size="30816">
          <assemblyIdentity name="Microsoft.Office.Tools.Common.v4.0.Utilities" version="10.0.0.0" publicKeyToken="B03F5F7F11D50A3A" language="neutral" processorArchitecture="msil" />
          <hash>
            <dsig:Transforms>
              <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
            </dsig:Transforms>
            <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <dsig:DigestValue>Ki0A9wOpes1YX5NaAvjmUeFSh0g=</dsig:DigestValue>
          </hash>
        </dependentAssembly>
      </dependency>
      <dependency>
        <dependentAssembly
          dependencyType="install"
          allowDelayedBinding="true" 
          codebase="Microsoft.Office.Tools.Excel.v4.0.Utilities.dll" 
          size="235104">
          <assemblyIdentity 
            name="Microsoft.Office.Tools.Excel.v4.0.Utilities" 
            version="10.0.0.0"
            publicKeyToken="B03F5F7F11D50A3A"
            language="neutral"
            processorArchitecture="msil" />
          <hash>
            <dsig:Transforms>
              <dsig:Transform
               Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
            </dsig:Transforms>
            <dsig:DigestMethod 
              Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <dsig:DigestValue>Te/...</dsig:DigestValue>
          </hash>
        </dependentAssembly>
      </dependency>
      <file name=" ContosoExcelWorkbook.dll.config" size="77">
        <hash>
          <dsig:Transforms>
            <dsig:Transform
             Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
          </dsig:Transforms>
          <dsig:DigestMethod 
            Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
          <dsig:DigestValue>w7W...</dsig:DigestValue>
        </hash>
      </file>
    
  6. В файле ContosoInstaller.dll.manifest вставьте зависимости установки в конец раздела зависимостей.

  7. В файле ContosoInstaller.dll.manifest удалите зависимости установки ContosoInstaller.dll и Microsoft.Office.Tools.Word.v4.0.Utilities.dll. Также удалите все повторяющиеся зависимости. Например, могло быть скопировано несколько зависимостей установки для Microsoft.Office.Tools.Common.v4.0.Utilities.dll.

    Примечание

    При развертывании решения уровня документа Word оставьте файл Microsoft.Office.Tools.Word.v4.0.Utilities.dll в конечном манифесте.

Dd465290.collapse_all(ru-ru,VS.110).gifДобавление точек входа

Измените манифест приложения, чтобы сборки ContosoOutlookAddin и ContosoExcelWorkbook загружались в пространстве имен <vstav3>.

Добавление точек входа в пространстве имен vstav3 в манифест приложения

  1. В файле ContosoInstaller.dll.manifest удалите текст между элементами <vstav3:entryPointsCollection> и </vstav3:entryPointsCollection>.

  2. В файле ContosoOutlookAddIn.dll.manifest скопируйте текст между элементами <vstav3:entryPointsCollection> и </vstav3:entryPointsCollection>. Код должен выглядеть следующим образом.

          <vstav3:entryPoints>
            <vstav3:entryPoint
              class="ContosoOutlookAddIn.ThisAddIn">
              <assemblyIdentity
                name="ContosoOutlookAddIn"
                version="1.0.0.0"
                language="neutral"
                processorArchitecture="msil" />
            </vstav3:entryPoint>
          </vstav3:entryPoints>
    

    Примечание

    Если надстройка уровня приложения в Outlook использует область формы, точку входа Outlook необходимо перечислить в разделе <vstav3:entryPoints> последней.

  3. В файле ContosoInstaller.dll.manifest вставьте код после элемента <vstav3:entryPointsCollection>.

  4. Добавьте атрибут id к элементу <vstav3:entryPoints>, чтобы отличить данную точку входа от других.

          <vstav3:entryPoints id="ContosoOutlook">
    
  5. В файле ContosoExcelWorkbook.dll.manifest скопируйте текст между элементами <vstav3:entryPointsCollection> и </vstav3:entryPointsCollection>. Код должен выглядеть следующим образом.

          <vstav3:entryPoints>
            <vstav3:entryPoint 
              class="ContosoExcelWorkbook.ThisWorkbook">
              <assemblyIdentity
                name="ContosoExcelWorkbook"
                version="1.0.0.0"
                language="neutral"
                processorArchitecture="msil" />
            </vstav3:entryPoint>
            <vstav3:entryPoint
               class="ContosoExcelWorkbook.Sheet1">
              <assemblyIdentity
                name="ContosoExcelWorkbook"
                version="1.0.0.0"
                language="neutral"
                processorArchitecture="msil" />
            </vstav3:entryPoint>
            <vstav3:entryPoint
              class="ContosoExcelWorkbook.Sheet2">
              <assemblyIdentity
                name="ContosoExcelWorkbook"
                version="1.0.0.0"
                language="neutral"
                processorArchitecture="msil" />
            </vstav3:entryPoint>
            <vstav3:entryPoint
              class="ContosoExcelWorkbook.Sheet3">
              <assemblyIdentity
                name="ContosoExcelWorkbook"
                version="1.0.0.0"
                language="neutral"
                processorArchitecture="msil" />
            </vstav3:entryPoint>
          </vstav3:entryPoints>
    
  6. В файле ContosoInstaller.dll.manifest вставьте код после элемента <vstav3:entryPointsCollection>.

  7. Добавьте атрибут id в элемент <vstav3:entryPoints>, чтобы эта точка входа отличалась от других.

          <vstav3:entryPoints id="ContosoExcel">
    

Dd465290.collapse_all(ru-ru,VS.110).gifДобавление сборки

Измените манифест приложения, чтобы сборки ContosoOutlookAddin и ContosoExcelWorkbook загружались в пространстве имен <vstov4>.

Добавление сборок в пространстве имен vstov4 в манифест приложения

  1. В файле ContosoInstaller.dll.manifest удалите весь текст между элементами <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> и </vstov4:customizations>.

  2. В файле ContosoOutlookAddIn.dll.manifest скопируйте текст между элементами <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> и </vstov4:customizations>. Код должен выглядеть так, как показано ниже.

            <vstov4:customization>
              <vstov4:appAddIn
                application="Outlook"
                loadBehavior="3"
                keyName="ContosoOutlookAddIn">
                <vstov4:friendlyName>
                  ContosoOutlookAddIn
                </vstov4:friendlyName>
                <vstov4:description>
                  ContosoOutlookAddIn - Outlook add-in created with
                  Visual Studio Tools for Office
                </vstov4:description>
              </vstov4:appAddIn>
            </vstov4:customization>
    
  3. В файле ContosoInstaller.dll.manifest вставьте код после элемента <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4">.

  4. Добавьте атрибут id в элемент <vstav3:customization>, чтобы эта настройка отличалась от других. Это тот же идентификатор, который был добавлен в элемент <vstav3:entryPoints> ранее.

            <vstov4:customization id="ContosoOutlook">
    
  5. В файле ContosoExcelWorkbook.dll.manifest скопируйте текст между элементами <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> и </vstov4:customizations>. Необходимо искать код, похожий на следующий. Отличаться может только элемент <solutionId>.

            <vstov4:customization>
              <vstov4:document
                solutionId="73e" />
            </vstov4:customization>
    
  6. В файле ContosoInstaller.dll.manifest вставьте код после элемента <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4">.

  7. Добавьте атрибут id в элемент <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4">, чтобы эта настройка отличалась от других. Это тот же идентификатор, который был добавлен в элемент <vstav3:entryPoints> ранее.

            <vstov4:customization id="ContosoExcel">
    

Изменение проекта уровня документа

Для всех проектов уровня документа в многопроектном развертывании необходимо прикрепить ИД пользовательскому свойству документа _AssemblyLocation. В этом разделе показано обновление свойства _AssemblyLocation в файле ContosoExcelWorkbook.xlsx, этот шаг необходимо повторить для всех проектов уровня документа.

Изменение свойства _AssemblyLocation в Excel или Word 2010

  1. В Excel, выберите вкладку Файл.

  2. Нажмите кнопку Сведения.

  3. Нажмите стрелку раскрывающегося списка Свойства, а затем выберите Дополнительные свойства.

  4. Выберите вкладку Настраиваемый.

  5. На панели Свойства выберите _AssemblyLocation.

  6. В текстовом поле Значение, правка текста, чтобы удалить |vstolocal (если существует) и добавления текста |id=ContosoInstaller.

  7. Нажмите кнопку ОК.

Повторное подписывание манифестов

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

Повторное подписывание манифестов приложений и развертывания

  1. Скопируйте файл сертификата ContosoInstaller_TemporaryKey.pfx из каталога решения %USERPROFILE% \ Документы \ Visual Studio 2012 \ projects \ ContosoInstaller \ ContosoInstaller в каталог c:\publish\Application files \ ContosoInstaller_1_0_0_0.

  2. Откройте командную строку Visual Studio.

  3. Перейдите в каталог c:\publish\Application Files\ContosoInstaller_1_0_0_0.

  4. Подпишите обновленный манифест приложения с помощью следующей команды.

    mage -sign ContosoInstaller.dll.manifest -certfile ContosoInstaller_TemporaryKey.pfx
    

    Появится сообщение "ContosoInstaller.dll.manifest успешно подписан".

  5. Перейдите в каталог c:\publish.

  6. Обновите и подпишите манифест приложения с помощью следующей команды.

    mage -update ContosoInstaller.vsto -appmanifest "Application Files\ContosoInstaller_1_0_0_0\ContosoInstaller.dll.manifest" -certfile "Application Files\ContosoInstaller_1_0_0_0\ContosoInstaller_TemporaryKey.pfx"
    

    Появится сообщение "ContosoInstaller.vsto успешно подписан".

  7. Скопируйте файл ContosoInstaller.vsto в каталог c:\publish\Application Files\ContosoInstaller_1_0_0_0.

Тестирование развертывания нескольких проектов

Следующая процедура позволит гарантировать, что манифест установит надстройку Outlook и книгу Excel.

Тестирование развертывания нескольких проектов

  1. Скопируйте каталог c:\publish на тестовый компьютер.

  2. Запустите программу установки многопроектного развертывания.

    Появится Установщик настройки Microsoft Office.

  3. Выберите Установить.

    Диалоговое окно Установщик настройки Microsoft Office отобразит следующее сообщение: "Настройка Microsoft Office успешно установлена".

  4. Откройте Outlook, чтобы проверить работу надстройки.

  5. Откройте файл книги Excel, чтобы проверить работу настройки уровня документа.

  6. Убедитесь, что в списке установленных приложений многопроектное развертывание представлено одной строкой.

    В разделе Установка и удаление программ в системе Windows XP или Программы и компоненты в Windows Vista отображается ContosoInstaller.

Очистка каталога публикации

Удалить ненужные файлы из каталога публикации можно с помощью следующей процедуры.

Очистка каталога публикации

  1. Удалите из каталога c:\publish\Application Files\ContosoInstaller_1_0_0_0 следующие файлы.

    • ContosoExcelWorkbook.dll.manifest.

    • ContosoExcelWorkbook.vsto.

    • ContosoInstaller.dll.deploy.

    • ContosoInstaller.docx.

    • ContosoInstaller_TemporaryKey.pfx.

    • ContosoOutlookAddIn.dll.manifest.

    • ContosoOutlookAddIn.vsto.

  2. Удалите из каталога c:\publish следующие файлы.

    • ContosoExcelWorkbook.vsto.

    • ContosoInstaller.docx.

    • ContosoOutlookAddIn.vsto.

См. также

Задачи

Практическое руководство. Повторное подписание манифестов приложения и развертывания

Основные понятия

Защита приложений ClickOnce

Другие ресурсы

Развертывание решений Office