Your SlideShare is downloading. ×
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Taking_Your-Application_To_The_Next_Level - Windows 7
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Taking_Your-Application_To_The_Next_Level - Windows 7


Published on

Taking_Your-Application_To_The_Next_Level - Windows 7

Taking_Your-Application_To_The_Next_Level - Windows 7

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide
  • Welcome note
    Welcome to Windows® 7 Launch!
    My name is…
    And I am …
  • During today’s event we’ll focus on showing you how you can take advantage of the features in our newest Operating System, Windows® 7.
    Our goal is to show you the value in Windows 7, the power of the features to unlock new scenarios, enhanced existing ones, and provide our end users the best Windows experience.
    We’ve only got 3 session, and there are multiple Windows 7 features. The truth is that today’s 3 session only provide a glimpse into what Windows has to offer and we are far from covering everything that Windows 7 has to offer. We will however focus on features and opportunities that we think will best reward your time and effort.
    This is the first session in which you’ll soon see what it takes to build great Windows® 7 Applications.
    In this session we’ll talk about what it takes to build great Applications that look and feel like first class Windows® 7 Applications. That means ensuring that your Application is compatible with Windows 7, Optimizing your performance and look and feel, and also using some of the more compelling desktop features that Windows 7 has to offer like the Taskbar and Libraries. to make sure your application feels like a first class Win 7 citizen.
    The Second session talks about creating dynamic and adoptive UI using Windows 7 Location and Sensor platform as well as how to get the most out of your graphics cards.
    The last session talks about creating modern Applications using Windows® Ribbon and enhancing interactions with Multitouch.
  • Let’s review what it takes to build a great Windows 7 Application. What do YOU need to do in order to be able to say “Yes my Application is a first-class Windows 7 citizen”? Is there a check list? You bet!
    You need to do three things to ensure a smooth transition:
    First, you need to make sure your Application is compatible with Windows 7. There is no escape from this; it is essential that you make sure that your Application runs well on Windows 7, whether you are a managed or native developer. There is nothing worse for an end User than to be excited about the new Windows 7 Operating System just to discover that their favorite Application doesn’t perform properly. A bad User experience hurts everyone - which is why you have to make sure your Application installs and runs on all Windows 7 editions and supports both 32- and 64-bit builds.
    Second, after verifying that your Application can install and run on Windows 7 without any problems, it is time to become a good Windows 7 Citizen by stepping up and optimizing your Application’s User experiences and performance to its best while running on Windows 7. Do this by taking advantage of the great new features offered with Windows 7.
    These include new User interface innovations like the Taskbar and Libraries, to more fundamental features like Trigger Start Services or the new Troubleshooting platform. By optimizing your Application for Windows 7, you can make sure that your end user's experiences when running your Application on Windows 7 surpasses their expectations. Users will expect Applications to work properly with the Taskbar (just one example); but if your Application is not optimized for the new Windows 7 Taskbar experience, end Users might just notice that.
    This first two steps are what Users will expect from your Application, that is to install and run “properly” on Windows 7. The last step is where you really have a chance to differentiate yourself from the competition. You can really differentiate your Application by creating new and exciting User experiences. Windows 7 enables developers to create distinctive and intuitive Applications that significantly enhance discoverability, usability, and sheer enjoyment.
    New methods of desktop integration put Application functionality right at the user’s fingertips. New Touch APIs enable natural interactions through Multitouch and finger-panning gestures. Rapid advances in hardware and software technology are also driving higher-fidelity User experiences. Windows 7 brings these advances under developer control with new and flexible APIs that take full advantage of the technology, while making it even easier to develop compelling Applications.
    Windows 7 includes many new features that can make your Application shine, raising it above the competition. When you think about creating new and exciting User experiences, consider using one or more of the following features:
    • Windows® Sensor
    • Windows® Ribbon
    • Multitouch, which we are going to focus today.
    There are more features that we will not have time to talk about today, but are certainly worth mentioning like:
    Media Platform with technologies like DirectShow that provide the bases media support in Windows
    Search Federation
    Device Stage™ Integration
    And many more great Windows 7 features…
  • Changes made in Windows® Vista such as:
    Session 0 isolation
    Major version number change (move to NT 6.0)
    The point is that transitioning to Windows® Vista was hard partly because of the major breaking changes in the system and the compatibility challenges that arose. It wasn’t the only problem — there was also a change in the driver model which caused Users to be stuck without drivers for their hardware, and other issues. Through App Compat we have learned from Windows Vista that so many breaking changes in one box is probably not a good idea for Windows® 7.
    As harsh as Windows Vista breaking changes where, it was required update to make Windows Vista more secure and robust system. Windows 7 is based on these changes and take them one step forward providing superior performance and reliability. With that said we made hundreds of changes to Windows 7 underlying systems from Windows Vista. Most of these changes are the driving force behind Windows 7 great performance and reliability.
  • But, coming from Windows® Vista we learned that developers, YOU, wish to maintain as much consistency between Operating Systems as possible and to keep to a minimum the breaking changes. Therefore it is very important to note that Windows® 7 introduces very few breaking changes.
    And as a General guideline: If you’re compatible with Windows Vista, you’re probably compatible with Windows 7, with the exception of few very low-level APIs and few components that were removed in Windows 7.
    Anecdotal evidence to the strong desire of not breaking compatibility is the version number – Windows 7 has the version number 6.1, because it was so important to keep Applications compatible (some Applications do version checking of the major Operating System version and bail if they see something unfamiliar)
    There are very few breaking changes: Windows® Live Mail, High DPI, Internet Explorer® 8, no significant security or programming model breaking changes like in the Vista timeframe.
  • We will not cover App Compat in this session, but there are lots of tools and resources, among them is the App Compat Online Remediation site (DEMO), the App Compat landing page on TechNet (and the App Compat Cookbook), and there are also 6 hands-on labs walking you through diagnosing and fixing App Compat problems in the Windows® 7 Training Kit.
    DEMO For the App Compat Online Remediation site:
    [ Before the actual launch session, the presenter should check whether their current location has an App Compat lab and if so – show the site. ]
    Find a Windows 7 Event Near You
    Launch Internet Explorer® 8 -
    Now I’m going to show you a site that you can bookmark to keep up on the Windows® 7 Remediation events that are taking place around the world.  []. 
    Microsoft® is providing three primary options for you – all at no cost, including presentation-based seminars, scheduled workshops where you can sit alongside a Microsoft client developer engineer in a controlled environment to work on your code, and drop in ‘clinics’ where you can bring in your own machines and sit alongside those same engineers.  I promise you, once you leave such clinic, your app will run on Windows 7!
    [Additional information / text if needed]
    This is a unique opportunity for you to bring in your company's client Application, install it on pre-built Windows 7 machines, and spend a few hours alongside a Microsoft client expert. We will help to identify any potential blocking issues and suggest both remediation paths and architectural pattern improvements where appropriate. We highly suggest that you spend time viewing the 60-minute online Windows 7 Compatibility training at and review the Windows 7 Application Quality Cookbook prior to attending the workshop. This will ensure that we can maximize the value of your workshop experience.
  • [notes to self
    Animation - Start with just showing the title.
    Talk to introduce the topic ]
    Windows® 7 dramatically improves performance and power management so that you can create Applications that optimize the mobile experience or just better experience . As a result, your Applications will run faster on Windows® 7, consume less resources, be more visually appealing, and at the bottom line it will be easier to manage and create – which helps you be more productive.
    [Optimize = Become a Good Windows 7 Citizen]
    Windows 7 comes with a bunch of features that you can use to optimize your Application’s performance to make your Application run better on Windows 7 - by doing so you can drive higher end Users experience and high quality software that in return help the Operating System to be more stable, preferment, and secure Operating System that providing great User experience. Usually, this also means improved performance and reliability for your Application.
    Here are few examples of Windows features that are not too difficult to implement, but can drive a lot of value.
    Restart and recovery is a mechanism that makes Windows automatically restart your app into its previous state when the Operating System needs to reboot for a system update, or in case your app crash or hang.
    KTM is the mechanism that supports file system and registry transactions.
    Cancelable I/O and I/O prioritization are key to more responsive Applications, and especially for background operations.
    The revamped ETW offers high-performance instrumentation with up to 1,000,000 messages/sec (CHECK THIS STATISTIC) and various kinds of loggers and consumers
    Windows® Error Reporting is a built-in mechanism for reporting crash and hang information to Microsoft (can be customized to an internal share) and there are ways to add information to a WER report or to solicit it. WER information can be queried from the WinQual portal.
    Trigger-Start services offer background services a way to stay out of the system and improve its resource utilization when they are not needed, the system will start them up when a trigger occurs. We’ll see this shortly.
    There are also power efficiency improvements that make the system’s battery life longer, as well as diagnostic mechanisms and a couple of new APIs that we’ll see shortly.
    [note to speaker – because time constrains we will not show a slide on power, just talk about it here]
    Users want a “all day” battery life on their mobile PC
    Battery life is affected by CPU, disk, display and other factors, but CPU is the most significant and is the one whose energy utilization has been going up EXPONENTIALLY over the last couple of decades
    It’s impossible to build an Operating System that will last 9 hours of battery life without us fellow developers—the Operating System can bring us only this far
    Windows 7 gives us some tools but it’s eventually our responsibility:
    The Operating System itself uses less power
    Coalescing timers mean you can have multiple adjacent timers adjust themselves so that there are less invocations in a period of time (allowing for more sleep time)
    Power availability requests let an Application indicate exactly why it wants the system to stop from transitioning into a low power-state (e.g. Internet Explorer® is downloading a file, or you’re playing a movie in Windows® Media Player)
    Therefore, for Users to really enjoy long battery life, we all have to make better job at it, and Windows 7 offer great tools to support that.
  • Background services in Windows are a pain – the Operating System ships with a lot of them in the box, but ISVs add even more.
    Eventually background services decrease performance, increase power consumption, expand the attack surface and affect the system’s reliability.
    The goal should be – have background services run for as little time as possible and with the smallest footprint. To that end:
    Convert services to scheduled tasks
    Minimize the security privileges granted to a service (per-service SID, service privileges API etc.)
    Minimize the work services do on startup, shutdown and on idle
    The types of service startup evolved over the years:
    Windows® XP gives us a very Boolean choice.
    On Windows® Vista we have delayed auto-start for services that don’t want to delay logon.
    On Windows 7 we have trigger-start services, which means the service isn’t running when it has nothing to do!
    There are lots of available triggers, and if none suits you there’s always the custom ETW event trigger which means your service can be triggered by anything that can write to an ETW log (or the Event Log).
    The idea is to convert services to Trigger-Start services and make them stop themselves when their work is done. This is more similar to tasks than to traditional NT services.
  • Demo outline:
    (Still need to write WPF app, the C++/CLI backend is ready)
    Launch WPF control app and create the service
    Start the service normally
    Show it in Task Manager to see that it’s consuming system resources
    Right now the service polls for work every 5 seconds, consuming power etc.
    Insert disk on key (with preconfigured directory) and after a few seconds the files are copied around
    Stop the service
    Configure the service as Trigger-Start
    Show in Task Manager that the service isn’t even running
    Insert disk on key and notice that the service is started and then it shuts itself down when it has nothing to do
    Show the actual code behind
    The Trigger-Start registration
    The change of the service itself from polling to “startup — do it — shutdown” style
    Mention that it’s possible to register the service as trigger-start using the sc.exe command line utility
    The demo we just saw is a simple case, however you can think of other implementations
    If there is no network connectivity, why do you need to run the sync or update services?
    When you are not logged-in to the office domain, there is no reason for specific services to run.
    Large number of Windows® 7 services are Trigger-Start services, but not all of them. (Don’t be mislead—it’s still a small minority!)
    There is a long journey ahead of us…
  • Windows® has your back…
    Single UI and:
    There are many custom approaches to troubleshooting:
    Each IT organization has its own.
    Each ISV has its own tools, process and helpdesk in place.
    What are they all missing? Standard ways to diagnose, resolve and verify troubleshooting processes.
    Windows® 7 consolidates on a single troubleshooting platform (SHOW UI HERE OR DURING THE DEMO)
    This promote consistency and productivity. You don’t need to write your own GUI. Users are accustomed to this solution and you can leverage that.
    Based on Windows PowerShell™ scripts, you write three scripts (or less) — to diagnose the problem, to resolve it and to verify that it was resolved. It’s possible to invoke any managed code (or unmanaged code) because you’re writing a PowerShell script
    Troubleshooting is accessed through the Control Panel and has a consistent UI (wizard-style) although it’s possible to bring a completely custom UI inside
    Writing a troubleshooting pack is easy with the TPD that ships in the SDK and the PowerShell IDE which is now part of Windows 7.
    There are a lot of in-the-box troubleshooters to assist Users in solving problems in Windows 7. Use them!
    Q—is there a way to upload a 3rd party troubleshooter to the service? (Answer – NO)
  • [Notes to self-
    Use Matt’s troubleshooting HOL.
    The whole demo should fit into 3 minutes – 1 minute for initial troubleshooter, 2 minutes for defining the troubleshooting pack. This means we really have to skip over lots of stuff to get through with it, and it will take lots of dry runs.]
    Speaker’s notes outline:
    Show a built-in troubleshooter (let’s make a decision by Monday EOD and write the setup)
    The good old audio troubleshooter where the mute is on
    Connect to the Internet when the problem is that the network requires browsing to a page in a browser
    Connect to the Internet when the problem is that there’s no DHCP and you need to set a static IP address
    App Compat troubleshooter (e.g. for XP app)
    Performance troubleshooter when the problem is multiple antivirus programs or power plan is set to Power Saver
    Show the Troubleshooting Pack Designer
    Explain a bit about the demo setup, we’re going to resolve the file issue only
    Create the User interaction (ALTERNATIVE: We can use the registry issue because it’s simpler to define—no User interactions, but on the other hand it’s less fulfilling after the fact)
    Create a detection script, copy-paste its contents
    Create a resolution script, copy-paste its contents
    Reuse the detection script as the verifier script
    Run the whole thing, explain about the certificate signing
  • Libraries group folders together into a single unified view regardless of folder hierarchy
    They don’t have to share a physical root so one can sit on a network location, which also means it’s not always available (e.g. I can have my home Windows® Media Center music folder in a library that I can access on my mobile PC in the office…)
    Users will learn to interact with libraries as if they were folders, but in fact they are not folders!
    Developers must know that libraries are not folders, in fact they are just .library-ms XML files that have a specific scheme
    A library has a default save location and there are APIs for interacting with a library and getting its save location from it (as well as adding folders to it, etc.)
    Listen to change notifications on a library == listen to change notifications on the corresponding .library-ms XML file
  • Open Windows® Explorer
    Show the default libraries, expand them to show that there are multiple folders
    Choose picture library (which we will setup for the XP2WIn7 demo)
    Go to the library and show the “X folder locations” UI and the files from all locations
    Show the different views
    Show search
    Create a new library for the demo:
    Name it “Demo Test Lib”
    Open the library management UI and add a folder to a library
    Add few folders (small in size and content)
    Run Notepad and use the Open file dialog to show that it’s library-aware
  • Run the WPF Library Manager (based on Tomer’s submission from 15/8 at ~7PM)
    Show it “side by side” with an opened Windows® Explorer window
    Select the “Demo Test Lib” that we created before
    Add a folder to a library, remove a folder from the library – show that these changes sync to the Explorer UI
    Use the Library Manager button to show the default shell management UI
    Create a new library, set its icon, add some folders, set the default folder
    Open Notepad and choose that library, see that the save goes to the default folder
    Show the underlying code: For each primary library function, show the Windows API Code Pack entry points for this interaction
    Not every function
    Design the demo to work and add code on the fly
    I want to also show the “OLD” CFD and that it doesn’t work properly! Again have this as a code demo.
    Thought: Make this a “running” demo wherein we would edit in a part of the functionality and then run and see the magic. I personally think it’s kind of boring because the whole subject is a little bit boring 
    It is not that exciting, true, but rather important.
    It makes sense to make it a real code demo, in which you actually write code, like pinning a library to the Win Explorer, or something else that is easy, like setting the UI. Which you can do as a User.
    The following section is irrelevant:
    Open the .library-ms file and show the file structure
    Run command line utility that changes the library’s name and icon  why do you want to do that?
    Show the change in the .library-ms file and in the Explorer UI
  • After 25 years of Windows® it was time to change the Taskbar paradigm.
    With every version, there seemed to emerge more and more launch surfaces, making the UI clumsy and confusing.
    The new taskbar epitomizes cleanliness and elegance.
    Design goals: User productivity, easier window switching, common apps and destinations at your fingertips (literally with Multitouch ) and much more.
    Explain a little bit about each icon state that we see here in the taskbar screenshot.
  • The Windows® 7 Taskbar include some features that you might want to consider using in your next Application:
    Overlay Icons
    Jump Lists
    Thumbnail Toolbars
    Custom Thumbnail
    Tabbed Thumbnail
    The key takeout from this short discussion — even if you don’t want to use the advanced features — make sure you have a great taskbar icon (at all kinds of DPI levels) and forget about Quick Launch and the system notification area (“tray”) because no one is going to look there for your App. Use taskbar buttons and the wealth of UI paradigms such as thumbnail Toolbars, Jump Lists etc. instead.
  • [Speaker note – DO NOT USE THIS SLIDE – Use the other!]
  • Go through the following features in the Windows® UI:
    Microsoft® Outlook 2010 and the the useful tasks
    Windows® Live Messenger with the overlay icon
    Windows® Explorer or Windows® Internet Explorer® 8 with the Progress Bar
    Windows Media® Player with the thumbnail toolbar
    Any random Office App with a Jump List (or Internet Explorer 8 Jump List)
    Internet Explorer 8 with the tabbed thumbnails
    Emphasize: Users are going to expect this from every Application out there!
  • Use the ZooBar WPF Application developed for the Seattle Zoo allows for the tracking of animals, incorporating multiple features of the new Windows® Taskbar.
    The focus here should be on the less popular features, i.e. we will show the overlay icon and progress bar but only briefly without the code. The real focus should be on thumbnail previews and thumbnail toolbars.
    Launch the Application, explain that we’re seeing the Seattle Zoo and that there are multiple animals that we can track.
    Show the tasks in the Jump List – each task will open a web page (click one of them if there is Internet access).
    Show overlay icons by clicking Ctrl+I repeatedly, this sets the focus to the “current” activity that’s happening in the Zoo.
    Show the Taskbar Progress Bar by clicking Ctrl+P repeatedly - this gives us an estimation of how full the Zoo is getting.
    Pin a few animals (including the bear and the elephant), note that they now appear in the Taskbar.
    There’s a preview of these animals on the Taskbar and by hovering over the preview we see the Zoo map (doesn’t take us to the relevant region), by clicking the preview we navigate to the area of the Zoo where this animal is located (doesn’t work when the App is in the background).
    Show the video preview of some animal, note that the thumbnail preview shows only the video and not the entire map so that the video is actually watchable from the Taskbar thumbnail, without switching.
    Click on the photo images for some animal that has them, note that there’s now a thumbnail with these images and you can use the thumbnail toolbar to navigate them from the Taskbar.
    The code to show:
    MainWindow.xaml.cs – TabbedThumbnailActivated for the scrolling logic
    ZoobarWorker.cs – AddPreview for the registration logic with the taskbar
    PhotoViewer.xaml.cs – CreateToolbarButtons for creating the thumbnail toolbar
    The code must be beautified significantly before we can use it on the stage
    -------------------This is only a backup, we can remove it----------------------------
    Desirable demo: Something like a web browser with tabs, or a cool app that has a few tabs for different media.
    (This WPF demo needs to be written from scratch and then the Windows API Code Pack added on top of it for the separate elements/tabs)
    Run the App, go through the tabs to show off the content.
    Go to the Taskbar thumbnail and notice that there’s just a single thumbnail for all the tabs.
    Go to the code and add small portions of code so that there’s a thumbnail for each tab (or significant element).
    Run the App again, notice that now there are multiple taskbar thumbnails.
    (Optional: Add a thumbnail toolbar to one of the tabs which has pictures or some other media in it that can be controlled from the Taskbar).
  • Modernize to Monetize
  • Transcript

    • 1. Beyond Human Interaction with Windows 7 Sensor and Location PlatformBeyond Human Interaction with Windows 7 Sensor and Location Platform
    • 2.  Multitouch  Windows Ribbon  Sensors  Windows Taskbar  Libraries  Fundamentals  Version Control  User Account Control  Removed Components Get Compatible Optimize Differentiate