Partager via


Format de fichier PnP Office Open XML (.pnp)

Si vous disposez d’un modèle qui contient des références de fichier (par le biais de l’élément <pnp:Files />), vous devrez distribuer le fichier xml et les fichiers mentionnés. Bien que cela fonctionne de toute évidence, il est très facile d’oublier des fichiers lorsque vous les copiez dans un autre emplacement.

Remarque

L’infrastructure d’approvisionnement PnP & moteur d’approvisionnement PnP sont des solutions open source avec une communauté active qui le prend en charge. Il n’existe pas de contrat SLA Microsoft pour le support technique relatif à cet outil open source.

Nous avons par conséquent introduit un format Office Open XML spécifique appelé « fichier pnp ». Il s’agit en fait d’un fichier zip ayant une structure spécifique. Si vous renommez le fichier .pnp avec une extension .zip, vous pouvez tout simplement ouvrir et consulter le fichier.

Contenu d’un fichier PnP

Fichiers

Si vous ouvrez le dossier Fichiers dans le dossier zippé, plusieurs noms de fichier étranges s’affichent, tous basés sur un Guid (Identificateur global unique)

Contenu du dossier Fichiers

Le modèle lui-même se trouve dans cette liste. Il possède une extension .xml. Les autres fichiers qui s’affichent sont des fichiers auxquels vous faites référence dans votre modèle XML.

Chaque fichier a été renommé pour recevoir un nom de fichier unique. La raison de ceci est que le format de fichier Office Open XML n’autorise pas les sous-dossiers dans cette structure. Mais, que se passe-t-il si vous disposez de deux fichiers différents faisant référence à votre modèle, chacun ayant le même nom de fichier ? Supposons que vous avez un fichier intitulé Project.docx qui est placé dans votre bibliothèque Documents partagés et qu’un autre fichier Project.docx est placé dans une bibliothèque Documents de projet. C’est la raison pour laquelle nous renommons les fichiers pour leur attribuer un nom unique.

Lorsque nous appliquons le modèle, nous utilisons une table de choix pour trouver le nom de fichier actuel. Cette table de choix se trouve dans le dossier ProvisioningTemplate et se nomme files-map.xml.

Voici un exemple du contenu de ce fichier :

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

Vous constatez que pour chaque fichier trouvé dans le dossier Files, il existe une entrée correspondante dans le fichier files-map.xml.

Modification manuelle

Il est en principe possible de modifier manuellement le fichier .pnp en extrayant le fichier zip dans un dossier, en mettant à jour les fichiers, en ajoutant des fichiers, en modifiant le fichier files-map.xml. Nous vous recommandons toutefois d’utiliser PnP PowerShell pour exécuter le travail à votre place.

Création d’un fichier PnP

La méthode la plus simple pour créer un fichier PnP consiste à extraire un modèle d’un site et de spécifier l’extension .pnp. L’applet de commande effectue le travail pour vous :

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

Remarque

PnP PowerShell est une solution open source pour laquelle un support est assuré par la communauté active. Il n’existe pas de contrat SLA Microsoft pour le support technique relatif à cet outil open source.

Elle ne vous autorisera toutefois pas une modification facile du modèle. La meilleure façon de procéder est la suivante :

  1. Créez un fichier de configuration et veillez à avoir au moins défini la propriété persistAssetFiles sur true, en spécifiant éventuellement d’extraire des bibliothèques telles que SiteAssets, Documents partagés, WebSettings (pour le logo etc.).
  2. Créez un dossier sur votre système de fichiers, puis accédez à ce dossier à l’aide de PowerShell.
  3. Extrayez un modèle en tant que fichier XML et fournissez le fichier de configuration :
    Connect-PnPOnline -Url https://yourtenant.sharepoint.com/sites/yoursite
    Get-PnPSiteTemplate -Out myfile.xml -Configuration ./yourconfiguration.json
    
  4. Vous remarquerez qu’un ou plusieurs dossiers supplémentaires ont été créés dans votre dossier. Ceux-ci contiennent les fichiers réels. Lorsque vous ouvrez le fichier XML, vous remarquez <pnp:File /> éléments pointant vers ces fichiers.
  5. Lisez le modèle dans un objet en mémoire et enregistrez-le en tant que fichier PnP :
    $template = Read-PnPSiteTemplate -Path myfile.xml
    Save-PnPSiteTemplate -Out myfile.pnp -Template $template
    

Remarque

Vous pouvez également enregistrer un modèle client à l’aide du substitut PnP PowerShell Read-PnPSiteTemplate avec Read-PnPTenantTemplate et Save-PnPSiteTemplate avec Save-PnPTenantTemplate. Vous référer à Modèles de client d’approvisionnement PnP pour obtenir davantage d’informations sur les modèles client.

Voir également