<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Mike Francis: My Mobile Home - Windows Mobile</title>
    <link>http://blog.mjfnet.com/Blog/</link>
    <description>focusing on mobile application development...</description>
    <image>
      <url>http://www.mjfnet.com/blog/images/mikehead.jpg</url>
      <title>Mike Francis: My Mobile Home - Windows Mobile</title>
      <link>http://blog.mjfnet.com/Blog/</link>
    </image>
    <language>en-us</language>
    <copyright>Mike Francis</copyright>
    <lastBuildDate>Sun, 30 May 2010 02:43:04 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>mike@mjfnet.com</managingEditor>
    <webMaster>mike@mjfnet.com</webMaster>
    <item>
      <trackback:ping>http://blog.mjfnet.com/Blog/Trackback.aspx?guid=b4dc7a6c-5333-4a5e-aa61-7553866e367e</trackback:ping>
      <pingback:server>http://blog.mjfnet.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mjfnet.com/Blog/PermaLink,guid,b4dc7a6c-5333-4a5e-aa61-7553866e367e.aspx</pingback:target>
      <dc:creator>Mike Francis</dc:creator>
      <wfw:comment>http://blog.mjfnet.com/Blog/CommentView,guid,b4dc7a6c-5333-4a5e-aa61-7553866e367e.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mjfnet.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b4dc7a6c-5333-4a5e-aa61-7553866e367e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://marketplace.windowsphone.com/details.aspx?appId=31e1019f-f354-4a32-a02f-78a865236e22">
            <img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bing Mobile 6.1" border="0" alt="Bing Mobile 6.1" align="left" src="http://www.bing.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/search.metablogapi/0601.clip_5F00_image001_5F00_thumb_5F00_1BF5CB6F.jpg" width="170" height="311" />
          </a>
        </p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
One of my favorite Windows Mobile applications has been Bing (the application formerly
known as “Live Search”).  This application has saved my bacon on more than one
occasion when travelling on business or vacation. The ability to search for vital
resources, wherever I am, like the closest Starbucks has been invaluable to me. 
</p>
        <p>
While Live Search was great, the UI was a little clunky and was not developed with
capacitive screens and the corresponding touch navigation in-mind. Capacitive screens
while more sensitive to touch, have a larger minimum hit target size. Actually comparing
Live Search to the new Bing is a good example of how an application designed for a
resistive screen has been updated to also work with capacitive screens.
</p>
        <p>
 
</p>
        <p>
The usability has greatly improved. For example to starting navigating to the nearest
Starbucks, you:
</p>
        <p>
 
</p>
        <ul>
          <li>
From the Bing home page, Tap ‘Speak’ and say ‘Starbucks’</li>
        </ul>
        <p>
          <a href="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20home1_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bing for mobile, like on the desktop, daily updates the cool photo used on the home page background." border="0" alt="Bing for mobile, like on the desktop, daily updates the cool photo used on the home page background." src="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20home1_thumb.png" width="148" height="244" />
          </a>
        </p>
        <ul>
          <li>
Select the ‘Starbucks’ you want to go to</li>
        </ul>
        <p>
          <a href="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20sbucks%20list_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Select the appropriate tab to search the web of do a web local search of your search term." border="0" alt="Select the appropriate tab to search the web of do a web local search of your search term." src="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20sbucks%20list_thumb.png" width="148" height="244" />
          </a>
        </p>
        <ul>
          <li>
Tap the Car icon for driving directions</li>
        </ul>
        <p>
          <a href="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20sbucks%20location_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Note the detail information here including phone number, address, rating, map thumbnail, etc." border="0" alt="Note the detail information here including phone number, address, rating, map thumbnail, etc." src="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20sbucks%20location_thumb.png" width="148" height="244" />
          </a>
        </p>
        <ul>
          <li>
Tap on ‘Navigate’ (If you are on foot, select the ‘Walk’ tab for walking directions.)</li>
        </ul>
        <p>
          <a href="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/sbucks%20nav_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Single click on 'Navigate' to start with voice directions from your current location" border="0" alt="Single click on 'Navigate' to start with voice directions from your current location" src="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/sbucks%20nav_thumb.png" width="148" height="244" />
          </a>
        </p>
        <p>
Immediately a route is calculated for you and Silicon Sally is telling you where to
go. Yes ‘telling you’, with voice directions! This is a huge improvement over Live
Search that had text only turn-by-turn directions. In the Bing settings, you can specify
if you want to route via the shortest or fastest route. You can also configure Bing
to consider real-time traffic conditions when calculating your route.  
</p>
        <p>
          <a href="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20navigating_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="By default, you will see traffic conditions on map" border="0" alt="By default, you will see traffic conditions on map" src="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20navigating_thumb.png" width="148" height="244" />
          </a>
        </p>
        <p>
          <strong>Now featuring ‘auto-rerouting’! </strong>Live Search would prompt you will
a demoralizing ‘Are you lost? Would you like to reroute from here?’ prompt whenever
you deviated from your planned route. Bing for mobile smartly just tells you that
it is ‘rerouting’ and updates your driving directions based on your current location.
</p>
        <p>
All the great features of Live Search are still here like quick access to locally
playing movies and show times.
</p>
        <p>
You can install Bing for mobile from the Marketplace for Windows Phone <a href="http://marketplace.windowsphone.com/details.aspx?appId=31e1019f-f354-4a32-a02f-78a865236e22">here</a>.
</p>
        <p>
More information <a href="http://discoverbing.com/mobile/">here</a>.
</p>
        <p>
Enjoy!
</p>
        <p>
Mike
</p>
        <iframe style="border-bottom-style: none; border-right-style: none; width: 450px; border-top-style: none; height: 35px; border-left-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%253A%252F%252Fblog.mjfnet.com%252FBlog%252F2010%252F05%252F30%252FBingForMobileVoiceTurnbyTurnDirectionsNewAndImprovedUI.aspx&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;font&amp;colorscheme=light&amp;height=35" frameborder="0" allowtransparency="allowtransparency" scrolling="no">
        </iframe>
      </body>
      <title>Bing for mobile – Voice Turn-by-Turn Directions – New and Improved UI!</title>
      <guid isPermaLink="false">http://blog.mjfnet.com/Blog/PermaLink,guid,b4dc7a6c-5333-4a5e-aa61-7553866e367e.aspx</guid>
      <link>http://blog.mjfnet.com/Blog/2010/05/30/BingForMobileVoiceTurnbyTurnDirectionsNewAndImprovedUI.aspx</link>
      <pubDate>Sun, 30 May 2010 02:43:04 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://marketplace.windowsphone.com/details.aspx?appId=31e1019f-f354-4a32-a02f-78a865236e22"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bing Mobile 6.1" border="0" alt="Bing Mobile 6.1" align="left" src="http://www.bing.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/search.metablogapi/0601.clip_5F00_image001_5F00_thumb_5F00_1BF5CB6F.jpg" width="170" height="311"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
