440 likes | 570 Views
Default Programs by Ed Averett. Default Programs Overview. Designed for apps that use common file types and protocols Browsers, media players, e-mail clients, photo viewers etc New application management feature Per user File, Protocol, MIME associations Adds transparency
E N D
Default Programs Overview Designed for apps that use common file types and protocols • Browsers, media players, e-mail clients, photo viewers etc New application management feature • Per user File, Protocol, MIME associations • Adds transparency • Better support for ISVs Super set of “Set Program Access and Defaults”
The Problem It is not easy for users to express choice • Users don’t have a consistent way to make choices • Some choices do not stick • Users don’t have a central place to look at all the options It is hard for applications to promote capabilities, and present choices to the user • Applications have to manage file associations by writing directly to the registry, which is a fragile and non-intuitive process • Applications all find different ways of promoting their capabilities, and also invent new UI for every version for setting user choice • Applications have no easy way to detect or correct file association information within the computer • It’s not clear how applications should treat per user defaults, vs machine defaults
Goals for Windows Vista Make it easy for a user to express choice and have it stick throughout their experience by • Providing a set of tools to allow users to make choice and view the information needed for them to express choice Make it easy for applications to present choices and capabilities to the user by providing • Better ISV support for promoting capabilities • APIs that makes setting choices more reliable • Reusable UI components that are consistent and provide low cost solutions for ISVs
4 Microsoft-provided Shortcuts 4 OEM-provided Shortcuts
D:\Users\edaver\Pictures\layout\lay 4 Microsoft-provided Shortcuts 4 OEM-provided Shortcuts
What is Default Programs? Default programs is made up of 4 Control Panels to help users manage choice • Set a default program • users go to restore\apply program defaults • File\Protocols associations CPL • users go to manage granular file\protocol associations • Auto play defaults CPL • users go to manage default actions for device insertion • Set Program Access and Defaults (SPAD) CPL • Administrators go to manage per Machine defaults and hide access to middleware
Digitally sign application to show URL Every application can register description text List of Registered applications No selection by default
What is “Set a File Association” This is the evolution of what was “folder options” in XP New Features: • Cleaner and friendlier UI • No default selection
What we want ISVs to do… • Register to be part of default programs • Sign Applications with embedded URL • Reuse consistent UI provided by Windows • Improve reliability and predictability of the system by using new APIs provided by Windows • Follow UI guidelines for when to present user choice
Why should an ISV register? Registration has the following benefits • Promotes better awareness of an applications capabilities • ISVs can leverage free promotional space to educate users • Opens up a set of common APIs that reduce development costs • ISVs don’t have to continually manipulate the registry to reclaim & detect defaults • Defaults actually stick when API is used (per user defaults) • Allows applications to reuse the default programs UI • ISVs no longer have to build custom UI that supports protocols and file types • ISVs can present users with a predictable UI on Windows Vista and future releases of Windows
What Windows is providing Schema definition HKLM\%APPLICATIONCAPABILITYPATH% ApplicationDescription = REG_EXPAND_SZ "@path\to\dll.dll,-resourceId” ApplicationName = REG_EXPAND "@path\to\dll.dll,-resourceId” \FileAssociations .file-extension = REG_SZ "file-extension-progid" \UrlAssociations url-scheme = REG_SZ "url-scheme-progid“ \MIMEAssociations <MIME Type> = REG_SZ “MIME-scheme-progid” \Startmenu (these are pointers to apps that have registered for canonicals in HKLM\software\clients) StartmenuInternet =”%app Name%” Mail =”%App Name%” HKLM\Software\RegisteredApplications unique-app-name = REG_SZ "%APPLICATIONCAPABILITYPATH%" Example (Contoso Web Browser) HKLM\software\Contoso\WebBrowser\Capabilities Descritpion =” The award-winning Web browser is better than ever. Search the internet in second and find anything you want. Use integrated tabs and new phishing detectors to enhance your internet experience .” \FileAssociations .htm = ContosoHTML .html = ContosoHTML .shtml = ContosoHTML .xht = ContosoHTML .xhtml = ContosoHTML \UrlAssociations http = Contoso.Url https = Contoso.Url ftp = Contoso.Url \Startmenu StartmenuInternet = “Contoso.exe” HKLM\software\RegisteredApplications Contoso.WebBrowser.1.06 = software\Contoso\WebBrowser\Capabilities • Schema to register for defaults: • All file associations, protocols, and MIME types used • A Description of what the application does
Public APIs A set of public APIs are available for apps to: • Restores all registered defaults • SetAppAsDefaultAll([in, string] LPCWSTR pszAppRegistryName); • Restore single registered default • SetAppAsDefault([in, string] LPCWSTR pszAppRegistryName,[in, string] LPCWSTR pszSet[in] ASSOCIATIONTYPE atSetType); • Query for the owner of a specific default • QueryCurrentDefault( [in, string] LPCWSTR pszQuery, [in] ASSOCIATIONTYPE atQueryType, [in] ASSOCIATIONLEVEL alQueryLevel, [out, string] LPWSTR* ppszAssociation); • Launch defaults UI for a specific app • LaunchAdvancedAssociationUI ([in, string] LPCWSTR pszAppRegName);
Guidelines for user experience Guidelines • Installations should effectively advertise an application to all users on the machine (Machine Defaults) • User choice should be only presented when the application is run (User Defaults) • Give each user the decision to decide how an app is part of their default experience • Set these associations using new public APIs • All apps that use common associations and protocols should register and re-use UI from default programs, • E.g. Browsers, Media players, Photo viewers, E-mail clients
What should an ISV do at install? Applications should continue to install like XP and also register with default programs: • Write binaries to disk (as in XP) • Write application information in HKLM (as in XP) • Claim machine level defaults (as in XP) • Register with default programs (*new) • Windows provides a schema to register • All file associations used • All protocols used • All MIME types used • A Description of what the application does
What should an ISV do at first-run Present a first-run experience for collecting user choice • This experience should be done per-user, not of per-machine • Recommended UI should contain 2 easy choices • Accept all the defaults • This claims all defaults via silent API (provided by Windows) • Customize defaults • Launches app specific File Associations view (reuses UI that Windows provides)
When defaults change…. When an app is no longer the default • An App can check at run-time to see if it is default • Windows provides a new API to do this reliably • Apps should NOT silently reclaim defaults but present the user with choice. The recommended UI should look like • Prompt the user that they are no longer the defaults and ask: • Do you want to keep things the way they are? • Do you want to make <app> your default • Tell me if <app> is not the default (checkbox)
Summary Default programs is designed to make it easy to express user choice Applications must opt in to use default programs • Apps need to register at install Default Programs gives ISVs and users better tools for managing user choice MSDN Documentation: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_new_vista/default_programs.asp Questions: email defprog@microsoft.com
4 Microsoft-provided Shortcuts 4 OEM-provided Shortcuts
4 Microsoft-provided Shortcuts 4 OEM-provided Shortcuts
4 Microsoft-provided Shortcuts 4 OEM-provided Shortcuts
D:\Users\edaver\Pictures\layout\lay 4 Microsoft-provided Shortcuts 4 OEM-provided Shortcuts