NAVmoble - the pocket-sized ERP
Optimized for Microsoft Dynamics NAV and Windows Mobile powered devices
Showing posts with label Kiosk. Show all posts
Showing posts with label Kiosk. Show all posts

Tuesday, June 26, 2007

Configuring Symbol MK1100 Micro-Kiosk


I had a project involving the development of a custom CF.NET application. The app was intended to be deployed on a number of Widnows CE 4.1 based devices from Symbol(MK1100). This device is a rather old model, however the customer had already the device on hold. These devices are custom - the vendor(Symbol in this case) decides what is this device like.
The file system in MK1100 uses a volatile memory. The device have no battery. It is plugged directly into the power supply circuit. This means that if someone unplug the device, all the executables, data and even the .NET CF will be lost and they should be deployed again. Fortunately, the device provides tools to automate the initial application deployment on boot. However, I spent a lot of time till getting the right path. I tried to find some best practices, articles or even forums discussions about the best way to deploy my app on device boot. Unfortunately I haven't found a complete guide.
It turns out that the device has a non-volatile memory that may be used to store files to live the cold boot. My first approach was to store and use the CAB, executables and data files from the non-volatile area. And that was a terrible approach, as it turned out later. The software and device behavior as a whole was unpredictable and unstable.
So my final approach was :
1. Placing all setup files(CF.NET including) into the non-volatile area.
It appears as a folder named \Application

2. Placing a file with .CPY extension in the non-volatile area. the file contains instructions for copying all the CAB files from the non-volatile area into the volatile area - e.g.\Program Files\MyApp. The .CPY files are read and executed on boot. The idea was to avoid execution of CABs from the non-volatile area.

3. Placing a .reg file in the non-volatile area.
This registry file contains device configuration information and it is read from the device on boot. The interesting part was to instruct the device that instead of launching the OS Shell, it had to launch the wceload.exe couple of times to install the .NET CF and other apps. At the it launches my custom app in kiosk mode.. Then it launches my app instead of the shell.The outcome was to have the device operating in kiosk mode...and the kiosk mode was easier on this device

On boot, the .CPY file forces the device to copy all the CABS from the non-volatile area into the volatile area. Then the .reg file forces the device to launch wceload to install all the CAB files from the non-volatile area. At the end the install the custom app is launched.

Related comments and advices are welcome!

Links
MK1100 Micro-Kiosk from Symbol
Kiosk mode in windows mobile
Window CE vs Windows Mobile

Tuesday, May 15, 2007

Kiosk mode in Windows Mobile

I had a number of questions after my talks during the MS Days 2007 in Sofia.
And there was a question that I failed to give a complete and detailed answer.So here comes the answer...
Before taking this path, take a break and think if the kiosk mode is actually needed for your app. Windows Mobile is designed as a general purpose OS, intended for personal usage. The kiosk mode app will prevent the users from using it as their personal device. You may want to check the Marcus Perryman's post for arguments about Kiosk Mode vs Deep Integration choices
Anyway, there are several options to have the app in kiosk mode over Windows Mobile:
1.Replacing the standard password prompt
One should create a DLL, export the PromptForPasswd function and than hacking the registry to use your custom password prompt. There are some side-effects and also this method may fail on some devices. So test it with a real hardware.
Check out this resource for details

2. Maximizing your application's main form
In general maximizing the app's main form will get you a kiosk-alike behaviour. However, the user may press the hardware buttons to get to another app. Some OS events (like inbound phone call)may pop up another app in front of yours . In other words this solution will not give you a complete kiosk mode.
Check out the newsgroups:
SHFullScreen
Full Screen on CF.NET

3.Replacing the standard shell
Check out this post for additional info about shells

4. Hiding the Windows Mobile task bar
This is not a complete solution, but a complementary technique.
Check out the following link for an example

5. Using third-party framework.
Check out the following ones:
Spb Kiosk Engine
PocketKiosk Builder


Links
Spb Kiosk Engine
PocketKiosk Builder
Hiding the taskbar
Prompt For password
Marcus Perryman on Kisok mode in Windows Mobile
Windows Embedded Blog on kiosk mode in Windows CE
Newsgroups on Fullscreen with SHFullScreen
Newsgroups on Full Screen/CF.NET
Kiosk mode on Pocket PC
Kiosk Pattern from Satter Ramblings
WM Shell replacement

Update
Check out this post for more resources as well