610 likes | 782 Views
Windows 7. Make your application compatible. Paul van Wingerden Developer & Platform Group paulvanw@microsoft.com. Agenda. Analyzing and fixing Appverifier Virtualizing UAC properties/ TaskMan Demo Open VS2008, import, change code,run setup Show Compatibility Administrator Logo.
E N D
Windows 7 Make your application compatible Paul van Wingerden Developer & Platform Group paulvanw@microsoft.com
Agenda • Analyzing and fixing • Appverifier • Virtualizing UAC properties/TaskMan • Demo • Open VS2008, import, change code,run setup • Show Compatibility Administrator • Logo
Incompatible by Design • Version checking for a specific OS release • Structure of private data and data types • Patching OS calls • Using Registry Values instead of APIs • Redistributing Windows Updates • Device Drivers without hardware
Version Checking • Applications check Windows OS version and block themselves • If absolutely needed, check for >= OS version • Don’t block. • Present a warning message • Allow applications to continue • Check for existence of specific features if that is important • Windows 7 is version 6.1
Version Checks – Stop doing this LPCWSTR lpwzDll = NULL; OSVERSIONINFOW osvi; ZeroMemory(&osvi, sizeof(osvi)); osvi.dwOSVersionInfoSize = sizeof(osvi); if (!GetVersionEx(&osvi)) { return FALSE; } // Determine which dll to load if (osvi.dwMajorVersion >= 5 && osvi.dwMinorVersion >= 1) { lpwzDll = L"Apphelp.dll"; // XP and newer OS, use Apphelp } else if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0) { lpwzDll = L“SdbApiu.dll"; // Windows 2000, use sdbapiu } else { lpwzDll = L“SdbApi.dll"; // Older Version, use sdbapi } return LoadLibraryFromSystem32(lpwzDll);
Do This: HMODULE hMod; hMod = LoadLibraryFromSystem32(L"Apphelp.dll"); if (hMod) return hMod; hMod = LoadLibraryFromSystem32(L"sdbapiu.dll"); if (hMod) return hMod; hMod = LoadLibraryFromSystem32(L"sdbapi.dll"); if (hMod) return hMod;
“Contoso Contacts” Demo Fixing the application
ALPHA RELEASE WALK-THROUGH Windows 7 software logo TOOLKIT
Overview Alpha Release Objectives: Provide software publishers a quick and agile, automated, light weight command-line tool to verify their application’s compliance against the Windows 7 Software Logo requirements. Minimum System Requirements: • 1GHz 64bit (x64) Processor • 1gb Ram • 40gb hard drive with a minimum of 15gb free space • Clean, 64bit, Windows 7 installation
To Get Help c:\Program Files\Microsoft Logo Tool\logtest.exe /? Note: Logotest.exe must be run in a command window with administrative permissions
Step 1: Invoke LOGOTEST With /PREINSTALL Flag c:\Program Files\Microsoft Logo Tool\logotest.exe /preinstall /32bit or /64bit
Step 3: Invoke LOGOTEST with /POSTINSTALL Flag c:\Program Files\Microsoft Logo Tool\logotest.exe /postinstall
Step 4: Run Your App To Check/Verify Functionality* • * Note: Restart manager tests can report false positives with run-once and auto-updater modules. Best to disable any.
Step 5: Invoke LOGOTEST with /PREUNISTALL Flag c:\Program Files\Microsoft Logo Tool\logotest.exe /preuninstall
Step 7: Invoke LOGOTEST with /POSTUNINSTALL Flag c:\Program Files\Microsoft Logo Tool\logotest.exe /postuninstall
Step 8: Generate The XML Report c:\Program Files\Microsoft Logo Tool\logotest.exe /createreport <path\filename.xml>
Interpreting The Results Verify the result (pass/fail) for each requirement and their corresponding tests via the generated .xml log file created in step #8. Results as raw .xml results Results with applied .xsl stylesheet
Internet Explorer 8.0The Enterprise Ready Browser • The richest experience on the web • Web Slices • Accelerators • Visual Search • InPrivate Users Developers • Develop, test and debug without leaving the browser • Built-in developer toolbar and code profiler • Change Internet Explorer layout version on the fly • Compatibility and Interoperability IT Pros • Built for the Enterprise • Trust • Security • Supportability • Manageability
What’s New For Developer • CSS Improvements • CSS 2.1 compliance. • Limited CSS 3.0 compliance • Data URI Support • W3C's ARIA Support for Accessibility • Alternate style sheets support • DOM Core Improvements
What’s New For Developer • Improved HTML 4.01 support • jscript improvements • Big improvements in array and string operations in engine • Better memory improvement • Native support for JSON • Results in 10X performance gain while serialization/ 3X performance for deserialization
What’s New For Developer • AJAX Improvements • AJAX Navigation- back and forth navigation within AJAX • DOM Storage- simple store and retrieve key-value pairs • Network Connectivity Events • Number of connections per host increased from 2 to 6 • Enhanced XMLHTTPRequest with timeout support • Cross-domain request(XDR) and Cross-Domain Messaging(XDM)
Developing for Standards Mode • Author pages against latest web standards supported by IE 8 • Use a standards mode DOCTYPE • Example : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> • Make sure you use condition comments for legacy versions of IE • Version Vector or CSS 2.1 <!--[if gte IE 8]> <link rel="stylesheet" type="text/css"href="/stylesheets/standards.css" /> <![endif]--> <!--[if IE 7]> <link rel="stylesheet" type="text/css"href="/stylesheets/ie.css" /> <![endif]-->
IE History And Compatibility • IE5.5 and earlier • Very little standards supports. Most pages were coded for a browser- what we call the “quirks mode” • Microsoft released IE6 in 2001 • Very few pages were built for standards • DOCTYPE was used to differentiate standards pages and “quirks mode” pages • Microsoft released IE7 in 2006 • Improved standards compliance • Standards compliance was limited to “standards mode” to allow sites to opt-in for standards and minimize compatibility problem • IE8 • Most standards compliant browser • Supports ability to run in standards mode or compatibility mode (IE7 standards or quirks mode)
Standards Compliance • CSS 2.1 compliance • DOM Improvements • HTML Improvements • Acid2 Test compliance • This means • Data URI Support • Improved Namespace Support • And more CSS 2.1 HTML ACID 2
Today Developers Build Multiple Versions of Websites 1. Identify browser 2. Serve right page Page Built For IE7 Page Built To Standards Page Built For IE6 I’m Safari I’m Firefox I’m IE6 I’m IE7 7 6
Internet Explorer 8 Interoperability 1. Identify browser 2. Serve right page Page Built To Standards I’m Safari I’m Firefox I’m IE8 8
Compatibility Support Positive User Experience Undefined User Experience More Developer Resources Fewer developer resources 4. Rely on the Compatibility List 2. Implement the X-UA-Compatible Tag 1. Code to IE8 Standards 3. Display Intranet Sites in Compatibility Mode or rely on group policy settings 5. Rely on User Pressing Compat Button
IE8 Backwards Compatibility • IE8 ships with both IE8 and IE7 rendering engine • Ensures that applications render the same as in IE7 • Many ways to enable compatibility view • Per Site: Custom HTTP Header X-UA-Compatible: IE=EmulateIE7 • Per Page: <meta http-equiv=X-UA-Compatible” content=“IE=EmulateIE7”/> • User Opt-in • Compatibility View button • Group Policy • Standards mode vs. IE7 Emulation • Enable updated compatibility web site list from Microsoft • New feature in RC1
Compatibility Button • Allows user to toggle between IE8 mode and compatibility view mode through a simple click!
Compatibility Elements • Browser Compatibility determined by • Browser mode • Meta tag • Compatibility Mode effected by • Valid DOCTYPE • Meta tag set in page or site • Compatibility view button
Meta Tag Document Mode <meta http-equiv=X-UA-Compatible” content=“IE=XXX”/> • Reported by document.documentMode property. Content can have following values: • IE=5 - quirks mode – similar to IE5.5 rendering • IE=7 - IE7 standards (strict) mode • IE=8 – IE8 Standards mode • IE=EmulateIE7 - Emulate IE7 mode • Honors DOCTYPE - IE 7 Standards/quirks mode • Emulate IE8 mode [IE=EmulateIE8] • Honors DOCTYPE- IE 8 Standards/quirks mode • Removes application from compatibility list • IE=edge- uses latest standards of IE8 and future versions • Not recommended for production sites.
User Agent String • User Agent String • Browser’s identity as reported via HTTP traffic • navigator.userAgent property • Used mostly by server side script or code to emit appropriate document to client based on browser • Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; Tablet PC 2.0; InfoPath.2; .NET CLR 3.5.21022; MS-RTC LM 8; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
Version Vector • Version Vector • IE version number used in conditional comments • Used mostly by client side script in the browser • <!—[if gte IE 8]> • <p> IE8 and greater will receive this markup</p> • <![endif]>
Version Detection • Setting to emulate IE7 mode changes the rendering engine/ version vector • …but not the user agent string • Page logic may emit markup meant for IE8 • Even though emulate IE7 is turned on • End result is that “emulated” pages can still break
Loosely Coupled Internet Explorer • Architectural change to improve reliability, performance, and scalability • Internet explorer Process model has changed • Improves reliability of browser with broken toolbars and add-ins • Changes IE Window Hierarchy • Could effect compatibility of extensions- UI toolbar, BHO and ActiveX controls that rely on window position or IE process window hierarchy
Integrated Developer Tools Developer Toolbar • No additional install. Just press F12! • Eases development and troubleshooting • Allows real-time testing, editing, debugging: • CSS and HTML • Script performance • DOM • Enables developers to rapidly prototype, test, and deploy web sites
Improved Debugging Break Point Debugging Toolbar JavaScript Debugging Window JavaScript Debugging Tools
Demo Internet Explorer developer Tools
Call To Action • Short Term • Test a site in IE8 standards mode. • Check if the site works with compatibility button • Medium Term • Use developer tools to switch browser mode and test the different site behavior • Add the meta tag in pages/across site to get it working in previous rendering modes- • IE=EmulateIE7 is the preferred mode. Works for most sites. • Long Term • Use developer tools to identify IE8 standards compliance issues and fix them • Remove meta tag / compatibility setting and move the pages/site to IE8 standards mode
Windows Error Reporting Services Make your app more robust Paul van Wingerden paulvanw@microsoft.com Microsoft B.V.