Windows 7 Forums
Welcome to Windows 7 Forums. Our forum is dedicated to helping you find support and solutions for any problems regarding your Windows 7 PC be it Dell, HP, Acer, Asus or a custom build. We also provide an extensive Windows 7 tutorial section that covers a wide range of tips and tricks.


Windows 7: Windows 7 E Best Practices for ISVs


15 Jul 2009   #1

Windows 7 Professional 64-bit
 
 
Windows 7 E Best Practices for ISVs

Quote:
I asked Giorgio Sardo, to write about the E editions for Windows 7 and the changes developers need to be aware of. Since the E edition for Windows 7 will ship without Internet Explorer 8. Giorgio is the Technical Evangelist working on IE and other web technologies.
Yochay

In a previous post, we explained how Microsoft is working to fulfill our legal obligations in Europe for Windows 7. In the meantime, we received some questions about what the E editions of Windows 7 will mean for ISVs and developers.

I took the most common questions and posed them to Arik Cohen, a Program Manager who is working on the E editions of Windows 7. If you have other questions about how this could affect your applications, please add your comments to the post to let us know and we’ll work to get your questions answered.

Q: What are the differences between standard editions of Windows 7 and E editions of Windows 7?
A: The only functional difference is that the Internet Explorer 8 component is not available. This is the same component that your users can turn off in the “Turn Windows features on and off” control panel in the Windows 7 RC build. The Internet Web Platform components (for example, WebOC) are still installed and available on all editions of Windows 7, since they are part of the Windows core.



Q: How should I test my application to ensure that it will work without IE?
A: To get the same functional behavior as a clean install of the E editions of Windows 7, go to “Turn Windows features on and off” dialog and uncheck Internet Explorer 8. We recommend testing your application both without a browser installed and with a browser installed (remember to set the installed browser as the default).

Q: What happens if I try to open a link without a browser installed?
A: You will get an “Application not found” exception.



Q: What general impacts of Windows 7 E editions have you seen on applications – especially ones that rely on the WebOC?
A: During our application compatibility testing, we’ve found that the vast majority of applications work on Windows 7 E editions without any changes. This includes applications that use many of the Internet Web Platform embedding methods (including WebBrowser control, hosting Trident, and HTML Help).

For instance, the following screenshot shows a .NET application that embeds the WebBrowser control running correctly on the E edition of Windows 7.



Q: My Windows application (WPF, Win Forms, Java, etc.) uses the Web Browser control. Is there any compatibility issue?
A: Everything should work as expected. However, we’ve seen some issues when applications depend directly on a specific browser. In particular, if while using the Web Browser control, you allow the application to open new windows that do not respect the user’s default browser choice, you may see some issues.

Q: What are the most common issues that you have found in your testing of applications? And what do you recommend ISVs do about them?




