Customizing the “Welcome Center” in Windows Mobile 6.1

A new feature that came along in Windows Mobile 6.1 is the “Welcome Center” or “Getting Started” as the icon listed under “Programs” is called. This is a feature that is designed to make it easier for new users to get acquainted with their Windows Mobile devices, and provide a starting point for them.

The default offering looks like this running on a Pocket PC:
WC_01

If you click an item you are either redirected to a more specific dialog box, or shown a richer description/explanation.

While experienced users might not find this very exciting, it does offer a new possibility since you can modify it for your own needs 🙂 This means you can tailor it for the users in your company if you’re deploying devices in an enterprise scenario, or you can tweak it to your personal liking as a power user.

So how can we customize this new piece of software? It’s basically a “browser light” and the contents make up your own mini web site. The configuration is stored in the registry, and the contents are file-based.

On to the registry first; if you load up your favorite tool for registry editing your device you can navigate to HKLM\System\WelcomeCenter\xxxx where xxxx will be specific to the language of your device. 0409 = English and 0414 = Norwegian. On Pocket PC/Professional you’ll only have to worry about one language so it shouldn’t be a problem locating the proper key. On Smartphone/Standard devices however you may have multiple languages available on your device. (You can have different content for different languages if you like.)

The subkeys make up the items you see in the screenshot above. You can name the subkeys whatever you like, as long as you are able to figure it out when you come back later for maintenance 🙂 (If you want it in alphabetical or numeric order for instance.) It’s the values underneath the subkey that matters. You need to specify the following values:
order [Dword] – A numeric value that is used to determine the order items are listed.
image [String] – Path to an image file that will serve as icon.
name [String] – The name as it appears in the list.
url [String] – Path to the hyperlink.

As an example “Make a call” (see screenshot) have the following values:
order – 16
image – “\Windows\phone_wc.gif”
name – “Make a call”
url – “\Windows\wc_makecall.wcml”

The default items use \Windows as the path for the files, but you can put it in whatever folder you like. Seeing that it’s links you might be able to put them on a web server, but I haven’t tested/tried that myself. (I can see some potential drawbacks to that approach however…)

The file you use for “image” could be a jpg/gif/png/bmp. You might want to use transparency to make it blend with the background.

You might notice that the value of order for the predefined items seem to be “randomized”. I don’t know how they ended up using those specific values, but if you plan on using any of those items you should either alter their order value, or adapt your numbering scheme accordingly.

So, how about a quick example of a custom item:
Create a new key (under HKLM\System\WelcomeCenter\0409) called “Information”
Create the following registry values;
order = 1
image = “\Windows\question.bmp”
name = “Information”
url = “\MyWC\wc_info.wcml”

This could look like the following (the preloaded items have been deleted):
WC_Info

I said earlier that the contents are file-based, so even though this produces something to look at, it will present an error if you try to choose “View”, or click it, since I haven’t created the file referenced in the url value yet. The default content files have the extension .wcml – now I’m not a web designer so I wouldn’t know exactly why Microsoft are using wcml; to me it just looks like plain html 🙂 Of course there’s nothing forcing you to use wcml-files either, the url value could point directly to an exe-file instead.

So fire up Notepad, or your preferred HTML editor. (Off-topic: I’m testing Microsoft Expression Web 2 for the time being.) Create a file called wc_info.wcml, and this would be the markup we need for our little example:

<!DOCTYPE html PUBLIC-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html lang=”en> <head>
<title>Information</title>
<meta http-equiv=”Content-Typecontent=”text/html; charset=UTF-8/>
<style type=”text/css> .style1 {font-size: 145%;} </style> </head>
<body> <img src=”\MyWC\question.bmp” \img>
<span style=”color;font-size:145%”>&nbsp;</span>
<span lang=”en-us><span class=”style1>Information</span>
</span><br> <span lang=”en-us>Sample info:<br /> This is a text.<br /> <a href=”http://localhost>This is a hyperlink</a>
</body>
</html>

Create a folder called “MyWc” on the root of your device, and copy the file to the folder. Test that it works starting up the Welcome Center and clicking “View”. (If you edit the registry you should always stop the Welcome Center before performing and registry editing, or you could make the application crash.)

So basically, there you have it, how to create your own Welcome Center. You’d probably want to come up with more elaborate setups than this hopefully 🙂

When it comes to distributing this Welcome Center it’s obvious that registry editing and copying files via ActiveSync for every device wouldn’t cut it – you will need something else. You could either create a cab file containing both files and registry settings, or you could use your favorite Device Management system to transfer files and edit the registry directly. My preferred method is a cab-file preloaded on the device containing a minimum configuration, and making it dynamic through updating via a DM solution. (You could distribute specific settings based on membership in Active Directory groups for instance.)