One of my favorite Windows Mobile applications has been Bing (the application formerly
known as “Live Search”).&amp;nbsp; This application has saved my bacon on more than one
occasion when travelling on business or vacation. The ability to search for vital
resources, wherever I am, like the closest Starbucks has been invaluable to me. 
&lt;/p&gt;
&lt;p&gt;
While Live Search was great, the UI was a little clunky and was not developed with
capacitive screens and the corresponding touch navigation in-mind. Capacitive screens
while more sensitive to touch, have a larger minimum hit target size. Actually comparing
Live Search to the new Bing is a good example of how an application designed for a
resistive screen has been updated to also work with capacitive screens.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
The usability has greatly improved. For example to starting navigating to the nearest
Starbucks, you:
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
From the Bing home page, Tap ‘Speak’ and say ‘Starbucks’&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20home1_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bing for mobile, like on the desktop, daily updates the cool photo used on the home page background." border="0" alt="Bing for mobile, like on the desktop, daily updates the cool photo used on the home page background." src="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20home1_thumb.png" width="148" height="244"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Select the ‘Starbucks’ you want to go to&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20sbucks%20list_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Select the appropriate tab to search the web of do a web local search of your search term." border="0" alt="Select the appropriate tab to search the web of do a web local search of your search term." src="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20sbucks%20list_thumb.png" width="148" height="244"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Tap the Car icon for driving directions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20sbucks%20location_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Note the detail information here including phone number, address, rating, map thumbnail, etc." border="0" alt="Note the detail information here including phone number, address, rating, map thumbnail, etc." src="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20sbucks%20location_thumb.png" width="148" height="244"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Tap on ‘Navigate’ (If you are on foot, select the ‘Walk’ tab for walking directions.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/sbucks%20nav_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Single click on 'Navigate' to start with voice directions from your current location" border="0" alt="Single click on 'Navigate' to start with voice directions from your current location" src="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/sbucks%20nav_thumb.png" width="148" height="244"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Immediately a route is calculated for you and Silicon Sally is telling you where to
go. Yes ‘telling you’, with voice directions! This is a huge improvement over Live
Search that had text only turn-by-turn directions. In the Bing settings, you can specify
if you want to route via the shortest or fastest route. You can also configure Bing
to consider real-time traffic conditions when calculating your route.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20navigating_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="By default, you will see traffic conditions on map" border="0" alt="By default, you will see traffic conditions on map" src="http://blog.mjfnet.com/Blog/content/binary/WindowsLiveWriter/Bin.1VoiceTurnbyTurnDirectionsNewandImpr_11DEC/bing%20navigating_thumb.png" width="148" height="244"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Now featuring ‘auto-rerouting’! &lt;/strong&gt;Live Search would prompt you will
a demoralizing ‘Are you lost? Would you like to reroute from here?’ prompt whenever
you deviated from your planned route. Bing for mobile smartly just tells you that
it is ‘rerouting’ and updates your driving directions based on your current location.
&lt;/p&gt;
&lt;p&gt;
All the great features of Live Search are still here like quick access to locally
playing movies and show times.
&lt;/p&gt;
&lt;p&gt;
You can install Bing for mobile from the Marketplace for Windows Phone &lt;a href="http://marketplace.windowsphone.com/details.aspx?appId=31e1019f-f354-4a32-a02f-78a865236e22"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
More information &lt;a href="http://discoverbing.com/mobile/"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Enjoy!
&lt;/p&gt;
&lt;p&gt;
Mike
&lt;/p&gt;
&lt;iframe style="border-bottom-style: none; border-right-style: none; width: 450px; border-top-style: none; height: 35px; border-left-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%253A%252F%252Fblog.mjfnet.com%252FBlog%252F2010%252F05%252F30%252FBingForMobileVoiceTurnbyTurnDirectionsNewAndImprovedUI.aspx&amp;amp;layout=standard&amp;amp;show_faces=false&amp;amp;width=450&amp;amp;action=like&amp;amp;font&amp;amp;colorscheme=light&amp;amp;height=35" frameborder="0" allowtransparency scrolling="no"&gt;
&lt;/iframe&gt;</description>
      <comments>http://blog.mjfnet.com/Blog/CommentView,guid,b4dc7a6c-5333-4a5e-aa61-7553866e367e.aspx</comments>
      <category>Applications</category>
      <category>Bing</category>
      <category>Windows Mobile</category>
    </item>
    <item>
      <trackback:ping>http://blog.mjfnet.com/Blog/Trackback.aspx?guid=7fa578ed-150d-4236-8183-cf5cb3b79a16</trackback:ping>
      <pingback:server>http://blog.mjfnet.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mjfnet.com/Blog/PermaLink,guid,7fa578ed-150d-4236-8183-cf5cb3b79a16.aspx</pingback:target>
      <dc:creator>Mike Francis</dc:creator>
      <wfw:comment>http://blog.mjfnet.com/Blog/CommentView,guid,7fa578ed-150d-4236-8183-cf5cb3b79a16.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mjfnet.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7fa578ed-150d-4236-8183-cf5cb3b79a16</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>Update: I've updated the sample to be independent of the '\Program Files' string.
Also, the sample now supports installing onto a Storage Card. </em>
        </p>
        <p>
A popular sample for demonstrating how to install application dependencies via embedded
CAB files is <a href="http://msdn.microsoft.com/en-us/library/bb158796.aspx">MultiCAB
Install</a>. With this pattern you can distribute dependant cab files via a single
container CAB. “Can apps be distributed via <a href="http://developer.windowsphone.com">Windows
Marketplace for Mobile</a> using this?”,you ask. Yes they can.
</p>
        <p>
Installing SQL Server Compact dependencies is a good fit for this pattern. I have
updated the sample <a href="http://blog.mjfnet.com/files/multicabinstall.zip">here</a> customized
to distribute the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=5544C638-C532-48E3-871C-58B49C5D855C&amp;displaylang=en">latest</a> SQL
Server Compact for Windows Mobile devices.
</p>
        <p>
The sample checks if SQL Server Compact 3.5 is installed (See IsSQLCEUpdateRequired()
in mcsetup.cpp) and if not, launches the multicab EXE which installs each dependant
cab in sequence. (See the multicab whitepaper included in the sample for an in-depth
explanation of how it works.) 
</p>
        <p>
How does the sample check to see if v3.5 is installed? It checks the registry for
the following entry:
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2e569270-d267-48bb-9474-3ecb7078dbe6" class="wlWriterEditableSmartContent">
          <div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt">
            <div style="background: #fff; max-height: 300px; overflow: auto">
              <ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap">
                <li>
\<span style="color:#a31515">Software\Microsoft\Microsoft SQL Server Compact
Edition\v3.5</span></li>
              </ol>
            </div>
          </div>
        </div>
        <p>
This this exists, then installation of the SQLCE cabs is skipped. Note that this registry
key only exists if SQLCE has been installed via a CAB file. That is, this registry
key does not exist of SQLCE is in ROM. As of this writing, 3.5 (SP1 or SP2) is not
distributed in ROM. See here for a list of OS and corresponding SQLCE versions: <a title="Description of the various build versions of SQL Server Compact Edition" href="http://support.microsoft.com/default.aspx/kb/950550">Description
of the various build versions of SQL Server Compact Edition</a>.
</p>
        <p>
The sample does not do version checking on the binaries. Therefore it does not detect
if you are upgrading from SQLCE 3.5 SP1 to SP2. The way it is written now, it will
not update the binaries to SP2. This sample does address the popular scenario of updating
an ‘off the shelf’ device with the latest version of SQL Server Compact.
</p>
        <p>
More SQL Server Compact Links: <script type="text/javascript" src="http://feeds.delicious.com/v2/js/mjfusa/sqlce?title=&amp;count=15&amp;bullet=%C2%BB&amp;sort=alpha"></script>Mike
</p>
        <div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;">This
work is licensed under a <a href="http://creativecommons.org/licenses/by/3.0/">Creative
Commons license.</a></div>
      </body>
      <title>Install SQL Server Compact using the MultiCAB pattern</title>
      <guid isPermaLink="false">http://blog.mjfnet.com/Blog/PermaLink,guid,7fa578ed-150d-4236-8183-cf5cb3b79a16.aspx</guid>
      <link>http://blog.mjfnet.com/Blog/2010/04/30/InstallSQLServerCompactUsingTheMultiCABPattern.aspx</link>
      <pubDate>Fri, 30 Apr 2010 20:51:03 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;Update: I've updated the sample to be independent of the '\Program Files' string.
