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


Формат файлов Office Open XML для PnP (.pnp)

Если у вас есть шаблон, который содержит ссылки на файлы (через элемент <pnp:Files />), вам придется распространить как файл xml , так и файлы, на которые есть ссылки. Хотя это определенно работает, очень легко пропустить файлы при их копировании в другое место.

Примечание.

Платформа подготовки PnP & подсистема подготовки PnP — это решения с открытым кодом, в которых активное сообщество предоставляет поддержку. SLA для поддержки инструмента с открытым исходным кодом со стороны Майкрософт отсутствует.

По этой причине мы ввели специальный формат Office Open XML, который называется pnp-файлом. По сути, это zip-файл с определенной структурой. Если вы переименуете .pnp-файл в расширение .zip, вы можете просто открыть файл и посмотреть в нем.

Содержимое файла PnP

Файлы

Если вы откроете папку «Файлы» в заархивированной папке, вы увидите множество странных имён файлов, основанных на Guid (Глобальный уникальный идентификатор)

Содержимое папки «Файлы»

Сам шаблон находится в этом списке, он имеет расширение .xml. Другие файлы — это файлы, на которые вы ссылаетесь в XML-шаблоне.

Каждый файл был переименован и получил уникальное имя. Причина этого в том, что формат файла Office Open XML не позволяет использовать вложенные папки в этой структуре, но что, если в вашем шаблоне есть 2 разных файла, каждый из которых имеет одно и то же имя? Скажем, у вас есть файл с именем project.docx, который перейдет в библиотеку «Общие документы», и у вас есть другой файл project.docx, который перейдет в «Документы проекта»? По этой причине мы переименовываем файлы, чтобы они имели уникальное имя.

Когда мы применяем шаблон, мы используем таблицу подстановки, чтобы найти фактическое имя файла. Эта таблица подстановки находится в папке ProvisioningTemplate и называется files-map.xml.

Это пример содержимого этого файла:

<PnPFilesMap xmlns="clr-namespace:OfficeDevPnP.Core.Framework.Provisioning.Connectors.OpenXML.Model;assembly=OfficeDevPnP.Core" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <PnPFilesMap.Map>
    <x:String x:Key="19cd09af-97a4-4015-ab9e-22451180702a.xml">theperspective.xml</x:String>
    <x:String x:Key="cce8b9eb-73d2-4f72-8f42-2c6eb08e1566.png">assets/__sitelogo___sitelogo_theperspective.png</x:String>
    <x:String x:Key="e4d4df2d-dab9-48e6-ab9e-8791d8bd8a86.pdf">assets/documents/Contoso Falcon.pdf</x:String>
    <x:String x:Key="c364ce2a-05f0-4cfa-b916-9476004757ba.pdf">assets/documents/Contoso Flex.pdf</x:String>
    <x:String x:Key="d06ca829-8e74-42e6-92b7-426899e82243.pdf">assets/documents/Contoso Mark8 Controller.pdf</x:String>
    <x:String x:Key="670ef91a-18b1-4869-9ca2-fc573e6eca2f.pdf">assets/documents/Contoso Mark8.pdf</x:String>
    <x:String x:Key="b90f3fd6-933f-4c55-a267-298be21c9d32.pdf">assets/documents/Contoso Quad.pdf</x:String>
    <x:String x:Key="35667dfc-1a0c-4322-8980-43c58dd6ea70.png">assets/SitePages/2019-sales-leadership-award/sales-leadership-award.png</x:String>
    <x:String x:Key="5c886067-3fd3-48bc-974e-75e7fc3aece0.jpeg">assets/SitePages/Contoso-called-on-drone-pilots-to/AdobeStock_145027729.jpeg</x:String>
    <x:String x:Key="eeebf271-8661-4429-91f8-a3798b278900.jpg">assets/SitePages/Contoso-partners-with-non-profit-to-deliver-life-saving-supplies/7719-larm-rmah-216854-unsplash.jpg</x:String>
    <x:String x:Key="48596918-fcbc-4d48-a0a9-ed966a4d1d65.jpg">assets/SitePages/Miriam-Graham--Contoso-s-new-Chief-Marketing-Officer/CLO17_azure_004.jpg</x:String>
    <x:String x:Key="ceb43a63-37e5-4730-aad0-58fb5c3ea711.jpg">assets/SitePages/One-million-drones-sold-in-2018/kevin-chow-176761-unsplash.jpg</x:String>
    <x:String x:Key="936af989-985e-4f2a-9f16-39da9c2e8dea.jpg">assets/SitePages/One-million-drones-sold-in-2018/white-drone-hovering-in-a-bright-blue-sky-PFV2XG7.jpg</x:String>
    <x:String x:Key="e79b754e-c9f3-44a0-ae57-00119f326cf7.jpeg">assets/SitePages/Our-commitment-to-sustainability/AdobeStock_83900723.jpeg</x:String>
    <x:String x:Key="1fca3e50-1d69-4bd1-87db-d3363803b6c8.jpg">assets/SitePages/Patti-announces-flagship-store-opening/contoso-storefront.jpg</x:String>
    <x:String x:Key="63767808-1e11-40f8-956e-475d98e8a9f4.jpeg">assets/SitePages/Pushing-the-Boundaries-on-Aerial-Inspection/AdobeStock_137739028.jpeg</x:String>
    <x:String x:Key="d38d36c8-3fff-49aa-8cf2-c6b0a3efcdab.jpg">assets/SitePages/Singapore-building-update--August-2019/12891-artist_rendering.jpg</x:String>
    <x:String x:Key="229a203c-64cb-463c-b6ff-5c3e8c6fa631.jpeg">assets/SitePages/The-future-of-air-traffic--safely-sharing-the-skies-with-drones/AdobeStock_132294759.jpeg</x:String>
    <x:String x:Key="979f54ef-cb91-4c49-97b0-4d93e62c1ab2.png">assets/SitePages/The-importance-of-branding-at-Contoso/SBLB-BRANDING.png</x:String>
    <x:String x:Key="a6e4fc79-27c5-4f66-b540-fcb4ce1783c9.jpg">assets/SitePages/ThePerspective/23363-showcase.jpg</x:String>
    <x:String x:Key="4bde9cf8-20c0-41a2-a28a-32d502d1e030.jpg">assets/SitePages/ThePerspective/27137-consumer-showcase-thumb-1.jpg</x:String>
    <x:String x:Key="8561942b-8c11-4b30-afca-0bfd3a8a4c45.jpg">assets/SitePages/ThePerspective/33318-consumer-showcase-thumb-2.jpg</x:String>
    <x:String x:Key="c60d109a-21ad-4d3e-b9b4-d92168a463e8.jpg">assets/SitePages/ThePerspective/1548836252flysafe-thumb.jpg</x:String>
    <x:String x:Key="a553db37-a27f-48a1-8c25-72e3fd6479b3.jpeg">assets/SitePages/ThePerspective/AdobeStock_109868254.jpeg</x:String>
    <x:String x:Key="cfd7e6e5-0c92-4f61-8713-ae6942e9d1c6.jpeg">assets/SitePages/ThePerspective/AdobeStock_132294759.jpeg</x:String>
    <x:String x:Key="659ca9d3-081c-46c7-b0e5-23bb6e8bfaf9.jpg">assets/SitePages/ThePerspective/cta-banner.jpg</x:String>
    <x:String x:Key="abcc211e-18fc-4864-9c06-724b47164102.jpg">assets/SitePages/ThePerspective/nasa-_SFJhRPzJHs-unsplash.jpg</x:String>
    <x:String x:Key="ca166bc3-c2ec-44bf-8933-2a688d8702d2.png">assets/SitePages/Why-simplicity-matters/poster-patti-quote.png</x:String>
  </PnPFilesMap.Map>
