MSMQ, Remote Display, and other ramblings…

Well, Steve is off to a blazing start this month and I have to admit there is a lot of news and rumors amid Microsoft and Mobile World Congress.  In between all the rumors and announcements, I ran across something a bit different.  It was a transcript and video of Bill G’s remarks at Harvard Commencement.  For those of you who know his history, you might understand why it’s an interesting speech for Bill to give.  I’m always struck to hear of the amazing stories that summarize one’s life journey.  What an interesting read this one is.  (I rambling a bit here and this really isn’t Windows Mobile, but I think it’s very cool).

Anyway, so one of my promises of the new year was to do some shorter posts and avoid my typical techno-manifestos.  Some simple tips here and there right?  I’m trying to make good on it…a couple of things I ran across this week:

MSMQ – It’s one of those technologies that was huge in the desktop/server space, but little known on Windows Mobile.  Push data into a queue and another server of process can deal with it.  With Windows Mobile 5.0, we added some cool support to allow sending over HTTP and building in some invisible logic to do it when a connection was active (so your app didn’t have to figure it out).  We tout SQL Server replication which is a vastly more powerful way to move data between a mobile device and a back-end, but MSMQ is still a simple option very few people think about– and ideal for some scenarios.

Anyway – someone asked me this week if there was a way to make the MSMQ service components automatically load during boot on WM5/6.  It turns out that the redistributable components on MSDN don’t have a valid signature on them which is required to for anything that loads as a service or a driver.  This is why you have to manually start the service.  All you need to do is sign the components (e.g. – msmqd.dll) with the priv developer cert and provision your device with the SDK certs and you should be good to go.  In an enterprise environment, you could use your own certs.  We’re working to get the MSDN package properly signed, but that’s a tip to help you out until it happens.

Want to learn more about MSMQ?  Check out these posts that go into more detail:
or a MSDN Webcast.

Is there a way to make the old Remote Display Power Toy work with Windows Mobile 5 & 6? 

Yes…The old Power Toy will still work, it’s just a bit clunky since the connectivity code is old and needs a little encouragement.  If you:
1) copy the applicable certdisp2.exe to your device
2) disconnect the device from ActiveSync or WMDC
3) execute asrdisp.exe -m on the desktop
4) start certdisp2.exe on the device and attempt to connect

Viola– connection and remote display….

Power Toys are basically cool little tools that someone inside Microsoft writes in their "spare time".  Someone says, "hey, that’s a great little tool.. maybe our developer community could benefit from it!".  Occasionally, we package them up and share them out (okay, I’m simplifying a little) but they are largely unsupported and they don’t have a maintenance budget behind them.  It still works, with a little love.

If you really want a great remote display tool, check out SOTI.  SOTI makes an amazing little product called Pocket Controller that has all these capabilities and more.


Comments (1)

  1. says:

    About msmq and autoload during boot.

    I signed msmq redistributable (msmq.arm.CAB) and all it’s contents with my own cert using cabsigntool from WM6 SDK. It seems that service is successfully started:

    I have "MSMQ service started" in "Application DataVolatileMSMQMQLOGFILE.TXT" and msmqd.dll is under services.exe (using Remote Process Viewer).

    BUT! visadm.exe Status command shows "Operation failed. Error code c00e000b". And I can’t install MSMQ manually with the command sequence:

    msmqadm.exe register install

    msmqadm.exe register

    msmqadm.exe enable binary

    msmqadm.exe start

    Starting the service manually works fine if I install normal redistributable and use ActivateDevice (or ActivateService) as described here

    So, how make service autostart during boot?