Also, the sample now supports installing onto a Storage Card. &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
A popular sample for demonstrating how to install application dependencies via embedded
CAB files is &lt;a href="http://msdn.microsoft.com/en-us/library/bb158796.aspx"&gt;MultiCAB
Install&lt;/a&gt;. With this pattern you can distribute dependant cab files via a single
container CAB. “Can apps be distributed via &lt;a href="http://developer.windowsphone.com"&gt;Windows
Marketplace for Mobile&lt;/a&gt; using this?”,you ask. Yes they can.
&lt;/p&gt;
&lt;p&gt;
Installing SQL Server Compact dependencies is a good fit for this pattern. I have
updated the sample &lt;a href="http://blog.mjfnet.com/files/multicabinstall.zip"&gt;here&lt;/a&gt; customized
to distribute the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=5544C638-C532-48E3-871C-58B49C5D855C&amp;amp;displaylang=en"&gt;latest&lt;/a&gt; SQL
Server Compact for Windows Mobile devices.
&lt;/p&gt;
&lt;p&gt;
The sample checks if SQL Server Compact 3.5 is installed (See IsSQLCEUpdateRequired()
in mcsetup.cpp) and if not, launches the multicab EXE which installs each dependant
cab in sequence. (See the multicab whitepaper included in the sample for an in-depth
explanation of how it works.) 
&lt;/p&gt;
&lt;p&gt;
How does the sample check to see if v3.5 is installed? It checks the registry for
the following entry:
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2e569270-d267-48bb-9474-3ecb7078dbe6" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt;
&lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt;
&lt;li&gt;
&amp;#92;&lt;span style="color:#a31515"&gt;Software&amp;#92;Microsoft&amp;#92;Microsoft SQL Server Compact
Edition&amp;#92;v3.5&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
This this exists, then installation of the SQLCE cabs is skipped. Note that this registry
key only exists if SQLCE has been installed via a CAB file. That is, this registry
key does not exist of SQLCE is in ROM. As of this writing, 3.5 (SP1 or SP2) is not
distributed in ROM. See here for a list of OS and corresponding SQLCE versions: &lt;a title="Description of the various build versions of SQL Server Compact Edition" href="http://support.microsoft.com/default.aspx/kb/950550"&gt;Description
of the various build versions of SQL Server Compact Edition&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
The sample does not do version checking on the binaries. Therefore it does not detect
if you are upgrading from SQLCE 3.5 SP1 to SP2. The way it is written now, it will
not update the binaries to SP2. This sample does address the popular scenario of updating
an ‘off the shelf’ device with the latest version of SQL Server Compact.
&lt;/p&gt;
&lt;p&gt;
More SQL Server Compact Links: &lt;script type="text/javascript" src="http://feeds.delicious.com/v2/js/mjfusa/sqlce?title=&amp;amp;count=15&amp;amp;bullet=%C2%BB&amp;amp;sort=alpha"&gt;&lt;/script&gt;Mike
&lt;/p&gt;
&lt;div class="wlWriterHeaderFooter" style="margin:0px; padding:0px 0px 0px 0px;"&gt;This
work is licensed under a &lt;a href="http://creativecommons.org/licenses/by/3.0/"&gt;Creative
Commons license.&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://blog.mjfnet.com/Blog/CommentView,guid,7fa578ed-150d-4236-8183-cf5cb3b79a16.aspx</comments>
      <category>Setup</category>
      <category>sqlce</category>
      <category>Windows Mobile</category>
    </item>
    <item>
      <trackback:ping>http://blog.mjfnet.com/Blog/Trackback.aspx?guid=aead9817-4204-48c9-8a97-3990ae268092</trackback:ping>
      <pingback:server>http://blog.mjfnet.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mjfnet.com/Blog/PermaLink,guid,aead9817-4204-48c9-8a97-3990ae268092.aspx</pingback:target>
      <dc:creator>Mike Francis</dc:creator>
      <wfw:comment>http://blog.mjfnet.com/Blog/CommentView,guid,aead9817-4204-48c9-8a97-3990ae268092.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mjfnet.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=aead9817-4204-48c9-8a97-3990ae268092</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was developing a few themes for Standard and Professional devices (using the <a href="http://www.microsoft.com/windowsmobile/en-us/downloads/theme-generator.mspx">Windows
Phone Custom Theme Generator</a> tool to get me started) and found that when installing
the CAB on Standard devices, I would get the following error:
</p>
        <p>
          <a href="http://mjfnet.com/blog/content/binary/HowtomakechangestoCABfilewithout.INFfile_A979/BuildMaxError.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="The program you have installed may not display properly because it was designed for a previous version of Windows Mobile software." border="0" alt="The program you have installed may not display properly because it was designed for a previous version of Windows Mobile software." src="http://mjfnet.com/blog/content/binary/HowtomakechangestoCABfilewithout.INFfile_A979/BuildMaxError_thumb.png" width="176" height="220" />
          </a>
        </p>
        <p>
Normally to fix this error, you would edit the .INF file and add <a href="http://msdn.microsoft.com/en-us/library/ee504659.aspx">BuildMax</a>=0xE0000000
to the CEDevice section as follows (See <a href="http://msdn.microsoft.com/en-us/library/ee504659.aspx">here</a> for
explanation of BuildMax): 
</p>
        <p>
[CEDevice]<br />
VersionMin = 3.0<br />
VersionMax = 100.0<br /><a href="http://msdn.microsoft.com/en-us/library/ee504659.aspx"><strong>BuildMax</strong></a><strong>=0xE0000000 </strong></p>
        <p>
