[InfoPath] How to modify the XSN file and the inside xml..


InfoPath is an XML based document that is saved in XSN format,,,,

The XSN is actually noting but a .Cab file (cabinet). Try renaming any XSN file to .Cab and click on it,,

You will find all files that actually consist an InfoPath file,,,


Sometimes you need to modify the content of one of the files such as the schema file (.xsd)..


The process goes as follows:

    Unpacking à Modifying à repacking

    This article will guide you through all three steps


As we said before an XSN is nothing but a bunch of xml documents zipped in a cabinet…

So unpacking it is fairly simple,, you just need to:

  1. Rename your XSN file to .Cab
  2. Click on the cab file
  3. Select all files and right click on the selection…
  4. Select "Extract Files".
  5. Then choose a suitable place to extract the files in it,,,


Now what you need to do is to go the extracted folder and choose whatever file you want to modify in the XSN. Usually its notepad that you will use to modify these files..

After you finish save your work and close all editing applications.


    We need to zip al these extracted files into a cab or xsn file again so we can open our InfoPath file again,,,

    Now this is where you need to use a tool called Make-Cab which can be found in C:\Windows\System32\makecab.exe…



Using this tool is something I am to going to visit here in this article; I will just explain the part where repacking the files to XSN again,,,

But for more information in details on MakeCab.exe visit this link: http://support.microsoft.com/kb/310618/ where you can fid the SDK and download it,,,,

Let's get back to business. Till now you have all the extracted files in a folder, to create your XSN now follow the instructions:

  1. Create a txt file called directives.txt (or any suitable you like).

  2. Copy this code in the file:


    ; MSDN Sample Source Code MakeCAB Directive file example




    ; change the value of the caninet name for example myInfoPath.xsn


    .Set CabinetNameTemplate=AfterRePackaging.XSN


    ; change the value of the Disk Directory Template value to the directory you want to store the xsn file into,,


    .set DiskDirectoryTemplate="D:\Workarea\InfoPath Work"

    .Set Cabinet=on

    .Set Compress=on


    ; Just List All the files to be added in the xsn file


    "D:\Workarea\InfoPath Work\Extracted Files\manifest.xsf"

    "D:\Workarea\InfoPath Work\Extracted Files\myschema.xsd"

    "D:\Workarea\InfoPath Work\Extracted Files\sampledata.xml"

    "D:\Workarea\InfoPath Work\Extracted Files\template.xml"

    "D:\Workarea\InfoPath Work\Extracted Files\upgrade.xsl"

    "D:\Workarea\InfoPath Work\Extracted Files\view1.xsl"


    ; End of the File


  3. Save your file. And open the command prompt (CMD).

  4. Now, you need to type the following command:

    MakeCab /f directives.txt

    *** be sure that you are in the same directory or give the full path name ***

  5. Congratulations now you have your XSN file go ahead and test it,,,

Conclusion and summary:

You have learned in this article how to open an XSN file, modify it and re-package it again into XSN file,,

    Once you do this once, the other times will be piece of cake,,

And of course questions are always welcomed J…