This blog is owned and operated by the ANZ ConfigMgr Premier Field Engineer team.
Ian BartlettMatt ShadboltGeorge Smpyrakis
When you distribute content to a Distribution Point in ConfigMgr 2012, a check is done against the Content Library to confirm that any of the source files being referenced in your application/package do not already exist in the Content Library. Ie. There is only one copy of every file stored on a DP regardless of how many packages reference that one file.
The ConfigMgr 2012 Content Library (SCCMContentLib) consists of 3 subfolders:
1. PkgLib 2. DataLib 3. FileLib
In the Package Library folder you will find a PackageID.ini file for every package. The PackageID.ini file for each package will give you the details for the Data library content and what file you will need to look for.
In the Data Library folder you will find a PackageID.ver.ini file for each package and a PackageID.ver folder. The folder is a “copy” of the exact package folder structure but without any of the real files. For each file in the original package you will find a corresponding .INI file with information about the original file. To find the HASH value for the file you are interested in, open the relevant .INI file and make a note of the first 4 digits of the HASH value, this will be needed to find the data in the FileLib directory
The File Library folder is where you will find the actual files that are used in the different packages. All files are grouped together in a folder. The folder for each file uses a 4 digit pre-fix of the HASH value of that file found in the DataLib. The FileLib is where the nuts and bolts of the application are stored. You will see three files under each folder:
1. A file with no extension (FILE), the actual file named is the HASH value. This file contains all of the source files for that part of the application. If the application only had a single .EXE or .MSI file to execute than you could copy the file to a location such as the Desktop, rename it to the original file name, ie .EXE, .MSI and start the installation
2. Hash.ini file contains a link between the file and the packages that uses the file. If you have multiple packages referring the same file, you will just see an entry for each package ID.
3. Hash.sig. It contains the original package signature
For this example I will use my Microsoft Office 2010 package which has Package ID IBC0000B.
1. Navigate to the SCCMContentLib directory on your DP.
2. open the PkgLib directory
3. Open the configuration file referencing your Package ID, ie IBC0000B, and make a note of the ContentID it is referencing, ie Content_30b777f9-be…………..
4. Navigate to SCCMContentLib\DataLib and open the directory that was referenced in your package configuration file, ie Content_30b777f9_30b777f9-be51-484b-8327-77bf2ef75169.1
Notice that folder Content_30b777f9_30b777f9-be51-484b-8327-77bf2ef75169.1 holds reference to all files in your source location, ie you will see all the Office 2010 files being referenced. NOTE: These files do not contain any of the actual source data, only references to the HASH values for each
5. Open any of the configuration files referencing a file in your package to gain the HASH value to the actual content. For this example I will use the setup.exe file as the example.
6. Take note of the first 4 digits in the hash, so for the setup.exe file it will be “97E6”
7. Navigate to SCCMContentLib\FileLib\<4 digit hash> - eg SCCMContentLibrary\FileLib\97E6
8. The file with extension ‘FILE’ is the actual content for the setup.exe file in our source content. To confirm this we can see the size of this file is 1075KB, the same as our setup.exe file from our source location.OriginalSource Files
9. As this Office is an application made up of many components, ie Word, Excel etc, they all share common files; to see what packages require the setup.exe file you could open the “Configurations Settings” file to see the package IDs of all packages that require the setup.exe file. For applications that are compiled to one executable, eg Adobe Reader, you could follow this process and simply copy the FILE file to a desktop, set the file extensions accordingly, ie .EXE and you could simply run this file and it would execute and install as it would contain all source files…
THAT’S IT… GOOD LUCK…
Great overview. Where is the correlation between original file name and hash file name held? For example, in your above screenshots, where is the information held that says 97E6F3FC....4D9C.FILE at 1,075KB is actually called setup.exe? In this in an INI file or is it located in the SCCM database somewhere instead?
Excellent Document. Please keep on posting like this documents for Troubleshooting all the methods in SCCM 2012.