In this case, I did not have an .INF file since the CAB was generated by the Theme
Generator. Doing a Bing search, I found a great tool (Benoit Thonnart's <a href="http://www.codeppc.com/telechargements/msceinf/msceinf.htm">MSCEInf</a>)
that helps with the process of creating a .INF file from a CAB file and extracting
files from the CAB with the true filenames. Using this tool, I created the .INF file,
edited it, and then recreated the CAB file using the .INF file and CABWIZ.EXE. MSCEinf’s
feature of extracting the true filename saves a lot of time, saving you the drudgery
of renaming the files, as specified in the _setup.xml file, by hand.  (When CABWIZ
creates the CAB, it converts the filenames to 8.3 names). 
</p>
        <p>
Step-by-Step guide: 
</p>
        <ul>
          <li>
Create dedicated destination directory. 
</li>
          <li>
Copy MSCEInfEn to this directory. 
</li>
          <li>
Create .INF file.  
<ul><li>
Start MSCEInfEn.EXE 
<ul><li>
Open the CAB file 
</li><li>
Click on the icon in upper left, ‘Save INF File rebuilt’ to save .INF file. 
</li></ul></li></ul></li>
          <li>
Extract files from CAB, using the true filenames 
<ul><li>
Using MSCEInfEn,  turn Off ‘Use Folders’ 
<ul><li>
Click 5<sup>th</sup> button from left ‘Extract Filenames’ (should see icon with red
X through it). 
</li></ul></li><li>
Using MSCEInfEn,  extract files 
<ul><li>
Click 4<sup>th</sup> button from left ‘Extract CAB files with original names in a
folder’. 
</li><li>
Click ‘Extract’ and select the destination directory. 
</li></ul></li></ul></li>
          <li>
At this point you should have the files of your theme / application and the .INF file
in the destination directory. 
</li>
          <li>
Modify .INF file 
<ul><li>
Open .INF file saved in Step 1 and add the following line below [CEStrings] 
<ul><li>
[CEDevice] 
<br />
BuildMax=0xE0000000 
</li></ul></li><li>
Save .INF file 
</li></ul></li>
          <li>
Rebuild CAB file. 
<ul><li>
Start a Command Line. (Start | Run | cmd) 
</li><li>
Change to the destination directory. 
</li><li>
Using CABWIZ.EXE recreate the cab file with the following command: 
<ul><li>
Cabwiz &lt;filename&gt;.inf 
</li><li>
You may see a warning regarding AddReg, this can be ignored. 
</li></ul></li></ul></li>
          <li>
Test the CAB file. 
</li>
        </ul>
        <p>
Thanks,
</p>
        <p>
Mike
</p>
      </body>
      <title>How to make changes to CAB file – without an .INF file</title>
      <guid isPermaLink="false">http://blog.mjfnet.com/Blog/PermaLink,guid,aead9817-4204-48c9-8a97-3990ae268092.aspx</guid>
      <link>http://blog.mjfnet.com/Blog/2009/12/30/HowToMakeChangesToCABFileWithoutAnINFFile.aspx</link>
      <pubDate>Wed, 30 Dec 2009 18:38:41 GMT</pubDate>
      <description>&lt;p&gt;
I was developing a few themes for Standard and Professional devices (using the &lt;a href="http://www.microsoft.com/windowsmobile/en-us/downloads/theme-generator.mspx"&gt;Windows
Phone Custom Theme Generator&lt;/a&gt; tool to get me started) and found that when installing
the CAB on Standard devices, I would get the following error:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://mjfnet.com/blog/content/binary/HowtomakechangestoCABfilewithout.INFfile_A979/BuildMaxError.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="The program you have installed may not display properly because it was designed for a previous version of Windows Mobile software." border="0" alt="The program you have installed may not display properly because it was designed for a previous version of Windows Mobile software." src="http://mjfnet.com/blog/content/binary/HowtomakechangestoCABfilewithout.INFfile_A979/BuildMaxError_thumb.png" width="176" height="220"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Normally to fix this error, you would edit the .INF file and add &lt;a href="http://msdn.microsoft.com/en-us/library/ee504659.aspx"&gt;BuildMax&lt;/a&gt;=0xE0000000
to the CEDevice section as follows (See &lt;a href="http://msdn.microsoft.com/en-us/library/ee504659.aspx"&gt;here&lt;/a&gt; for
explanation of BuildMax): 
&lt;p&gt;
[CEDevice]&lt;br&gt;
VersionMin = 3.0&lt;br&gt;
VersionMax = 100.0&lt;br&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/ee504659.aspx"&gt;&lt;strong&gt;BuildMax&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;=0xE0000000 &lt;/strong&gt; 
&lt;p&gt;
In this case, I did not have an .INF file since the CAB was generated by the Theme
Generator. Doing a Bing search, I found a great tool (Benoit Thonnart's &lt;a href="http://www.codeppc.com/telechargements/msceinf/msceinf.htm"&gt;MSCEInf&lt;/a&gt;)
that helps with the process of creating a .INF file from a CAB file and extracting
files from the CAB with the true filenames. Using this tool, I created the .INF file,
edited it, and then recreated the CAB file using the .INF file and CABWIZ.EXE. MSCEinf’s
feature of extracting the true filename saves a lot of time, saving you the drudgery
of renaming the files, as specified in the _setup.xml file, by hand.&amp;nbsp; (When CABWIZ
creates the CAB, it converts the filenames to 8.3 names). 
&lt;p&gt;
Step-by-Step guide: 
&lt;ul&gt;
&lt;li&gt;
Create dedicated destination directory. 
&lt;li&gt;
Copy MSCEInfEn to this directory. 
&lt;li&gt;
Create .INF file.&amp;nbsp; 
&lt;ul&gt;
&lt;li&gt;
Start MSCEInfEn.EXE 
&lt;ul&gt;
&lt;li&gt;
Open the CAB file 
&lt;li&gt;
Click on the icon in upper left, ‘Save INF File rebuilt’ to save .INF file. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Extract files from CAB, using the true filenames 
&lt;ul&gt;
&lt;li&gt;
Using MSCEInfEn,&amp;nbsp; turn Off ‘Use Folders’ 
&lt;ul&gt;
&lt;li&gt;
Click 5&lt;sup&gt;th&lt;/sup&gt; button from left ‘Extract Filenames’ (should see icon with red
X through it). 
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Using MSCEInfEn,&amp;nbsp; extract files 
&lt;ul&gt;
&lt;li&gt;
Click 4&lt;sup&gt;th&lt;/sup&gt; button from left ‘Extract CAB files with original names in a
folder’. 
&lt;li&gt;
Click ‘Extract’ and select the destination directory. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
At this point you should have the files of your theme / application and the .INF file
in the destination directory. 
&lt;li&gt;
Modify .INF file 
&lt;ul&gt;
&lt;li&gt;
Open .INF file saved in Step 1 and add the following line below [CEStrings] 
&lt;ul&gt;
&lt;li&gt;
[CEDevice] 
&lt;br&gt;
BuildMax=0xE0000000 
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Save .INF file 
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Rebuild CAB file. 
&lt;ul&gt;
&lt;li&gt;
Start a Command Line. (Start | Run | cmd) 
&lt;li&gt;
Change to the destination directory. 
&lt;li&gt;
Using CABWIZ.EXE recreate the cab file with the following command: 
&lt;ul&gt;
&lt;li&gt;
Cabwiz &amp;lt;filename&amp;gt;.inf 
&lt;li&gt;
You may see a warning regarding AddReg, this can be ignored. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Test the CAB file. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Thanks,
&lt;/p&gt;
&lt;p&gt;
Mike
&lt;/p&gt;</description>
      <comments>http://blog.mjfnet.com/Blog/CommentView,guid,aead9817-4204-48c9-8a97-3990ae268092.aspx</comments>
      <category>Setup</category>
      <category>Themes</category>
      <category>Tools</category>
      <category>Windows Mobile</category>
    </item>
    <item>
      <trackback:ping>http://blog.mjfnet.com/Blog/Trackback.aspx?guid=1d50293c-60e5-4fd7-90a7-b7d158756f5f</trackback:ping>
      <pingback:server>http://blog.mjfnet.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mjfnet.com/Blog/PermaLink,guid,1d50293c-60e5-4fd7-90a7-b7d158756f5f.aspx</pingback:target>
      <dc:creator>Mike Francis</dc:creator>
      <wfw:comment>http://blog.mjfnet.com/Blog/CommentView,guid,1d50293c-60e5-4fd7-90a7-b7d158756f5f.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mjfnet.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1d50293c-60e5-4fd7-90a7-b7d158756f5f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I've been asked which registry editors
I use, and I thought I'd share the list here. If you have a favorite, please let me
know in the comments. <script type="text/javascript" src="http://feeds.delicious.com/v2/js/mjfusa/windowsmobile%20Registry%20free?&amp;sort=alpha&amp;title=Free&amp;bullet=%e2%80%A2"></script><p><script type="text/javascript" src="http://feeds.delicious.com/v2/js/mjfusa/windowsmobile%20Registry%20$?&amp;sort=alpha&amp;title=Buy&amp;bullet=%e2%80%A2"></script></p><p></p><p></p><p>
Thanks, 
</p><p>
Mike 
</p></body>
      <title>Windows Mobile: On Device Registry Editors</title>
      <guid isPermaLink="false">http://blog.mjfnet.com/Blog/PermaLink,guid,1d50293c-60e5-4fd7-90a7-b7d158756f5f.aspx</guid>
      <link>http://blog.mjfnet.com/Blog/2009/11/18/WindowsMobileOnDeviceRegistryEditors.aspx</link>
      <pubDate>Wed, 18 Nov 2009 18:51:48 GMT</pubDate>
      <description>I've been asked which registry editors I use, and I thought I'd share the list here. If you have a favorite, please let me know in the comments. &lt;script type="text/javascript" src="http://feeds.delicious.com/v2/js/mjfusa/windowsmobile%20Registry%20free?&amp;amp;sort=alpha&amp;amp;title=Free&amp;amp;bullet=%e2%80%A2"&gt;&lt;/script&gt;
&lt;p&gt;
&lt;script type="text/javascript" src="http://feeds.delicious.com/v2/js/mjfusa/windowsmobile%20Registry%20$?&amp;amp;sort=alpha&amp;amp;title=Buy&amp;amp;bullet=%e2%80%A2"&gt;&lt;/script&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Thanks, 
&lt;/p&gt;
&lt;p&gt;
Mike 
&lt;/p&gt;</description>
      <comments>http://blog.mjfnet.com/Blog/CommentView,guid,1d50293c-60e5-4fd7-90a7-b7d158756f5f.aspx</comments>
      <category>Tools</category>
      <category>Windows Mobile</category>
    </item>
    <item>
      <trackback:ping>http://blog.mjfnet.com/Blog/Trackback.aspx?guid=fb694c4b-c88f-4b26-a3e7-cbe3dd0a57ac</trackback:ping>
      <pingback:server>http://blog.mjfnet.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mjfnet.com/Blog/PermaLink,guid,fb694c4b-c88f-4b26-a3e7-cbe3dd0a57ac.aspx</pingback:target>
      <dc:creator>Mike Francis</dc:creator>
      <wfw:comment>http://blog.mjfnet.com/Blog/CommentView,guid,fb694c4b-c88f-4b26-a3e7-cbe3dd0a57ac.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mjfnet.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=fb694c4b-c88f-4b26-a3e7-cbe3dd0a57ac</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve had a couple of clients that ran into a problem where their SMS Message interceptor
would fail to fire. (For an introduction to this pretty cool technology see <a href="http://msdn.microsoft.com/en-us/library/bb932385.aspx">here</a>.)
This was a hard to track down problem, because the interceptor would work on some
devices, and the emulator, but not on a handful of devices. Because this worked on
several devices, it seemed the code was without errors. 
</p>
        <p>
We resolved this by determining if any of the existing SMS interceptors were interfering
with this one. SMS Interceptors fire in a chain with each one handing off to the next.
That is they <i>should</i> hand-off. If you are implementing a native code interceptor
using <a href="http://msdn.microsoft.com/en-us/library/bb446125.aspx">IMailRuleClient</a>,
you can stop the message processing by setting the handled flag to <b><a href="http://msdn.microsoft.com/en-us/library/bb415362.aspx">MRC_HANDLED_DONTCONTINUE</a>. </b>This
prevents any further processing of the message. However, this flag should ONLY be
used if the message you are receiving is private to your application / interceptor.
If other interceptors could possibly process the message, you should set the handled
flag to <a href="http://msdn.microsoft.com/en-us/library/bb415362.aspx">MRC_HANDLED_CONTINUE</a> or <a href="http://msdn.microsoft.com/en-us/library/bb415362.aspx">MRC_NOTHANDLED</a>.
For managed code, if you would like the message to be available to other interceptor
applications, create the <strong><a href="http://msdn.microsoft.com/en-us/library/microsoft.windowsmobile.pocketoutlook.messageinterception.messageinterceptor.aspxmsdn.microsoft.com/en-us/library/microsoft.windowsmobile.pocketoutlook.message...">MessageInterceptor</a></strong>instance
passing the InterceptionAction.Notify enumeration value to the MessageInterceptor
constructor. 
</p>
        <p>
You can test for interfering interceptors by going to [HKEY_LOCAL_MACHINE\Software\Microsoft\Inbox\Svc\SMS\Rules]
and set each rule to ‘0’ until the problem goes away. The last rule you change to
‘0’ before the problem goes away will be the problematic rule. Note that you need
to soft reset the device after changing the registry key. 
</p>
        <p>
For example:
</p>
        <div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">[HKEY_LOCAL_MACHINE\Software\Microsoft\Inbox\Svc\SMS\Rules]</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">"{27E9801F-330B-4c6a-A7BF-A670D8C53C5D}"=dword:00000001</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">"{E85FD9C3-4F5E-4c75-8C21-0F850274DEF5}"=dword:00000001 <span style="color: #0000ff">&lt;</span>-
Change to 0 to test</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
Once you have located the problematic rule, you can get more information on it (for
example, the DLL name) by searching for the GUID underneath HKEY_CLASSES_ROOT\CLSID.
</p>
        <p>
  
</p>
        <p>
Thanks, 
</p>
        <p>
Mike 
</p>
      </body>
      <title>Windows Mobile: Problem with Message Interception failing</title>
      <guid isPermaLink="false">http://blog.mjfnet.com/Blog/PermaLink,guid,fb694c4b-c88f-4b26-a3e7-cbe3dd0a57ac.aspx</guid>
      <link>http://blog.mjfnet.com/Blog/2009/11/11/WindowsMobileProblemWithMessageInterceptionFailing.aspx</link>
      <pubDate>Wed, 11 Nov 2009 20:03:06 GMT</pubDate>
      <description>&lt;p&gt;
I’ve had a couple of clients that ran into a problem where their SMS Message interceptor
would fail to fire. (For an introduction to this pretty cool technology see &lt;a href="http://msdn.microsoft.com/en-us/library/bb932385.aspx"&gt;here&lt;/a&gt;.)
This was a hard to track down problem, because the interceptor would work on some
devices, and the emulator, but not on a handful of devices. Because this worked on
several devices, it seemed the code was without errors. 
&lt;p&gt;
We resolved this by determining if any of the existing SMS interceptors were interfering
with this one. SMS Interceptors fire in a chain with each one handing off to the next.
That is they &lt;i&gt;should&lt;/i&gt; hand-off. If you are implementing a native code interceptor
using &lt;a href="http://msdn.microsoft.com/en-us/library/bb446125.aspx"&gt;IMailRuleClient&lt;/a&gt;,
you can stop the message processing by setting the handled flag to &lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb415362.aspx"&gt;MRC_HANDLED_DONTCONTINUE&lt;/a&gt;. &lt;/b&gt;This
prevents any further processing of the message. However, this flag should ONLY be
used if the message you are receiving is private to your application / interceptor.
If other interceptors could possibly process the message, you should set the handled
flag to &lt;a href="http://msdn.microsoft.com/en-us/library/bb415362.aspx"&gt;MRC_HANDLED_CONTINUE&lt;/a&gt; or &lt;a href="http://msdn.microsoft.com/en-us/library/bb415362.aspx"&gt;MRC_NOTHANDLED&lt;/a&gt;.
For managed code, if you would like the message to be available to other interceptor
applications, create the &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.windowsmobile.pocketoutlook.messageinterception.messageinterceptor.aspxmsdn.microsoft.com/en-us/library/microsoft.windowsmobile.pocketoutlook.message..."&gt;MessageInterceptor&lt;/a&gt; &lt;/strong&gt;instance
passing the InterceptionAction.Notify enumeration value to the MessageInterceptor
constructor. 
&lt;p&gt;
You can test for interfering interceptors by going to [HKEY_LOCAL_MACHINE\Software\Microsoft\Inbox\Svc\SMS\Rules]
and set each rule to ‘0’ until the problem goes away. The last rule you change to
‘0’ before the problem goes away will be the problematic rule. Note that you need
to soft reset the device after changing the registry key. 
&lt;p&gt;
For example:
&lt;/p&gt;
&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;[HKEY_LOCAL_MACHINE\Software\Microsoft\Inbox\Svc\SMS\Rules]&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;"{27E9801F-330B-4c6a-A7BF-A670D8C53C5D}"=dword:00000001&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;"{E85FD9C3-4F5E-4c75-8C21-0F850274DEF5}"=dword:00000001 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;-
Change to 0 to test&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Once you have located the problematic rule, you can get more information on it (for
example, the DLL name) by searching for the GUID underneath HKEY_CLASSES_ROOT\CLSID.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Thanks, 
&lt;p&gt;Mike 
</description>
      <comments>http://blog.mjfnet.com/Blog/CommentView,guid,fb694c4b-c88f-4b26-a3e7-cbe3dd0a57ac.aspx</comments>
      <category>SMS</category>
      <category>Windows Mobile</category>
    </item>
    <item>
      <trackback:ping>http://blog.mjfnet.com/Blog/Trackback.aspx?guid=8cf7b1a6-d3ac-41b2-b2cc-f97504dceafb</trackback:ping>
      <pingback:server>http://blog.mjfnet.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mjfnet.com/Blog/PermaLink,guid,8cf7b1a6-d3ac-41b2-b2cc-f97504dceafb.aspx</pingback:target>
      <dc:creator>Mike Francis</dc:creator>
      <wfw:comment>http://blog.mjfnet.com/Blog/CommentView,guid,8cf7b1a6-d3ac-41b2-b2cc-f97504dceafb.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mjfnet.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=8cf7b1a6-d3ac-41b2-b2cc-f97504dceafb</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Some developers are reporting a problem with the PNG icon not displaying in the Start
screen.The usual symptom is that it does not show up immediately after installation
but is seen after a device reset. This problem occurs if following the <a href="http://windowsteamblog.com/blogs/windowsphone/archive/2009/08/05/using-custom-icons-in-windows-mobile-6-5.aspx#StaticSetup">static
cab</a> method from the blog post: <a href="http://windowsteamblog.com/blogs/windowsphone/archive/2009/08/05/using-custom-icons-in-windows-mobile-6-5.aspx">Using
Custom Icons in Windows Mobile 6.5</a>. I can reproduce this pretty consistently by
installing again after initially installing. (During this process the first installation
is uninstalled.) The static method does not use a setup DLL, but instead uses CAB
file directives that are easily specified using Visual Studio to define the installation
destination, files to be installed, the program shortcut, and any necessary registry
keys. 
</p>
        <p>
So why is this happening?
</p>
        <p>
For the PNG file to be displayed, the following sequence must take place, the next
step dependant on the next:
</p>
        <ol>
          <li>
Copy the PNG File to the destination directory 
</li>
          <li>
Create the registry key pointing to the PNG file 
</li>
          <li>
Create the program shortcut 
</li>
        </ol>
        <p>
When the shortcut is created the shell will:
</p>
        <ol>
          <li>
Use the shortcut (.lnk) file specified in step 3 above, and look up the registry key
specified in step 2 above. The registry key needs to exist for this step to succeed. 
</li>
          <li>
Open the PNG file, based on the registry key, and cache the Start screen icon. 
</li>
          <li>
If you look at the _setup.xml that is included CAB file, you can see the order of
events: 
</li>
        </ol>
        <div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum1"> 1:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="%CE11%"</span>
              <span style="color: #ff0000">translation</span>
              <span style="color: #0000ff">="install"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum2"> 2:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="MakeDir"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum3"> 3:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="SMS
Intercept.lnk"</span>
              <span style="color: #ff0000">translation</span>
              <span style="color: #0000ff">="install"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum4"> 4:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="Shortcut"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum5"> 5:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">parm</span>
              <span style="color: #ff0000">name</span>
              <span style="color: #0000ff">="Source"</span>
              <span style="color: #ff0000">value</span>
              <span style="color: #0000ff">="%InstallDir%\sms
Intercept.exe"</span>
              <span style="color: #ff0000">translation</span>
              <span style="color: #0000ff">="install"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum6"> 6:</span> ...</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum7"> 7:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="Registry"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum8"> 8:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="HKLM\Security\Shell\StartInfo\Start\SMS
Intercept.lnk"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum9"> 9:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">parm</span>
              <span style="color: #ff0000">name</span>
              <span style="color: #0000ff">="Icon"</span>
              <span style="color: #ff0000">value</span>
              <span style="color: #0000ff">="%InstallDir%\AppIcon.png"</span>
              <span style="color: #ff0000">datatype</span>
              <span style="color: #0000ff">="string"</span>
              <span style="color: #ff0000">translation</span>
              <span style="color: #0000ff">="install"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum10"> 10:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
        </p>
        <p>
Note that the instructions to create the shortcut appear <em>sooner</em> in the file
than those for the creation of the registry key. In most cases, the timing is such
that despite this order, the registry key is in place by the time the shortcut cut
is actually created. If the registry key pointing to the location of the PNG file
does not exist when the shortcut is created, the PNG icon will not be created.
</p>
        <p>
Unfortunately the order of these events cannot be changed in the Visual Studio project
or by reordering the directives in the .INF file. 
</p>
        <p>
The workaround is to append the XML for the shortcut creation to the CAB file. This
will ensure that the shortcut creation is the last instruction to be processed. You
can do this by following these steps:
</p>
        <ol>
          <li>
Remove the shortcut directive from your Smart Device CAB file project in Visual Studio. 
</li>
          <li start="3">
Modify the following XML (lines 4 and 6) to match your application: 
</li>
        </ol>
        <p>
        </p>
        <p>
        </p>
        <div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum1"> 1:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="FileOperation"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum2"> 2:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="%CE11%"</span>
              <span style="color: #ff0000">translation</span>
              <span style="color: #0000ff">="install"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum3"> 3:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="MakeDir"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum4"> 4:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="SMS
Intercept.lnk"</span>
              <span style="color: #ff0000">translation</span>
              <span style="color: #0000ff">="install"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum5"> 5:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="Shortcut"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum6"> 6:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">parm</span>
              <span style="color: #ff0000">name</span>
              <span style="color: #0000ff">="Source"</span>
              <span style="color: #ff0000">value</span>
              <span style="color: #0000ff">="%InstallDir%\sms
Intercept.exe"</span>
              <span style="color: #ff0000">translation</span>
              <span style="color: #0000ff">="install"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum7"> 7:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum8"> 8:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum9"> 9:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #606060" id="lnum10"> 10:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">characteristic</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
        </p>
        <ol>
          <li>
Save this to a file: shortcut.xml 
</li>
          <li>
Get the command line used by CABWIZ to build your CAB file. We are going to use this
to build a Post Build step. 
<ol><li>
Build your CAB file project. 
</li><li>
Open the Output window in Visual Studio and you should see something like: 
</li></ol></li>
        </ol>
        <p>
          <font size="1" face="Courier New">Building file 'C:\Projects\sms Intercept\sms Intercept\sms
Intercept\CAB Static\Static CAB\Debug\StaticCAB.cab'... </font>
        </p>
        <p>
          <font size="1" face="Courier New">"C:\Program Files\Microsoft Visual Studio 9.0\smartdevices\sdk\sdktools\cabwiz.exe" 
<br />
     "C:\Projects\sms Intercept\sms Intercept\sms Intercept\CAB
Static\Static CAB\Debug\StaticCAB.inf" 
<br />
     /dest "C:\Projects\sms Intercept\sms Intercept\sms Intercept\CAB
Static\Static CAB\Debug\" 
<br />
     /err CabWiz.log</font>
        </p>
        <ol>
          <li value="3">
Modify your Visual Studio main application project, to include a post build event.
(Project | Properties | Build Event) (Ideally we would do this as part of building
the CAB file, but Smart Device CAB projects do not include pre or post build events.) 
<ol><li>
Paste in the command line with the switch (/postxml) to add the shortcut.xml file
into the Post Build event command line: 
<p><font size="1" face="Courier New">"C:\Program Files\Microsoft Visual Studio 9.0\smartdevices\sdk\sdktools\cabwiz.exe" 
<br />
     "C:\Projects\sms Intercept\sms Intercept\sms Intercept\CAB
Static\Static CAB\Debug\StaticCAB.inf" 
<br />
     /postxml "C:\Projects\sms Intercept\sms Intercept\sms Intercept\CAB
Static\Static CAB\Shortcut.XML"<br />
     </font><font size="1" face="Courier New">/dest "C:\Projects\sms
Intercept\sms Intercept\sms Intercept\CAB Static\Static CAB\Debug\" 
<br />
     /err CabWiz.log</font></p></li></ol></li>
          <li>
Now when you build the main project, your CAB file will also be built, with instructions
in the XML in the correct order.</li>
        </ol>
        <p>
The static cab project in the PNG Start screen sample with the above implemented can
be found <a href="http://windowsteamblog.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowsphone/sms%20intercept.zip">here</a>.
</p>
        <p>
I realize this is not the cleanest solution – but it will resolve the problem of the
PNG icon sometimes not being displayed if using the static CAB deployment method.
At least, you still don’t have to write / maintain any C++ code to support the PNG
icon.
</p>
        <p>
Enjoy-
</p>
        <p>
Mike
</p>
      </body>
      <title>Windows Mobile 6.5 Start Screen PNG Icon Display problem</title>
      <guid isPermaLink="false">http://blog.mjfnet.com/Blog/PermaLink,guid,8cf7b1a6-d3ac-41b2-b2cc-f97504dceafb.aspx</guid>
      <link>http://blog.mjfnet.com/Blog/2009/11/06/WindowsMobile65StartScreenPNGIconDisplayProblem.aspx</link>
      <pubDate>Fri, 06 Nov 2009 02:30:44 GMT</pubDate>
      <description>&lt;p&gt;
Some developers are reporting a problem with the PNG icon not displaying in the Start
screen.The usual symptom is that it does not show up immediately after installation
but is seen after a device reset. This problem occurs if following the &lt;a href="http://windowsteamblog.com/blogs/windowsphone/archive/2009/08/05/using-custom-icons-in-windows-mobile-6-5.aspx#StaticSetup"&gt;static
cab&lt;/a&gt; method from the blog post: &lt;a href="http://windowsteamblog.com/blogs/windowsphone/archive/2009/08/05/using-custom-icons-in-windows-mobile-6-5.aspx"&gt;Using
Custom Icons in Windows Mobile 6.5&lt;/a&gt;. I can reproduce this pretty consistently by
installing again after initially installing. (During this process the first installation
is uninstalled.) The static method does not use a setup DLL, but instead uses CAB
file directives that are easily specified using Visual Studio to define the installation
destination, files to be installed, the program shortcut, and any necessary registry
keys. 
&lt;/p&gt;
&lt;p&gt;
So why is this happening?
&lt;/p&gt;
&lt;p&gt;
For the PNG file to be displayed, the following sequence must take place, the next
step dependant on the next:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Copy the PNG File to the destination directory 
&lt;li&gt;
Create the registry key pointing to the PNG file 
&lt;li&gt;
Create the program shortcut 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
When the shortcut is created the shell will:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Use the shortcut (.lnk) file specified in step 3 above, and look up the registry key
specified in step 2 above. The registry key needs to exist for this step to succeed. 
&lt;li&gt;
Open the PNG file, based on the registry key, and cache the Start screen icon. 
&lt;li&gt;
If you look at the _setup.xml that is included CAB file, you can see the order of
events: 
&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="%CE11%"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;translation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="install"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="MakeDir"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="SMS
Intercept.lnk"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;translation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="install"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Shortcut"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;parm&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Source"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="%InstallDir%\sms
Intercept.exe"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;translation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="install"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt; 6:&lt;/span&gt; ...&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Registry"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="HKLM\Security\Shell\StartInfo\Start\SMS
Intercept.lnk"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;parm&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Icon"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="%InstallDir%\AppIcon.png"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;datatype&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="string"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;translation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="install"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt; 10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Note that the instructions to create the shortcut appear &lt;em&gt;sooner&lt;/em&gt; in the file
than those for the creation of the registry key. In most cases, the timing is such
that despite this order, the registry key is in place by the time the shortcut cut
is actually created. If the registry key pointing to the location of the PNG file
does not exist when the shortcut is created, the PNG icon will not be created.
&lt;/p&gt;
&lt;p&gt;
Unfortunately the order of these events cannot be changed in the Visual Studio project
or by reordering the directives in the .INF file. 
&lt;/p&gt;
&lt;p&gt;
The workaround is to append the XML for the shortcut creation to the CAB file. This
will ensure that the shortcut creation is the last instruction to be processed. You
can do this by following these steps:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Remove the shortcut directive from your Smart Device CAB file project in Visual Studio. 
&lt;li start="3"&gt;
Modify the following XML (lines 4 and 6) to match your application: 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="FileOperation"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="%CE11%"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;translation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="install"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="MakeDir"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="SMS
Intercept.lnk"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;translation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="install"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Shortcut"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;parm&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Source"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="%InstallDir%\sms
Intercept.exe"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;translation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="install"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt; 10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;characteristic&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Save this to a file: shortcut.xml 
&lt;li&gt;
Get the command line used by CABWIZ to build your CAB file. We are going to use this
to build a Post Build step. 
&lt;ol&gt;
&lt;li&gt;
Build your CAB file project. 
&lt;li&gt;
Open the Output window in Visual Studio and you should see something like: 
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;font size="1" face="Courier New"&gt;Building file 'C:\Projects\sms Intercept\sms Intercept\sms
Intercept\CAB Static\Static CAB\Debug\StaticCAB.cab'... &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="1" face="Courier New"&gt;"C:\Program Files\Microsoft Visual Studio 9.0\smartdevices\sdk\sdktools\cabwiz.exe" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "C:\Projects\sms Intercept\sms Intercept\sms Intercept\CAB
Static\Static CAB\Debug\StaticCAB.inf" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dest "C:\Projects\sms Intercept\sms Intercept\sms Intercept\CAB
Static\Static CAB\Debug\" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /err CabWiz.log&lt;/font&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li value="3"&gt;
Modify your Visual Studio main application project, to include a post build event.
(Project | Properties | Build Event) (Ideally we would do this as part of building
the CAB file, but Smart Device CAB projects do not include pre or post build events.) 
&lt;ol&gt;
&lt;li&gt;
Paste in the command line with the switch (/postxml) to add the shortcut.xml file
into the Post Build event command line: 
&lt;p&gt;
&lt;font size="1" face="Courier New"&gt;"C:\Program Files\Microsoft Visual Studio 9.0\smartdevices\sdk\sdktools\cabwiz.exe" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "C:\Projects\sms Intercept\sms Intercept\sms Intercept\CAB
Static\Static CAB\Debug\StaticCAB.inf" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /postxml "C:\Projects\sms Intercept\sms Intercept\sms Intercept\CAB
Static\Static CAB\Shortcut.XML"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size="1" face="Courier New"&gt;/dest "C:\Projects\sms
Intercept\sms Intercept\sms Intercept\CAB Static\Static CAB\Debug\" 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /err CabWiz.log&lt;/font&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Now when you build the main project, your CAB file will also be built, with instructions
in the XML in the correct order.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
The static cab project in the PNG Start screen sample with the above implemented can
be found &lt;a href="http://windowsteamblog.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/windowsphone/sms%20intercept.zip"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
I realize this is not the cleanest solution – but it will resolve the problem of the
PNG icon sometimes not being displayed if using the static CAB deployment method.
At least, you still don’t have to write / maintain any C++ code to support the PNG
icon.
&lt;/p&gt;
&lt;p&gt;
Enjoy-
&lt;/p&gt;
&lt;p&gt;
Mike
&lt;/p&gt;</description>
      <comments>http://blog.mjfnet.com/Blog/CommentView,guid,8cf7b1a6-d3ac-41b2-b2cc-f97504dceafb.aspx</comments>
      <category>6.5</category>
      <category>Icons</category>
      <category>Windows Marketplace</category>
      <category>Windows Mobile</category>
    </item>
    <item>
      <trackback:ping>http://blog.mjfnet.com/Blog/Trackback.aspx?guid=69c9d0d5-780e-4964-b121-ca43e9dd20fc</trackback:ping>
      <pingback:server>http://blog.mjfnet.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mjfnet.com/Blog/PermaLink,guid,69c9d0d5-780e-4964-b121-ca43e9dd20fc.aspx</pingback:target>
      <dc:creator>Mike Francis</dc:creator>
      <wfw:comment>http://blog.mjfnet.com/Blog/CommentView,guid,69c9d0d5-780e-4964-b121-ca43e9dd20fc.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mjfnet.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=69c9d0d5-780e-4964-b121-ca43e9dd20fc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A new release of the <a href="https://developer.windowsmobile.com/resources/en-US/Application%20Submission%20Guidelines.pdf">Windows
Marketplace for Mobile requirements</a> went live today. Many developers should be
happy with change in the PNG Start screen icon requirements. Prior to today, you were
required to include three PNG files (one for each possible DPI) in your installation
CAB file. Today, this requirement is one (90x90) icon.
</p>
        <p>
The three icon requirement, necessitated a <a href="http://msdn.microsoft.com/en-us/library/aa924308.aspx" target="_blank">setup
DLL</a> to dynamically copy the appropriate PNG according to the device DPI. Now the
setup is much easier – only requiring CAB file definitions and no C++ code.  
</p>
        <p>
For more information see the following updated blog post: <a title="Using Custom Icons in Windows Mobile 6.5" href="http://windowsteamblog.com/blogs/windowsphone/archive/2009/08/05/using-custom-icons-in-windows-mobile-6-5.aspx">Using
Custom Icons in Windows Mobile 6.5</a> and FAQ: <a title="http://windowsteamblog.com/blogs/windowsphone/pages/start-screen-png-icon-faq.aspx" href="http://windowsteamblog.com/blogs/windowsphone/pages/start-screen-png-icon-faq.aspx">Start
Screen PNG Icon FAQ</a>.
</p>
        <p>
Mike
</p>
      </body>
      <title>Start Screen Icons: Only one PNG file is now required</title>
      <guid isPermaLink="false">http://blog.mjfnet.com/Blog/PermaLink,guid,69c9d0d5-780e-4964-b121-ca43e9dd20fc.aspx</guid>
      <link>http://blog.mjfnet.com/Blog/2009/08/11/StartScreenIconsOnlyOnePNGFileIsNowRequired.aspx</link>
      <pubDate>Tue, 11 Aug 2009 19:06:07 GMT</pubDate>
      <description>&lt;p&gt;
A new release of the &lt;a href="https://developer.windowsmobile.com/resources/en-US/Application%20Submission%20Guidelines.pdf"&gt;Windows
Marketplace for Mobile requirements&lt;/a&gt; went live today. Many developers should be
happy with change in the PNG Start screen icon requirements. Prior to today, you were
required to include three PNG files (one for each possible DPI) in your installation
CAB file. Today, this requirement is one (90x90) icon.
&lt;/p&gt;
&lt;p&gt;
The three icon requirement, necessitated a &lt;a href="http://msdn.microsoft.com/en-us/library/aa924308.aspx" target="_blank"&gt;setup
DLL&lt;/a&gt; to dynamically copy the appropriate PNG according to the device DPI. Now the
setup is much easier – only requiring CAB file definitions and no C++ code.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
For more information see the following updated blog post: &lt;a title="Using Custom Icons in Windows Mobile 6.5" href="http://windowsteamblog.com/blogs/windowsphone/archive/2009/08/05/using-custom-icons-in-windows-mobile-6-5.aspx"&gt;Using
Custom Icons in Windows Mobile 6.5&lt;/a&gt; and FAQ: &lt;a title="http://windowsteamblog.com/blogs/windowsphone/pages/start-screen-png-icon-faq.aspx" href="http://windowsteamblog.com/blogs/windowsphone/pages/start-screen-png-icon-faq.aspx"&gt;Start
Screen PNG Icon FAQ&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Mike
&lt;/p&gt;</description>
      <comments>http://blog.mjfnet.com/Blog/CommentView,guid,69c9d0d5-780e-4964-b121-ca43e9dd20fc.aspx</comments>
      <category>6.5</category>
      <category>Developer</category>
      <category>Icons</category>
      <category>Windows Marketplace</category>
      <category>Windows Mobile</category>
    </item>
    <item>
      <trackback:ping>http://blog.mjfnet.com/Blog/Trackback.aspx?guid=b7fe3d72-8e49-49c0-bd9e-4d455cfb5ede</trackback:ping>
      <pingback:server>http://blog.mjfnet.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mjfnet.com/Blog/PermaLink,guid,b7fe3d72-8e49-49c0-bd9e-4d455cfb5ede.aspx</pingback:target>
      <dc:creator>Mike Francis</dc:creator>
      <wfw:comment>http://blog.mjfnet.com/Blog/CommentView,guid,b7fe3d72-8e49-49c0-bd9e-4d455cfb5ede.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mjfnet.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b7fe3d72-8e49-49c0-bd9e-4d455cfb5ede</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you are new to Windows Mobile development or are interested in a consolidated list
of resources, check out the list I’ve put together here: <a title="http://blog.mjfnet.com/blog/FormatPage.aspx?path=content/projects/resources/resources.format.html" href="http://blog.mjfnet.com/blog/FormatPage.aspx?path=content/projects/resources/resources.format.html">Resources:
Windows Mobile Development</a>.
</p>
        <p>
This list was easy to put together using <a href="http://delicious.com/" target="_blank">Delicious</a><a href="http://delicious.com/help/linkrolls" target="_blank">linkrolls</a> (mmmm
linkrolls…). If you have Windows Mobile links to recommend, please <a href="http://delicious.com/network?add=mjfusa">add
me to your Delicious network</a>. I use the tag: windowsmobile.
</p>
        <p>
Mike
</p>
      </body>
      <title>Getting Started with Windows Mobile Development: Resources.</title>
      <guid isPermaLink="false">http://blog.mjfnet.com/Blog/PermaLink,guid,b7fe3d72-8e49-49c0-bd9e-4d455cfb5ede.aspx</guid>
      <link>http://blog.mjfnet.com/Blog/2009/08/09/GettingStartedWithWindowsMobileDevelopmentResources.aspx</link>
      <pubDate>Sun, 09 Aug 2009 18:20:09 GMT</pubDate>
      <description>&lt;p&gt;
If you are new to Windows Mobile development or are interested in a consolidated list
of resources, check out the list I’ve put together here: &lt;a title="http://blog.mjfnet.com/blog/FormatPage.aspx?path=content/projects/resources/resources.format.html" href="http://blog.mjfnet.com/blog/FormatPage.aspx?path=content/projects/resources/resources.format.html"&gt;Resources:
Windows Mobile Development&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This list was easy to put together using &lt;a href="http://delicious.com/" target="_blank"&gt;Delicious&lt;/a&gt; &lt;a href="http://delicious.com/help/linkrolls" target="_blank"&gt;linkrolls&lt;/a&gt; (mmmm
linkrolls…). If you have Windows Mobile links to recommend, please &lt;a href="http://delicious.com/network?add=mjfusa"&gt;add
me to your Delicious network&lt;/a&gt;. I use the tag: windowsmobile.
&lt;/p&gt;
&lt;p&gt;
Mike
&lt;/p&gt;</description>
      <comments>http://blog.mjfnet.com/Blog/CommentView,guid,b7fe3d72-8e49-49c0-bd9e-4d455cfb5ede.aspx</comments>
      <category>Resources</category>
      <category>Windows Mobile</category>
    </item>
  </channel>
</rss>