Пошаговое руководство. Копирование документа на компьютер пользователя после установки ClickOnce
Используя действие ClickOnce, выполняемое после развертывания, можно установить решение Office уровня документа, а затем скопировать документ на компьютер пользователя. Для этого манифест приложения и манифест развертывания необходимо изменить и повторно подписать перед установкой.
Применение. Сведения этого раздела применяются к проектам уровня документа и уровня приложения для Microsoft Office 2013 Preview и Microsoft Office 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.
В данном пошаговом руководстве рассмотрены следующие задачи:
Создание развертываемого решения 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\)).
Предварительная версия Excel 2013 или Excel 2010.
Тестовый компьютер.
Создание нового проекта
Сначала создайте проект книги Excel.
Создание нового проекта Excel
Создайте проект уровня приложения. Назовите проект ExcelWorkbook и сохраните в каталоге %USERPROFILE%\Documents\Visual Studio 2012\Projects. Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Office в Visual Studio.
Созданная книга Excel открывается в конструкторе Visual Studio, и проект ExcelWorkbook добавляется в обозреватель решений.
Создание проекта библиотеки классов, в котором определяется выполняемое после развертывания действие
Выполняемое после развертывания действие следует определить в отдельной библиотеке классов. Это действие копирует документ на компьютер пользователя.
Создание библиотеки классов для выполняемого после развертывания действия
В меню Файл последовательно выберите пункты Добавить и Создать проект.
В диалоговом окне Добавление нового проекта в области Установленные шаблоны выберите Windows.
В области Шаблоны выберите пункт Библиотека классов.
В поле Имя введите FileCopyPDA и нажмите кнопку ОК.
В Обозреватель решений, нажмите кнопку FileCopyPDA.
В меню Проект, нажмите кнопку ДобавитьСсылка.
Откроется диалоговое окно Добавление ссылки.
На вкладке .NET добавьте ссылки на Microsoft.VisualStudio.Tools.Applications.Runtime и Microsoft.VisualStudio.Tools.Applications.ServerDocument.
В начале файла кода Class1 добавьте следующие операторы using или Imports.
Imports Microsoft.VisualStudio.Tools.Applications.Deployment Imports Microsoft.VisualStudio.Tools.Applications
using Microsoft.VisualStudio.Tools.Applications.Deployment; using Microsoft.VisualStudio.Tools.Applications; using System.IO;
Переименуйте класс в FileCopyPDA, а затем добавьте в класс FileCopyPDA следующий код. Этот код указывает, что класс FileCopyPDA является наследником интерфейса IAddInPostDeploymentAction.
Public Class FileCopyPDA Implements IAddInPostDeploymentAction
public class FileCopyPDA : IAddInPostDeploymentAction
Добавьте следующий код для реализации метода IAddInPostDeploymentAction.Execute. Этот код выполняет следующие задачи:
Копирует файл книги Excel на рабочий стол пользователя, если решение установлено или обновлено.
Меняет значение свойства _AssemblyLocation с относительного на абсолютный путь к манифесту развертывания. Это делается с помощью методов AddCustomization и RemoveCustomization.
Удаляет файл, если решение удаляется.
Sub Execute(ByVal args As AddInPostDeploymentActionArgs) Implements IAddInPostDeploymentAction.Execute Dim dataDirectory As String = "Data\ExcelWorkbook.xlsx" Dim file As String = "ExcelWorkbook.xlsx" Dim sourcePath As String = args.AddInPath Dim deploymentManifestUri As Uri = args.ManifestLocation Dim destPath As String = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) Dim sourceFile As String = System.IO.Path.Combine(sourcePath, dataDirectory) Dim destFile As String = System.IO.Path.Combine(destPath, file) Select Case args.InstallationStatus Case AddInInstallationStatus.InitialInstall, AddInInstallationStatus.Update System.IO.File.Copy(sourceFile, destFile) ServerDocument.RemoveCustomization(destFile) ServerDocument.AddCustomization(destFile, deploymentManifestUri) Exit Select Case AddInInstallationStatus.Uninstall If System.IO.File.Exists(destFile) Then System.IO.File.Delete(destFile) End If Exit Select End Select End Sub
public void Execute(AddInPostDeploymentActionArgs args) { string dataDirectory = @"Data\ExcelWorkbook.xlsx"; string file = @"ExcelWorkbook.xlsx"; string sourcePath = args.AddInPath; Uri deploymentManifestUri = args.ManifestLocation; string destPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); string sourceFile = System.IO.Path.Combine(sourcePath, dataDirectory); string destFile = System.IO.Path.Combine(destPath, file); switch (args.InstallationStatus) { case AddInInstallationStatus.InitialInstall: case AddInInstallationStatus.Update: File.Copy(sourceFile, destFile); ServerDocument.RemoveCustomization(destFile); ServerDocument.AddCustomization(destFile, deploymentManifestUri); break; case AddInInstallationStatus.Uninstall: if (File.Exists(destFile)) { File.Delete(destFile); } break; } }
Построение и публикация решения
Используйте мастер публикации или страницу проекта для построения и публикации решений Office на компьютере, где ведется разработка.
Публикация проекта Excel
В обозревателе решений щелкните проект FileCopyPDA правой кнопкой мыши и выберите команду Построить.
В обозревателе решений щелкните проект ExcelWorkbook правой кнопкой мыши и выберите команду Построить.
В обозревателе решений щелкните проект ExcelWorkbook правой кнопкой мыши и выберите команду Добавить ссылку.
Перейдите на вкладку Проекты в диалоговом окне Добавить ссылку.
Выберите FileCopyPDA и нажмите кнопку ОК.
В обозревателе решений выберите проект ExcelWorkbook.
В меню "Проект" выберите команду Создать папку.
Type Data и нажмите клавишу ВВОД.
В обозревателе решений выберите папку Data.
В меню "Проект" выберите команду Добавить существующий элемент.
В диалоговом окне Добавление существующего элемента откройте папку выходных файлов проекта ExcelWorkbook.
Выберите ExcelWorkbook.xlsx и нажмите кнопку Добавить.
В обозревателе решений щелкните файл ExcelWorkbook.xlsx.
Примечание
Если этот файл будет изменен в дальнейшем, необходимо обязательно обновить его, добавив последнюю версию этого файла.
В окне Свойства измените значение свойства Действие при построении на Содержание, а значение свойства Копировать в выходной каталог на Копировать, если новее.
Опубликуйте проект ExcelWorkbook в папке c:\publish. Дополнительные сведения см. в разделе Практическое руководство. Публикация решения Office с помощью ClickOnce.
Изменение манифеста приложения
Используйте редактор XML в Visual Studio, чтобы изменить манифест приложения так, чтобы после развертывания запускалось копирование файла. Содержимое манифеста приложения совпадает со спецификацией, где перечислено все содержимое поля; манифест приложения перечисляет все зависимые и предварительные сборки. Манифест приложения для решений Office также перечисляет сборки, которые должны быть загружены приложением Office для надстройки уровня приложения и настроек уровня документа.
Добавление зависимостей установки в манифест приложения
Откройте каталог c:\publish с помощью обозревателя файлов.
Откройте папку Application Files, а затем — папку ExcelWorkbook_1_0_0_0.
Откройте файл ExcelWorkbook.dll.manifest в текстовом редакторе.
Добавьте следующий код после элемента </vstav3:update>. В атрибуте класса элемента <vstav3:entryPoint> используйте следующий синтаксис: ИмяПространстваИмен.ИмяКласса. В данном примере имя класса совпадает с именем пространства, поэтому имя точки входа будет иметь вид FileCopyPDA.FileCopyPDA.
<vstav3:postActions> <vstav3:postAction> <vstav3:entryPoint class="FileCopyPDA.FileCopyPDA"> <assemblyIdentity name="FileCopyPDA" version="1.0.0.0" language="neutral" processorArchitecture="msil" /> </vstav3:entryPoint> <vstav3:postActionData> </vstav3:postActionData> </vstav3:postAction> </vstav3:postActions>
Повторное подписывание манифестов
В следующей процедуре подписывается манифест приложения и обновляется манифест развертывания. Это позволяет предотвратить установку поддельных файлов на компьютерах пользователей.
Повторное подписывание манифестов приложений и развертывания
Скопируйте файл сертификата ExcelWorkbook_TemporaryKey.pfx из каталога решения %USERPROFILE%\Documents\Visual Studio 2012\Projects\ExcelWorkbook\ExcelWorkbook в каталог c:\publish\Application Files\ExcelWorkbook_1_0_0_0.
Откройте командную строку Visual Studio.
Перейдите в каталог c:\publish\Application Files\ExcelWorkbook_1_0_0_0.
Подпишите обновленный манифест приложения с помощью следующей команды.
mage -sign ExcelWorkbook.dll.manifest -certfile ExcelWorkbook_TemporaryKey.pfx
Появится сообщение "ExcelWorkbook.dll.manifest успешно подписан".
Перейдите в каталог c:\publish.
Обновите и подпишите манифест приложения с помощью следующей команды.
mage -update ExcelWorkbook.vsto -appmanifest "Application Files\Ex celWorkbook_1_0_0_0\ExcelWorkbook.dll.manifest" -certfile "Application Files\ExcelWorkbook_1_0_0_0\ExcelWorkbook_TemporaryKey.pfx"
Появится сообщение "ExcelWorkbook.vsto успешно подписан".
Скопируйте файл ExcelWorkbook.vsto в каталог c:\publish\Application Files\ExcelWorkbook_1_0_0_0.
Проверка действия, выполняемого после развертывания
Следующая процедура позволит гарантировать, что обновленный манифест установит книгу Excel и скопирует ее на рабочий стол пользователя.
Проверка действия, выполняемого после развертывания
Скопируйте каталог c:\publish на тестовый компьютер.
Запустите программу Setup.exe, либо, если на тестовом компьютере уже установлены все требуемые компоненты, дважды щелкните манифест развертывания ExcelWorkbook.vsto.
Появится Установщик настройки Microsoft Office.
Нажмите кнопку Установить.
Диалоговое окно Установщик настройки Microsoft Office отобразит следующее сообщение: "Настройка Microsoft Office успешно установлена". Книга Excel копируется на рабочий стол пользователя.
Откройте файл ExcelWorkbook.xlsx на рабочем столе.
См. также
Задачи
Практическое руководство. Повторное подписание манифестов приложения и развертывания