Using multiple MSIs to add a custom strip and tiles to the Windows Media Center Start menu

I have previously posted topics about creating custom strips on the Windows Media Center Start menu in Windows Vista and specifying an exact order for the tiles in a custom strip. I have received additional questions about how to implement a more complicated solution - how to create multiple MSI installers to add/remove tiles in the same custom strip, and also allow the MSIs to be installed/uninstalled independently from each other and in any order.

This scenario is a bit tricky to implement because of the following issues:

  • In order to separate the tiles into separate MSI installer packages, you must break them into distinct XML files that can be registered with RegisterMceApp.exe or the RegisterApplication API
  • You must choose a specific application GUID can be registered as a Windows Media Center Start menu strip, but if you break the tiles into separate XML files, they must each have a different application GUID that is registered

In order to implement this solution and address the above issues, you can use the following algorithm:

  1. Create a "parent" application and register it
  2. Create registry entries (like the ones described here) to add this parent application to the Windows Media Center Start menu
  3. Create and register 2 or more "child" applications that contain entry points for each tile in the custom strip. The child applications must both be registered for the category that is listed in the registry entries in step 2 or else they will not appear on the Start menu.
  4. Create MSI packages for each of the child applications. You will need to include the parent application registration (step 1 above) and the registry entries (step 2 above) in all of your MSI packages in order to allow them to be installed in any order and still have the strip and tiles appear on the Windows Media Center Start menu

I have posted a ZIP file that contains an example of how to create a parent application and 2 child applications that each register tiles on a custom strip on the Windows Media Center Start menu. You can try out this scenario by using the following steps:

  1. Download the ZIP file and extract the contents to a Windows Vista Home Premium or Ultimate system
  2. Click on the Start menu, choose All Programs, then Accessories
  3. Right-click on Command Prompt and choose Run as administrator, then click Allow
  4. Run %windir%\ehome\registermceapp.exe TestApp_parent.xml to register the parent application
  5. Run regedit.exe /s TestApp.reg to add the parent application to the Windows Media Center Start menu
  6. Run %windir%\ehome\registermceapp.exe TestApp_divided1.xml to register the first child application and the first 2 entry points
  7. Run %windir%\ehome\registermceapp.exe TestApp_divided2.xml to register the second child application and the remaining 3 entry points

After running the above steps, you can un-register the first or second child application, and the strip and tiles from the other child application will be left behind on the Windows Media Center Start menu.

Note: You will see a dummy entry point listed in TestApp_parent.xml that is described as an "intentionally hidden" entry point. This entry point is necessary because Windows Media Center will not display an application on the Start menu unless it has at least one entry point associated with it (even if that entry point is not actually designed to be shown on the Start menu). In this case, we do not want this dummy entry point to not appear as a tile on the Start menu, so we register it with a category that is not listed in the registry file from step 5 above. Even though the entry points in TestApp_divided1.xml and TestApp_divided2.xml are not associated with the parent application, they will still appear in the Start menu because they are members of the category that is listed in the registry file from step 5 above.