To introduce a new SKU to the system, you need to follow these steps:

1) Select a new unique identifier for the SKU, like WebServer_32 or Personal_64, and a unique file name, like pchdt_t3.cab.

2) Edit the file $/admin/pchealth/redist/SKUlist.txt, where you have to insert a new record, to describe the changes.
   The record must be in the form "<SKU> <Cabinet> <ProdFilt> <Desktop flag> <Server flag> <Embedded flag>":
   
      WebServer_32 pchdt_t3.cab	@t:@3: false true false

   Remember that the cabinet name is the new file that will be added to the build,
   the prodfilt is used during build to convert the .INX to an .INF and
   the boolean flags determine the type of the SKU (DESKTOP or SERVER).

3) Create a new HHT package for the SKU database. This package will live under a sub-directory of

     $/admin/pchealth/HelpCtr/Content/database/

   The directory is normally named after the SKU id:

     $/admin/pchealth/HelpCtr/Content/database/WebServer_32

   The HHT package (normally called 'hcdata.cab') must be compliant with the HCUpdate specifications, see these XML schemas:

     $/admin/pchealth/HelpCtr/Content/XML_Schema/Package_Description.dtd
     $/admin/pchealth/HelpCtr/Content/XML_Schema/HHT.dtd

   In the required 'package_description.xml' file, update the PRODUCT[@ID], SKU[@VALUE] and SKU[@DISPLAYNAME] and make sure the HHT file list is correct:

	<?xml version="1.0" ?>
	<HELPCENTERPACKAGE>
		<VERSION VALUE="1.0" />
		<PRODUCT ID="Whistler_WB" />
		<SKU VALUE='WebServer_32' DISPLAYNAME='Whistler Web Server'/>
		<LANGUAGE VALUE='1033'/>
		<METADATA>
			<HHT FILE="WebServer_32.hht" />
			<HHT FILE="ToolsCtr.hht" />
		</METADATA>
	</HELPCENTERPACKAGE>

4) Edit the file $/admin/pchealth/setup/lst/helpctr.lst to insert a new record for the SKU:

	CompHC_db HCdata.cab HCdata.edb HCdat_t3.edb Database HHT WebServer_32 $HC_DB/WebServer_32

5) Go to $/admin/pchealth/setup and execute the command:

	createsetup all

   The command will update three files:

	$/admin/pchealth/redist/SetupImage.lst
	$/MergedComponents/SetupInfs/PCHealth.inx
	$/MergedComponents/SetupInfs/usa/PCHealth.txt

6) Edit the file $/MergedComponents/SetupInfs/layout.inx, to make sure that the new pchdt_*.cab is included in the build.
   You should use the same prodfilt flags as in pchealth.inx:

      @t:@3:pchdt_t3.cab

7) Edit the file $/MergedComponents/SetupInfs/pchmui.inx and apply similar changes:

	[SourceDisksFiles]
	...
	@t:@3:pchdt_t3.cab=55
	...

	[DB.files.install]
	...
	@t:@3:pchdt_t3.cab,pchdt_t3.cab.mu_
	...

	[RunPostSetupCommandsSection] 
	...
	@t:@3:"%10%\PCHealth\HelpCtr\Binaries\HelpSvc /MUI_install %LCID% %10%\PCHealth\MUI\%LCID%\pchdt_t3.cab"
	...

8) Edit the file $/admin/pchealth/build/placefile, to binplace the new file:

      pchdt_t3.cab          retail      ; --NOT-LOCALIZED--

9) Go to $/admin/pchealth/redist and create a new sub-directory "sku_<new ID>", using the others as a template (three files).
   The file "makefile.inc" needs to be updated to use the new ID:

   	HssSetupTool.exe -root $(_NTPOSTBLD)\build_logs -log hss_wb.log -dblog createdb_wb.log COMPILE $(_NTTREE) WebServer_32

   The file "sources" needs to be updated to binplace the proper cabinet:

MISCFILES = \
!if $(386)
    $(O)\pchdt_t3.cab
!elseif $(WIN64)
!endif

10) Edit $/admin/pchealth/redist/dirs, to build the new directory.

11) Finally edit the postbuild script: $/tools/postbuildscripts/helpsupportservices.cmd

	if ( $platform =~ /x86/i )
	{
	    &ConditionalCompileSKU( "per", "Personal_32"      , "pchdt_p3.cab"    ) or exit( 1 );
	    &ConditionalCompileSKU( "pro", "Professional_32"  , "pchdt_w3.cab"    ) or exit( 1 );
	    &ConditionalCompileSKU( "bla", "Blade_32"         , "pchdt_b3.cab"    ) or exit( 1 );
	    &ConditionalCompileSKU( "wb" , "WebServer_32"     , "pchdt_t3.cab"    ) or exit( 1 );
	    &ConditionalCompileSKU( "srv", "Server_32"        , "pchdt_s3.cab"    ) or exit( 1 );
	    &ConditionalCompileSKU( "ads", "AdvancedServer_32", "pchdt_e3.cab"    ) or exit( 1 );
	    &ConditionalCompileSKU( "dtc", "DataCenter_32"    , "pchdt_d3.cab"    ) or exit( 1 );
	}

    The first parameter should match the one in $/tools/prodskus.txt

To test the whole thing:

	cd %SDXROOT%\admin\pchealth
	scorchtree
	cd %SDXROOT%\admin\pchealth\helpctr\rc\content
	build /cZP
	cd %SDXROOT%\admin\pchealth\helpctr\pss\content
	build /cZP
	cd %SDXROOT%\admin\pchealth\redist
	build /cZP

    The logs will be created under %_NTPOSTBLD%\build_logs