A: I have seen applications encounter three classes of issues on E editions of Windows 7:
  1. The application has hard coded dependencies to launch Internet Explorer when starting a browser to access the net. This is normally done by explicitly launching “iexplore.exe http://contoso.com” rather than running a ShellExecute on http://contoso.com. This generates an exception on a Windows 7 system without IE installed and enabled. There are times when this is intentional (for example, the Web site you are opening is only supported on IE), in which case you probably want to check for IE availability and provide a good error message to the user if it’s not available.

    We’ve seen this many times, especially in instances where the desired behavior is to open the application in the user’s default browser. You will need to switch to using the more generic case for these scenarios.
  2. The application allows launching a new window from within the WebBrowser control (for example, user accesses “Open in New Window” via the content menu, the page does a window.open() call, etc.). These links would always have opened in IE (regardless of the default browser on the system). If you designed your application to open in the default browser, you will need to provide a function that allows that.
    The recommended way to implement custom behavior when opening a new window is to use the NewWindow3 event. Sample code to hook this up in a C# .NET application would look like the following examples.
    In the form initialization code:
    webBrowser1.Navigate("about:blank");
    SHDocVw.WebBrowser web1 =
    (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;

    web1.NewWindow3 +=
    new SHDocVw.DWebBrowserEvents2_NewWindow3EventHandler(web1_NewWindow3);
    And the handler:
    void web1_NewWindow3(
    ref object ppDisp,
    ref bool Cancel,
    uint dwFlags,
    string bstrUrlContext,
    string bstrUrl )
    {
    Process.Start(bstrUrl);
    Cancel = true;
    }
  3. Applications don’t handle cases where no browser is installed on the system. We have seen applications that don’t handle this failure case when executing a URL. These tend to occur when users don’t have a default browser on their systems and then try to click a “go online for more information” link. We think this is going to be an extremely narrow case – even so, applications should handle these failures gracefully.
Q: How do I identify the user’s default browser?

A: Use the IApplicationAssociationRegistration::QueryCurrentDefault API to determine the registered browser by checking QueryCurrentDefault(“http”, AT_URLPROTOCOL, AL_EFFECTIVE, out progID).

Q: My app needs to open the browser. What are the best practices?
A: Run shellexecute() without hard-coding the name of the browser. Respect the user’s choice of default browser and gracefully handle cases where no browser is installed on the system.

Q: How can I check if I’m running in one of the E edition for Windows 7?
A: The GetProductInfo() API (introduced in Windows Vista) is how to tell exactly what edition of Windows you are running. The new constant values for the E editions of Windows 7 will be available in the Windows 7 SDK.

Example of code to determine if you are running on Home Premium vs. Ultimate:

[DllImport("Kernel32.dll")]
internal static extern bool GetProductInfo(
int osMajorVersion,
int osMinorVersion,
int spMajorVersion,
int spMinorVersion,
out uint edition);


private void CheckEdition()
{
uint edition;
GetProductInfo(6, 1, 0, 0, out edition);

switch ((ProductEditions)(edition))
{

case ProductEditions.HOMEPREMIUM :
case ProductEditions.HOMEPREMIUME:
case ProductEditions.HOMEPREMIUMN:

MessageBox.Show("Running on a Home Premium edition");
break;

case ProductEditions.ULTIMATE :
case ProductEditions.ULTIMATEE:
case ProductEditions.ULTIMATEN:
MessageBox.Show("Running on an Ultimate edition");
break;

}
}


Q: Are the E editions of Windows 7 going to be available on MSDN? If so, when?
A: Yes, both the E editions of Windows 7 and the standard editions will be available on MSDN at the same time.

Q: What about the Internet Explorer 8 Feature Pack for Windows 7 E? If and when will Microsoft release it to the public?
A: Yes, the Internet Explorer 8 Feature Pack for Windows 7 E will be available on the Microsoft Download Center soon after Windows 7 becomes generally available.

Giorgio Sardo
IE Technical Evangelist – Microsoft Corp


more...


My System SpecsSystem Spec
.

Reply

 Windows 7 E Best Practices for ISVs




Thread Tools



Similar help and support threads for2: Windows 7 E Best Practices for ISVs
Thread Forum
9 popular IT security practices that just don't work Security News
Solved Windows 7 AIO Best practices? Installation & Setup
Best Practices Documentation System Security
Best Software, Practices for copying DVDs Music, Pictures & Video
Solved What are proper audio practices? Sound & Audio
Best Practices and apps for defrag? Performance & Maintenance
Windows 7 E Best Practices for ISVs News

Our Sites

Site Links

About Us

Find Us

Windows 7 Forums is an independent web site and has not been authorized, sponsored, or otherwise approved by Microsoft Corporation. "Windows 7" and related materials are trademarks of Microsoft Corp.

Designer Media Ltd

All times are GMT -5. The time now is 08:05 PM.
Twitter Facebook Google+



Windows 7 Forums

Seven Forums Android App Seven Forums IOS App
  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33