Формат файлов Office Open XML для PnP (.pnp)
Если у вас есть шаблон, который содержит ссылки на файлы (через элемент <pnp:Files />
), вам придется распространить как файл xml , так и файлы, на которые есть ссылки. Хотя это определенно работает, очень легко пропустить файлы при их копировании в другое место.
Примечание.
Платформа подготовки PnP & подсистема подготовки PnP — это решения с открытым кодом, в которых активное сообщество предоставляет поддержку. SLA для поддержки инструмента с открытым исходным кодом со стороны Майкрософт отсутствует.
По этой причине мы ввели специальный формат Office Open XML, который называется pnp-файлом. По сути, это zip-файл с определенной структурой. Если вы переименуете .pnp-файл в расширение .zip, вы можете просто открыть файл и посмотреть в нем.
Файлы
Если вы откроете папку «Файлы» в заархивированной папке, вы увидите множество странных имён файлов, основанных на 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 — это решение с открытым исходным кодом, поддержка которого предоставляется активным сообществом. Для инструментов с открытым исходным кодом не существует соглашения об уровне обслуживания в отношении поддержки корпорацией Майкрософт.
Однако это не даст вам возможности легко изменить шаблон. Лучше всего:
- Создайте файл конфигурации и убедитесь в том, что для
persistAssetFiles
свойства установлено значениеtrue
, при желании указав извлечение библиотек, таких как SiteAssets, Shared Documents, WebSettings (для логотипа и т. Д.). - Создайте новую папку в вашей файловой системе и перейдите к ней с помощью PowerShell.
- Извлеките шаблон в виде XML-файла и предоставьте файл конфигурации:
Connect-PnPOnline -Url https://yourtenant.sharepoint.com/sites/yoursite Get-PnPSiteTemplate -Out myfile.xml -Configuration ./yourconfiguration.json
- Вы заметите, что в вашей папке будет создана одна или несколько дополнительных папок. Они содержат сами файлы. При открытии XML-файла вы заметите
<pnp:File />
элементы, указывающие на эти файлы. - Считайте шаблон в объект в памяти и сохраните его как 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.