none
Error when deploying project to Win CE emulator RRS feed

  • Question

  • Hello,

    I am working on a new project in VS2008. Whenever I try to deploy the solution to the Win CE emulator I get this error:

    "Post-deploy error 0x80004005 returned after calling '\Windows\wceload.exe /noui \Windows\NETCFv35.Messages.EN.cab'."

    I tried installing the cab manually on the emulator but that did nothing. I also tried putting the cab file in the Windows folder on the device (since it's specifically mentioning that path in the error) - still nothing. I have searched these forums and the Internet in general, and although I have seen similar errors mentioning that cab, I have found nothing that helped.

    Any help in resolving this error would be greatly appreciated!

    Monday, November 29, 2010 6:25 PM

Answers

  • Every Windows CE device is, potentially, different from every other Windows CE device.  Windows Mobile 5, for example, is a configuration of the operating system standardized by Microsoft so that all devices that claim to be Windows Mobile 5 devices have that minimum set of features.  When you're talking about Windows CE, there is no big brother watching who puts, say, DCOM in their device and who doesn't.  The SDK knows, so, if you target a device, you must use the right SDK or your DCOM code might compile fine (if you compile against a SDK that does have DCOM), but would crash spectacularly on the actual target device.  DON'T FORGET, ALSO, THAT UNLIKE WINDOWS MOBILE DEVICES, WINDOWS CE DEVICES DON'T ALL USE ARM PROCESSORS.  They might use x86, ARM, MIPS, SH4, etc.  Code compiled for one is garbage on another.

    The only way to have a real answer is to a) target a specific device or set of devices and separately compile against the SDK for each device, b) compile against an SDK that you are certain represents the least-common denominator for the devices that you will run on (and the processor that you will support), or c) ship the source code for your application and let the guy building his device, or compiling your application for a specific device, choose the SDK/processor/set of components.  If the source doesn't compile, he can't use it.

    Paul T.

    • Marked as answer by MarkYorkInMN Tuesday, November 30, 2010 8:17 PM
    Tuesday, November 30, 2010 8:01 PM

All replies

  • Is it possible that you don't have either 1) the .NET CF included on the device, or 2) don't have wceload.exe (CAB File Installer/Uninstaller), included on the device?  You should not, I think, need to put the CAB file on the device.  That's a debug-only install that VS should take care of.  If niether of those possible causes seem to fit, try typing that command line in the MS-DOS on the Windows CE device (I hope that's built into your device!), leaving out the "/noui" item.  That *might* tell you something more than you're finding out now.

    Paul T.

    Monday, November 29, 2010 8:58 PM
  • Have you include wceload (SYSGEN_WCELOAD variable) into your OS image ? Paolo.
    Tuesday, November 30, 2010 7:04 AM
  • 1) I did install the .NET cab mentioned in the error directly on the CE 5.0 emulator.

    2) I looked for and can't find wceload.exe on the CE emulator.

    3) I can't figure out how to get a command prompt on the CE emulator! (Three strikes!) If that's even possible. Typing "cmd" or "cmd.exe" in the Run... box on the emulator, I get a message saying it can't find cmd.


    f u cn rd ths u cn gt a gd jb n prgrmmng
    Tuesday, November 30, 2010 3:53 PM
  • How do I include anything into my OS image? Not sure what that is. I'm just creating an app in VS2008 and trying to run it in the CE 5.0 emulator.

    f u cn rd ths u cn gt a gd jb n prgrmmng
    Tuesday, November 30, 2010 3:55 PM
  • What do you mean "the CE 5.0 emulator"?  There's no single emulator that represents all CE5 devices.  CE is completely modular.  The device OEM can add/remove any of the features, including the .NET Compact Framework and any of the things that it.  If you're using the Standard SDK, stop doing that and use the SDK for the actual device you are targeting with your application.  That scheme for naming the SDK falsely gives the impression that targeting it means something.

    Paul T.

    Tuesday, November 30, 2010 4:21 PM
  • That should have been "and any of the things that it depends upon."...

    Paul T.

    Tuesday, November 30, 2010 4:21 PM
  • Okay. I'm used to writing programs for Windows Mobile (4 through 6), so based on your last post(s) developing for Win CE is completely different.

    I was tasked by my boss to put together a scaled-down version of our Windows Mobile app that will run in Win CE. We do not currently have any Win CE devices in the office. I was under the impression that I could just run a Win CE emulator to test my program as I work on it (as I have done with Windows Mobile).

    If this is not the case (and it sounds like it's not) I would greatly appreciate it if you could offer some suggestions on what direction I need to go in order to accomplish this.

    Thanks for your help!

    f u cn rd ths u cn gt a gd jb n prgrmmng
    Tuesday, November 30, 2010 6:46 PM
  • Every Windows CE device is, potentially, different from every other Windows CE device.  Windows Mobile 5, for example, is a configuration of the operating system standardized by Microsoft so that all devices that claim to be Windows Mobile 5 devices have that minimum set of features.  When you're talking about Windows CE, there is no big brother watching who puts, say, DCOM in their device and who doesn't.  The SDK knows, so, if you target a device, you must use the right SDK or your DCOM code might compile fine (if you compile against a SDK that does have DCOM), but would crash spectacularly on the actual target device.  DON'T FORGET, ALSO, THAT UNLIKE WINDOWS MOBILE DEVICES, WINDOWS CE DEVICES DON'T ALL USE ARM PROCESSORS.  They might use x86, ARM, MIPS, SH4, etc.  Code compiled for one is garbage on another.

    The only way to have a real answer is to a) target a specific device or set of devices and separately compile against the SDK for each device, b) compile against an SDK that you are certain represents the least-common denominator for the devices that you will run on (and the processor that you will support), or c) ship the source code for your application and let the guy building his device, or compiling your application for a specific device, choose the SDK/processor/set of components.  If the source doesn't compile, he can't use it.

    Paul T.

    • Marked as answer by MarkYorkInMN Tuesday, November 30, 2010 8:17 PM
    Tuesday, November 30, 2010 8:01 PM
  • That clarifies things. (And complicates them too, compared to what I was expecting going into this!)

     

    Thanks a lot for your help, Paul.


    f u cn rd ths u cn gt a gd jb n prgrmmng
    Tuesday, November 30, 2010 8:08 PM
  • No problem.  You know where to find us when other questions come up...

    Paul T.

    Wednesday, December 1, 2010 3:52 PM