Пошаговое руководство. Развертывание нескольких решений 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
Создайте проект уровня документа слова. Назовите проект ContosoInstaller и сохраните в каталоге %USERPROFILE%\Documents\Visual Studio 2012\Projects.
Проект ContosoInstaller будет использоваться как установщик. Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Office в Visual Studio.
В решении ContosoInstaller создайте проект Outlook уровня приложения с именем ContosoOutlookAddIn и добавьте в него свой код.
В решении ContosoInstaller создайте проект Excel уровня документа с именем ContosoExcelWorkbook и добавьте в него свой код.
Публикация решений Office
Используйте мастер публикации или страницу проекта в конструкторе проектов для публикации решений Office на компьютере, где ведется разработка.
Публикация проектов Word, Outlook и Excel
Опубликуйте проект ContosoInstaller в папке c:\publish. Дополнительные сведения см. в разделе Практическое руководство. Публикация решения Office с помощью ClickOnce.
Опубликуйте проект ContosoOutlookAddIn в папке c:\publish.
Опубликуйте проект ContosoExcelWorkbook в папке c:\publish.
Изменение манифеста приложения
Используйте редактор XML в Visual Studio для добавления зависимостей установки, файлов, точек входа и сборок в манифест приложения. Содержимое манифеста приложения совпадает со спецификацией, где перечислено все содержимое поля; манифест приложения перечисляет все зависимые и предварительные сборки, а также файлы, необходимые приложению. Манифест приложения для решений Office также перечисляет сборки, которые должны быть загружены приложением Office для надстройки уровня приложения и настроек уровня документа.
Добавление зависимостей установки
Измените манифест приложения, чтобы устанавливались сборки ContosoOutlookAddin и ContosoExcelWorkbook, а также удалите ссылки на сборку ContosoInstaller.
Добавление зависимостей установки в манифест приложения
Из папки c:\publish\Application Files перенесите содержимое каталогов ContosoOutlookAddIn_1_0_0_0 и ContosoExcelWorkbook_1_0_0_0 в каталог ContosoInstaller_1_0_0_0.
Откройте файлы ContosoInstaller.dll.manifest, ContosoOutlookAddIn.dll.manifest и ContosoExcelWorkbook.dll.manifest в редакторе XML.
Из файла 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>
В файле ContosoInstaller.dll.manifest вставьте зависимость ContosoOutlookAddIn.dll в конце раздела зависимостей.
Из файла 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>
В файле ContosoInstaller.dll.manifest вставьте зависимости установки в конец раздела зависимостей.
В файле 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 в конечном манифесте.
Добавление точек входа
Измените манифест приложения, чтобы сборки ContosoOutlookAddin и ContosoExcelWorkbook загружались в пространстве имен <vstav3>.
Добавление точек входа в пространстве имен vstav3 в манифест приложения
В файле ContosoInstaller.dll.manifest удалите текст между элементами <vstav3:entryPointsCollection> и </vstav3:entryPointsCollection>.
В файле 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> последней.
В файле ContosoInstaller.dll.manifest вставьте код после элемента <vstav3:entryPointsCollection>.
Добавьте атрибут id к элементу <vstav3:entryPoints>, чтобы отличить данную точку входа от других.
<vstav3:entryPoints id="ContosoOutlook">
В файле 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>
В файле ContosoInstaller.dll.manifest вставьте код после элемента <vstav3:entryPointsCollection>.
Добавьте атрибут id в элемент <vstav3:entryPoints>, чтобы эта точка входа отличалась от других.
<vstav3:entryPoints id="ContosoExcel">
Добавление сборки
Измените манифест приложения, чтобы сборки ContosoOutlookAddin и ContosoExcelWorkbook загружались в пространстве имен <vstov4>.
Добавление сборок в пространстве имен vstov4 в манифест приложения
В файле ContosoInstaller.dll.manifest удалите весь текст между элементами <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> и </vstov4:customizations>.
В файле 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>
В файле ContosoInstaller.dll.manifest вставьте код после элемента <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4">.
Добавьте атрибут id в элемент <vstav3:customization>, чтобы эта настройка отличалась от других. Это тот же идентификатор, который был добавлен в элемент <vstav3:entryPoints> ранее.
<vstov4:customization id="ContosoOutlook">
В файле ContosoExcelWorkbook.dll.manifest скопируйте текст между элементами <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> и </vstov4:customizations>. Необходимо искать код, похожий на следующий. Отличаться может только элемент <solutionId>.
<vstov4:customization> <vstov4:document solutionId="73e" /> </vstov4:customization>
В файле ContosoInstaller.dll.manifest вставьте код после элемента <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4">.
Добавьте атрибут 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
В Excel, выберите вкладку Файл.
Нажмите кнопку Сведения.
Нажмите стрелку раскрывающегося списка Свойства, а затем выберите Дополнительные свойства.
Выберите вкладку Настраиваемый.
На панели Свойства выберите _AssemblyLocation.
В текстовом поле Значение, правка текста, чтобы удалить |vstolocal (если существует) и добавления текста |id=ContosoInstaller.
Нажмите кнопку ОК.
Повторное подписывание манифестов
Подпишите манифесты приложений и развертывания с помощью сертификата. Это позволит гарантировать, что файлы не были изменены злоумышленником.
Повторное подписывание манифестов приложений и развертывания
Скопируйте файл сертификата ContosoInstaller_TemporaryKey.pfx из каталога решения %USERPROFILE% \ Документы \ Visual Studio 2012 \ projects \ ContosoInstaller \ ContosoInstaller в каталог c:\publish\Application files \ ContosoInstaller_1_0_0_0.
Откройте командную строку Visual Studio.
Перейдите в каталог c:\publish\Application Files\ContosoInstaller_1_0_0_0.
Подпишите обновленный манифест приложения с помощью следующей команды.
mage -sign ContosoInstaller.dll.manifest -certfile ContosoInstaller_TemporaryKey.pfx
Появится сообщение "ContosoInstaller.dll.manifest успешно подписан".
Перейдите в каталог c:\publish.
Обновите и подпишите манифест приложения с помощью следующей команды.
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 успешно подписан".
Скопируйте файл ContosoInstaller.vsto в каталог c:\publish\Application Files\ContosoInstaller_1_0_0_0.
Тестирование развертывания нескольких проектов
Следующая процедура позволит гарантировать, что манифест установит надстройку Outlook и книгу Excel.
Тестирование развертывания нескольких проектов
Скопируйте каталог c:\publish на тестовый компьютер.
Запустите программу установки многопроектного развертывания.
Появится Установщик настройки Microsoft Office.
Выберите Установить.
Диалоговое окно Установщик настройки Microsoft Office отобразит следующее сообщение: "Настройка Microsoft Office успешно установлена".
Откройте Outlook, чтобы проверить работу надстройки.
Откройте файл книги Excel, чтобы проверить работу настройки уровня документа.
Убедитесь, что в списке установленных приложений многопроектное развертывание представлено одной строкой.
В разделе Установка и удаление программ в системе Windows XP или Программы и компоненты в Windows Vista отображается ContosoInstaller.
Очистка каталога публикации
Удалить ненужные файлы из каталога публикации можно с помощью следующей процедуры.
Очистка каталога публикации
Удалите из каталога 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.
Удалите из каталога c:\publish следующие файлы.
ContosoExcelWorkbook.vsto.
ContosoInstaller.docx.
ContosoOutlookAddIn.vsto.
См. также
Задачи
Практическое руководство. Повторное подписание манифестов приложения и развертывания