El formato de archivo Office Open XML PnP (.pnp)

Si tiene una plantilla que contiene referencias de archivo (a través del elemento <pnp:Files />) tendrá que distribuir tanto el archivo xml como los archivos a los que se hace referencia. Aunque esto funciona, es muy fácil perder archivos al copiarlos a otra ubicación.

Nota:

El marco de aprovisionamiento de PnP & motor de aprovisionamiento de PnP son soluciones de código abierto con una comunidad activa que proporciona soporte técnico para él. No hay ningún contrato de nivel de servicio para el soporte de la herramienta de código abierto de Microsoft.

Por esta razón, presentamos un formato Office Open XML específico llamado 'archivo pnp'. De hecho, se trata de un archivo zip con una estructura específica. Si cambia el nombre del archivo .pnp para que tenga una extensión .zip, simplemente puede abrir el archivo y echarle un vistazo.

Contenido de un archivo PnP

Archivos

Si abre la carpeta Archivos en la carpeta comprimida, verá muchos nombres de archivo extraños, todos basados en un GUID (identificador global único)

Contenido de la carpeta Archivos

La plantilla en sí se encuentra en esta lista, tiene una extensión .xml. El resto de los archivos que se ven son en realidad archivos a los que se hace referencia en la plantilla XML.

Se ha cambiado el nombre de todos los archivos para que tengan un nombre de archivo único. El motivo es que el formato de archivo Office Open XML no permite subcarpetas en esta estructura, pero ¿qué sucede si tiene 2 archivos diferentes mencionados en su plantilla, cada uno con el mismo nombre de archivo? Supongamos que tiene un archivo denominado project.docx que va a su biblioteca de Documentos compartidos y tiene otro archivo project.docx que va a una biblioteca de Documentos de proyecto. Por este motivo cambiamos el nombre de los archivos para que tengan un nombre único.

Cuando aplicamos la plantilla, utilizamos una tabla de búsqueda para buscar el nombre de archivo real. Esa tabla de búsqueda se encuentra en la carpeta ProvisioningTemplate y se denomina files-map.xml.

Este es un ejemplo del contenido del archivo:

<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>

Verá que, para cada archivo que encuentre en la carpeta Files, tenemos una entrada coincidente en el archivo files-map.xml.

Edición manual

En principio, es posible editar manualmente el archivo .pnp extrayendo el archivo zip a una carpeta, actualizando los archivos, agregando archivos o modificando el archivo files-map.xml, pero le recomendamos que utilice PnP de PowerShell para que haga el trabajo por usted.

Creación de un archivo PnP

La forma más sencilla de crear un archivo PnP es extraer una plantilla de un sitio y especificar la extensión .pnp. El cmdlet hará el trabajo por usted:

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

Nota:

PnP PowerShell es una solución de código abierto con una comunidad activa que ofrece su soporte. No hay ningún contrato de nivel de servicio para el soporte de la herramienta de código abierto de Microsoft.

Sin embargo, esto no le permite modificar la plantilla fácilmente. La mejor manera es:

  1. Cree un archivo de configuración y asegúrese de establecer al menos la propiedad persistAssetFiles en true, especificando opcionalmente que se extraigan bibliotecas como SiteAssets, Shared Documents, WebSettings (para el logotipo, etc.).
  2. Cree una nueva carpeta en el sistema de archivos y vaya a esa carpeta con PowerShell.
  3. Extraiga una plantilla como un archivo XML y proporcione el archivo de configuración:
    Connect-PnPOnline -Url https://yourtenant.sharepoint.com/sites/yoursite
    Get-PnPSiteTemplate -Out myfile.xml -Configuration ./yourconfiguration.json
    
  4. Observará que se crean una o varias carpetas adicionales en la carpeta. Contienen los archivos reales. Cuando abra el archivo XML, verá <pnp:File /> elementos que apuntan a esos archivos.
  5. Lea la plantilla en un objeto en memoria y guárdela como archivo PnP:
    $template = Read-PnPSiteTemplate -Path myfile.xml
    Save-PnPSiteTemplate -Out myfile.pnp -Template $template
    

Nota:

También puede guardar una plantilla de espacio empresarial usando PnP PowerShell sustituyendo Read-PnPSiteTemplate con Read-PnPTenantTemplate y Save-PnPSiteTemplate con Save-PnPTenantTemplate. Consulte Plantilla de espacio empresarial de aprovisionamiento de PnP para más información sobre las plantillas de espacio empresarial.

Consulte también