Today I thought I'd briefly touch on a new troubleshooting concept-- the meta-pack. A meta-pack is a logical grouping of multiple Windows Troubleshooting Packs which can then be executed as one. You can use a meta-pack to group similar troubleshooting tasks or to extend the functionality of an existing diagnostic without having to modify the original code. For example, rather than build a new troubleshooting pack that addresses basic networking plus your configuration-specific root-causes you can create a meta-pack that includes the Windows 7 networking troubleshooter plus your configurations-specific troubleshooter, giving you the basic network troubleshooting for free.
I've attached a sample DiagCab file that illustrates this concept by combining the Windows 7 maintenance, audio, printer, and aero troubleshooters into one meta-pack.
The contents of the DiagCab is quite simple. It contains one file called "metapack.diagcfg" which defines the meta-pack. The contents of the file is provided below. Transforming this file into a meta-pack is simply a matter of cabbing up the file and changing the extension from ".cab" to ".diagcab".
<?xml version="1.0" encoding="utf-8"?>
<PackageConfiguration xmlns="http://www.microsoft.com/schemas/dcm/configuration/2008">
<Execution>
<Package Path="%windir%\diagnostics\scheduled\Maintenance"/>
<Package Path="%windir%\diagnostics\system\audio"/>
<Package Path="%windir%\diagnostics\system\printer"/>
<Package Path="%windir%\diagnostics\system\aero"/>
</Execution>
</PackageConfiguration>
If you wanted to extend a Windows 7 Troubleshooting Pack then the XML and directory structure would look something like this. Note that the first package entry points to a folder called "MyAppDiag"; this is the folder that contains your completed diagnostic, which must be included. Cab the whole thing up, rename to .diagcab, and you're ready to go!
Contents of .DiagCfg
<Package Path="MyAppDiag"/>
Directory Structure of .DiagCab
.\Metapack.diagcfg
.\MyAppDiag
.\MyAppDiag\DiagPackage.cat
.\MyAppDiag\MyAppDiag.diagpkg
.\MyAppDiag\*.ps1
-mb