Web Apps as Native Tools on Windows Mobile 6.5

Windows Mobile 6.5 allowed web applications to run as standalone, native-wrapped tools primarily through its built-in W3C Widget runtime and custom native wrapper applications utilizing embedded web controls. By pairing the updated Internet Explorer Mobile 6 rendering engine with native shell environments, developers could package standard HTML, CSS, and JavaScript assets so they launched from the Start menu and operated like standard native Windows Mobile programs.

The W3C Widget Runtime

Windows Mobile 6.5 introduced native platform support for the W3C packaging format, known as Windows Mobile Widgets. These widgets served as the platform’s official, out-of-the-box framework for native-style web execution:

  • Packaging: Developers bundled web assets—HTML, CSS, JavaScript files, and images—into a single .zip archive, which was then renamed with a .wgt file extension.
  • Configuration: A mandatory config.xml file sat in the root directory, defining the application's metadata, display name, entry-point HTML document, icon, and security capabilities.
  • Execution: When launched from the Start menu, the operating system's internal widget host executed the code in a chromeless environment. This stripped away traditional browser chrome (the address bar, navigation buttons, and status icons), rendering the application full-screen.

Embedded WebBrowser Host Controls

Before widgets and alongside them, developers created standalone tools using compiled C++ (Win32) or C# (.NET Compact Framework) containers that hosted an embedded browser view:

  • The WebBrowser Control: Developers placed an instance of the WebBrowser control (IWebBrowser2 in C++ or System.Windows.Forms.WebBrowser in .NET Compact Framework) across the entire application form.
  • Local Resource Loading: Instead of pointing to an external web server, the native host loaded pages locally from the device's storage (file://\Program Files\AppName\index.html) or extracted them dynamically from compiled application resources.
  • Chromeless Presentation: The native window eliminated all native controls, menus, and soft-key bars unless specifically configured to emulate mobile navigation, resulting in a clean application canvas.

The Rendering Engine: Internet Explorer Mobile 6

The core engine driving these wrapped applications was based on the desktop Trident/MSHTML engine from Internet Explorer 6, adapted for mobile in the Windows Mobile 6.5 release:

  • Modernized Standards Support: It included an upgraded JScript engine, DOM Level 2 support, and basic AJAX capability (XMLHttpRequest), allowing offline client-side logic to communicate with remote web services without reloading pages.
  • Viewport Handling: The engine adapted desktop layout concepts to small resistive screens, allowing developers to set fixed viewports suited to typical Windows Mobile screen resolutions (QVGA, VGA, WVGA).

Native API Bridging

Pure web environments lacked access to the Windows CE hardware layer, requiring a bridge between JavaScript and native capabilities:

  • window.external Interoperability: In custom-wrapped C# or C++ shells, developers used the window.external object to expose native functions directly to the JavaScript context.
  • ActiveX Controls: Developers could write custom C++ COM/ActiveX controls, register them with the system, and instantiate them within JavaScript via new ActiveXObject(...). This provided access to hardware components like GPS, local file systems, device power states, SMS capabilities, and the notification manager.

Deployment and Installation

To match the native application lifecycle, wrapped web applications were packaged into standard Windows Mobile installation packages (.CAB files). The installer placed files into the device's file system, registered file associations, and created a shortcut (.lnk) in the Windows Start Menu, making the web application indistinguishable from a compiled C++ or .NET CF executable to the end user.