</PnPFilesMap>

Вы увидите, что для каждого файла, найденного в папке Files, есть соответствующая запись в файле files-map.xml.

Редактирование вручную

В принципе, можно вручную отредактировать файл .pnp, распаковав zip-файл в папку, обновив файлы, добавив файлы, изменив файл files-map.xml, но мы рекомендуем вам использовать PnP PowerShell для выполнения нужных действий.

Создание файла PnP

Самый простой способ создать файл PnP — извлечь шаблон с сайта и задать расширение. PnP. Командлет выполнит все необходимые действия за вас:

Connect-PnPOnline -Url https://yourtenant.sharepoint.com/sites/yoursite
Get-PnPSiteTemplate -Out myfile.pnp

Примечание.

PnP PowerShell — это решение с открытым исходным кодом, поддержка которого предоставляется активным сообществом. Для инструментов с открытым исходным кодом не существует соглашения об уровне обслуживания в отношении поддержки корпорацией Майкрософт.

Однако это не даст вам возможности легко изменить шаблон. Лучше всего:

  1. Создайте файл конфигурации и убедитесь в том, что для persistAssetFilesсвойства установлено значениеtrue, при желании указав извлечение библиотек, таких как SiteAssets, Shared Documents, WebSettings (для логотипа и т. Д.).
  2. Создайте новую папку в вашей файловой системе и перейдите к ней с помощью PowerShell.
  3. Извлеките шаблон в виде XML-файла и предоставьте файл конфигурации:
    Connect-PnPOnline -Url https://yourtenant.sharepoint.com/sites/yoursite
    Get-PnPSiteTemplate -Out myfile.xml -Configuration ./yourconfiguration.json
    
  4. Вы заметите, что в вашей папке будет создана одна или несколько дополнительных папок. Они содержат сами файлы. При открытии XML-файла вы заметите <pnp:File /> элементы, указывающие на эти файлы.
  5. Считайте шаблон в объект в памяти и сохраните его как PnP-файл:
    $template = Read-PnPSiteTemplate -Path myfile.xml
    Save-PnPSiteTemplate -Out myfile.pnp -Template $template
    

Примечание.

Вы также можете сохранить шаблон клиента с помощью замены PnP PowerShell Read-PnPSiteTemplate с Read-PnPTenantTemplate и Save-PnPSiteTemplate с Save-PnPTenantTemplate. Дополнительные сведения о шаблонах клиентов см. в разделе Шаблоны клиента подготовки PnP.

См. также