SlideShare a Scribd company logo
1 of 21
IMPROVING APPLICATION
INSTALLATION UX IN WINDOWS 7


vj@msigeek.com
Application Deployment Today

  Deploying client applications is becoming
   more complex
      Larger applications
      Multiple packages
      Complex dependencies
      Difficult to patch
  All of this makes for a bad user experience…
Application Deployment Today




                 Long installation times
                Multiple UAC prompts

         Files left over after a failed install or uninstall
                   Unnecessary add/remove programs control panel
                                      entries
Windows Installer Transaction
Terminology
        Acquisition: Determine the
           Commit: Finalize the install
            Execution: Run
        state of the system and update theto
               transaction. Therecreateway
                script created to is no
        an install scripttherun at a later
               undo aof to system. While
                state commit.                                    R
        time. updating the system, create a          Acquisition o
               Ex: Commit assemblies towhen
                rollback script for usage GAC.       Phase       l
        Ex: What version of foo.dll is
                needed.
        installed?                                               l
                                                 I
                Ex: Copy foo.dll to the disk.
                                                 n               b
                                                                 a
                                                 s   Execution       Foo.msi
                                                                 c
                                                 t   Phase
                                                                 k
                                                 a
                                                 l
                                                 l
 Disk                                                Commit Phase
Multi-Package Transaction

   Chainer Transaction

Install         Install                        Install


 Foo.msi         Bar.msi             Foo.msi              Bar.msi
                           Failure                                  Failure


Uninstall      Rollback                        Rollback
Multi-Package Transaction
 UAC credential prompt: Per-transaction
  versus Per-package
 Reboot Handling
   Transaction boundary
   Multi-package PFR handling
 Files in use handling
 Transaction owner semantics
 Transaction can be embedded in MSI package
Multi-Package Transaction Semantics –
     Windows Installer

Acquisition   Early Execution          Acquisition   Early Execution       Late Commit

                                        Install



                 Foo.msi                               Fool.msi
                                                                       Failure
                             Rollback
      Update the statestate of machine
      Acquire the system. the machine. using the install script created in
       Update the stateof the the machine.
           Acquire the of
       acquisition phase.version Foo.exe
      1. Backup the oldscripts forofFool. Foo in LIFO order to rollback the
      Run the rollback version ofFool and and decide if you want to copy Foo.exe.
           Ex: Check the
       Sample operations:
      2. Note down an undo op-code in rollback script.
      transaction Foo.exe if one exists.
       1. Backup
      3. Copy Fool.exe.
       2. Create an undo op-code for this operation.
       3. Copy Foo.exe.
Windows Installer Patching
Improvements
Requirement: Ability to keep the highest version of a shared component
when a patch to it is uninstalled
Design Change: Windows Installer patch uninstall behavior should consider
the global machine state instead of just the product state

     Install Word    Install Outlook   Apply a patch to Word    Uninstall the patch to Word



                                             Word
                         Word                Outlook                     Word
       Word
                                                  Word                   Outlook
                         Outlook
                                                  Patch

  Installs Spell      Installs Spell         Updates Spell           Updates Spell
  Checker v12.0       Checker v12.5          Checker to v12.6        Checker to v12.0
Windows Installer Patching
Improvements

      Install Word                  Install Outlook   Apply a patch to Word    Uninstall the patch to Word



                                                            Word
                                        Word                Outlook                     Word
          Word
                                                                 Word                   Outlook
                                        Outlook
                                                                 Patch

 Installs Spell                      Installs Spell         Updates Spell           Updates Spell
 Checker v12.0                       Checker v12.5          Checker to v12.6        Checker to v12.5



                MSI Datastore
Word’s cache      Outlook’s cache                                  Spell
                                                                  Checker
Spell Checker
    12.0
                   Spell Checker
                        12.5
                                                                   12.6
                                                                   12.0
                                                                   12.5
Introduction to .NET 3.5 SP1
Client Profile
 Need for Smaller Framework, typically for Client Apps.
 Subset of assemblies already contained within .NET Framework
  3.5 Service Pack 1
 Contains the Following,
   Smaller framework deployment - ~28 MB client deployment
     package
   Smaller, faster client deployment boot strapper
   Client Application focused feature set:
      Common Language Runtime (CLR)
      ClickOnce and Windows Forms
    Windows Presentation Foundation (WPF)
    Windows Communication Foundation (WCF)
    Visual Studio 2008 SP1 Integration – Applications can be targeted
     specifically for the Client Framework subset.
Client Profile Preview
Redistributable Packages
Client Profile Configuration
Designer
  Designer Tool that will allow developers to customize
   the deployment experience of their applications

  Uses the Client Profile general purpose bootstrapper to
   deploy your application and all its prerequisites.

  Can be used to deploy applications requiring the Client
   Profile or full .NET Framework 3.5 SP1
Walk-through !!!
Client Profile Configuration Designer
Application Deployment In Win 7

  No major breaking changes
    If your installation works on Vista it should
     work on Windows 7
  Windows Installer 4.5 and .NET Framework SP1
   features are in the box
    Faster and easier deployment with
     fewer dependencies
  Performance improvements
    Expect to see 10 – 20% reduction in install operation
     times for larger applications
  Greater application deployment flexibility
    Windows Installer 5.0 with per-user
     application support
The Value Of Per-User Deployment



 Personal Empowerment                       Safer install and removal of Per-
 • User is in control                       User applications
 • Standard user installs applications on   • Applications are installed to the user’s
   users’ schedule (in accordance with        profile
   policy)                                    • Removes risk of corrupted OS state
                                              • One user installing an application
                                                doesn’t impact another user
                                              • No elevation necessary for
                                                installation
Considering Per-User deployment

  Per-User applications do not support some
   important OS extension points
    Set Program Access & Computer Defaults (SPAD)
    Default Programs
  Additionally…
    Any machine-wide prerequisites must
       be installed separately
      Your package can not install services or drivers
      Your application can not have a core purpose to serve
       all users of the computer, such as anti-virus
      Patching can only be done when the user is logged-on
      Per-User deployment is only available on Windows 7
Target Standard User

  UAC is training wheels for Standard User
    UAC heuristics detect installers, elevate
     your installer even if you did not manifest it
    UAC “virtualizes” (fakes) system
     resources so your application can
     still think it is bopping HKLM
  Do not rely on this stuff
    It is here for legacy, not for new code
    It is disabled for 64-bit Processes
  Your code is future-safe if you
   target the true Standard User
Demo
Virtualized Fake
For the Requesting User
 Install for the requesting user,
  not the current user
    If user is a Standard User (OTS) then
     when they elevate, they become a
     completely different user
    If an application then installs into the current user’s home
     folder, it will be the Administrator
 Best: Don’t configure user during install
    Instead, do user configuration on first run
 Include a manifest in your package
    Mark “asInvoker”
      Visual Studio 2008 adds manifests by default
    Don’t have anything with “setup” or “install” in the file name
Further Reading

 Client Profile Configuration Designer
   http://tinyurl.com/6etrxn
 Win Install Builder
   http://tinyurl.com/d5ywny
 .NET Framework Client Profile Deployment Guide
    http://tinyurl.com/qx6a33
 Multi Package Transaction – Basics
   http://tinyurl.com/cxtlwo
 UAC Virtualization Basics and Demo
   http://tinyurl.com/rdtvee
Read more @
   w w w . m s i g e e k .c o m


     Thank You…

More Related Content

What's hot

Identifying Hotspots in Software Build Processes
Identifying Hotspots in Software Build ProcessesIdentifying Hotspots in Software Build Processes
Identifying Hotspots in Software Build Processes
Shane McIntosh
 
How To Connect Hardware To Device Emulatorx
How To Connect Hardware To Device EmulatorxHow To Connect Hardware To Device Emulatorx
How To Connect Hardware To Device Emulatorx
Zebra Chen
 

What's hot (20)

Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
 
Deploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows ContainersDeploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows Containers
 
Jenkins for android developer at TWJUG
Jenkins for android developer at TWJUGJenkins for android developer at TWJUG
Jenkins for android developer at TWJUG
 
Chicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - MediaflyChicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - Mediafly
 
自己的 Jenkins 自己來 for Android developer
自己的 Jenkins 自己來  for Android developer自己的 Jenkins 自己來  for Android developer
自己的 Jenkins 自己來 for Android developer
 
Magento Testing on all fronts
Magento Testing on all frontsMagento Testing on all fronts
Magento Testing on all fronts
 
2013
20132013
2013
 
Creating docker custom image
Creating docker custom imageCreating docker custom image
Creating docker custom image
 
Identifying Hotspots in Software Build Processes
Identifying Hotspots in Software Build ProcessesIdentifying Hotspots in Software Build Processes
Identifying Hotspots in Software Build Processes
 
Hudson: from build jobs to build pipelines
Hudson: from build jobs to build pipelinesHudson: from build jobs to build pipelines
Hudson: from build jobs to build pipelines
 
Karl Grzeszczak: September Docker Presentation at Mediafly
Karl Grzeszczak: September Docker Presentation at MediaflyKarl Grzeszczak: September Docker Presentation at Mediafly
Karl Grzeszczak: September Docker Presentation at Mediafly
 
Jenkins Meetup Pune
Jenkins Meetup PuneJenkins Meetup Pune
Jenkins Meetup Pune
 
Building a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesBuilding a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York Times
 
How To Connect Hardware To Device Emulatorx
How To Connect Hardware To Device EmulatorxHow To Connect Hardware To Device Emulatorx
How To Connect Hardware To Device Emulatorx
 
Installing d space on windows
Installing d space on windowsInstalling d space on windows
Installing d space on windows
 
手把手帶你學Docker 03042017
手把手帶你學Docker 03042017手把手帶你學Docker 03042017
手把手帶你學Docker 03042017
 
Building a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesBuilding a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York Times
 
Tutorial j boss
Tutorial j bossTutorial j boss
Tutorial j boss
 
はじめての JFrog Xray
はじめての JFrog Xrayはじめての JFrog Xray
はじめての JFrog Xray
 
Real World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS ApplicationReal World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS Application
 

Similar to Improving Application Installation Ux In Windows 7

Virtualize and automate your development environment for fun and profit
Virtualize and automate your development environment for fun and profitVirtualize and automate your development environment for fun and profit
Virtualize and automate your development environment for fun and profit
Andreas Heim
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
Fabien Potencier
 
MS Cloud Day - Deploying and monitoring windows azure applications
MS Cloud Day - Deploying and monitoring windows azure applicationsMS Cloud Day - Deploying and monitoring windows azure applications
MS Cloud Day - Deploying and monitoring windows azure applications
Spiffy
 
Deployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna MitchellDeployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna Mitchell
dpc
 
Compile open cpn on windows
Compile open cpn on windowsCompile open cpn on windows
Compile open cpn on windows
randikaucsc
 

Similar to Improving Application Installation Ux In Windows 7 (20)

Virtualize and automate your development environment for fun and profit
Virtualize and automate your development environment for fun and profitVirtualize and automate your development environment for fun and profit
Virtualize and automate your development environment for fun and profit
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld Presentation
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
 
MS Cloud Day - Deploying and monitoring windows azure applications
MS Cloud Day - Deploying and monitoring windows azure applicationsMS Cloud Day - Deploying and monitoring windows azure applications
MS Cloud Day - Deploying and monitoring windows azure applications
 
N-Tier Application with Windows Forms - Deployment and Security
N-Tier Application with Windows Forms - Deployment and SecurityN-Tier Application with Windows Forms - Deployment and Security
N-Tier Application with Windows Forms - Deployment and Security
 
Scale your PHP application with Elastic Beanstalk - CloudParty Genova
Scale your PHP application with Elastic Beanstalk - CloudParty GenovaScale your PHP application with Elastic Beanstalk - CloudParty Genova
Scale your PHP application with Elastic Beanstalk - CloudParty Genova
 
PHP Deployment With SVN
PHP Deployment With SVNPHP Deployment With SVN
PHP Deployment With SVN
 
Orchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded LinuxOrchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded Linux
 
Orchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded LinuxOrchestrated Android-Style System Upgrades for Embedded Linux
Orchestrated Android-Style System Upgrades for Embedded Linux
 
SLBdiensten: Windows 10 deployment met Microsoft Deployment Toolkit en Setup ...
SLBdiensten: Windows 10 deployment met Microsoft Deployment Toolkit en Setup ...SLBdiensten: Windows 10 deployment met Microsoft Deployment Toolkit en Setup ...
SLBdiensten: Windows 10 deployment met Microsoft Deployment Toolkit en Setup ...
 
Deployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna MitchellDeployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna Mitchell
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
 
Compile open cpn on windows
Compile open cpn on windowsCompile open cpn on windows
Compile open cpn on windows
 
Flash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applicationsFlash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applications
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
 
Rock Solid Deployment of Web Applications
Rock Solid Deployment of Web ApplicationsRock Solid Deployment of Web Applications
Rock Solid Deployment of Web Applications
 
Introduction to node.js By Ahmed Assaf
Introduction to node.js  By Ahmed AssafIntroduction to node.js  By Ahmed Assaf
Introduction to node.js By Ahmed Assaf
 
DevNet Associate : Python introduction
DevNet Associate : Python introductionDevNet Associate : Python introduction
DevNet Associate : Python introduction
 
Planning and Completing an IBM Connections Upgrade
Planning and Completing an IBM Connections UpgradePlanning and Completing an IBM Connections Upgrade
Planning and Completing an IBM Connections Upgrade
 
Eclipsecon 2017 presentation
Eclipsecon 2017 presentationEclipsecon 2017 presentation
Eclipsecon 2017 presentation
 

More from Vijay Raj

Whats New In Windows 7 And What To Expect
Whats New In Windows 7 And What To ExpectWhats New In Windows 7 And What To Expect
Whats New In Windows 7 And What To Expect
Vijay Raj
 

More from Vijay Raj (7)

Managing your images with Deployment Image Servicing & Management (DISM) – wi...
Managing your images with Deployment Image Servicing & Management (DISM) – wi...Managing your images with Deployment Image Servicing & Management (DISM) – wi...
Managing your images with Deployment Image Servicing & Management (DISM) – wi...
 
Overcoming the application compatibility hurdle in windows 7
Overcoming the application compatibility hurdle in windows 7Overcoming the application compatibility hurdle in windows 7
Overcoming the application compatibility hurdle in windows 7
 
Whats New In Windows 7 And What To Expect
Whats New In Windows 7 And What To ExpectWhats New In Windows 7 And What To Expect
Whats New In Windows 7 And What To Expect
 
Windows 7 – Application Compatibility Toolkit 5.5 Overview
Windows 7 – Application Compatibility Toolkit 5.5 OverviewWindows 7 – Application Compatibility Toolkit 5.5 Overview
Windows 7 – Application Compatibility Toolkit 5.5 Overview
 
Managing Application Compatibility In Windows 7
Managing Application Compatibility In Windows 7Managing Application Compatibility In Windows 7
Managing Application Compatibility In Windows 7
 
Google Wave First Look
Google Wave   First LookGoogle Wave   First Look
Google Wave First Look
 
Windows 7 - Kernel Enhancements and Platform Sensors
Windows 7 - Kernel Enhancements and Platform SensorsWindows 7 - Kernel Enhancements and Platform Sensors
Windows 7 - Kernel Enhancements and Platform Sensors
 

Recently uploaded

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Recently uploaded (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 

Improving Application Installation Ux In Windows 7

  • 1. IMPROVING APPLICATION INSTALLATION UX IN WINDOWS 7 vj@msigeek.com
  • 2. Application Deployment Today  Deploying client applications is becoming more complex  Larger applications  Multiple packages  Complex dependencies  Difficult to patch  All of this makes for a bad user experience…
  • 3. Application Deployment Today Long installation times Multiple UAC prompts Files left over after a failed install or uninstall Unnecessary add/remove programs control panel entries
  • 4. Windows Installer Transaction Terminology Acquisition: Determine the Commit: Finalize the install Execution: Run state of the system and update theto transaction. Therecreateway script created to is no an install scripttherun at a later undo aof to system. While state commit. R time. updating the system, create a Acquisition o Ex: Commit assemblies towhen rollback script for usage GAC. Phase l Ex: What version of foo.dll is needed. installed? l I Ex: Copy foo.dll to the disk. n b a s Execution Foo.msi c t Phase k a l l Disk Commit Phase
  • 5. Multi-Package Transaction Chainer Transaction Install Install Install Foo.msi Bar.msi Foo.msi Bar.msi Failure Failure Uninstall Rollback Rollback
  • 6. Multi-Package Transaction  UAC credential prompt: Per-transaction versus Per-package  Reboot Handling  Transaction boundary  Multi-package PFR handling  Files in use handling  Transaction owner semantics  Transaction can be embedded in MSI package
  • 7. Multi-Package Transaction Semantics – Windows Installer Acquisition Early Execution Acquisition Early Execution Late Commit Install Foo.msi Fool.msi Failure Rollback Update the statestate of machine Acquire the system. the machine. using the install script created in Update the stateof the the machine. Acquire the of acquisition phase.version Foo.exe 1. Backup the oldscripts forofFool. Foo in LIFO order to rollback the Run the rollback version ofFool and and decide if you want to copy Foo.exe. Ex: Check the Sample operations: 2. Note down an undo op-code in rollback script. transaction Foo.exe if one exists. 1. Backup 3. Copy Fool.exe. 2. Create an undo op-code for this operation. 3. Copy Foo.exe.
  • 8. Windows Installer Patching Improvements Requirement: Ability to keep the highest version of a shared component when a patch to it is uninstalled Design Change: Windows Installer patch uninstall behavior should consider the global machine state instead of just the product state Install Word Install Outlook Apply a patch to Word Uninstall the patch to Word Word Word Outlook Word Word Word Outlook Outlook Patch Installs Spell Installs Spell Updates Spell Updates Spell Checker v12.0 Checker v12.5 Checker to v12.6 Checker to v12.0
  • 9. Windows Installer Patching Improvements Install Word Install Outlook Apply a patch to Word Uninstall the patch to Word Word Word Outlook Word Word Word Outlook Outlook Patch Installs Spell Installs Spell Updates Spell Updates Spell Checker v12.0 Checker v12.5 Checker to v12.6 Checker to v12.5 MSI Datastore Word’s cache Outlook’s cache Spell Checker Spell Checker 12.0 Spell Checker 12.5 12.6 12.0 12.5
  • 10. Introduction to .NET 3.5 SP1 Client Profile  Need for Smaller Framework, typically for Client Apps.  Subset of assemblies already contained within .NET Framework 3.5 Service Pack 1  Contains the Following,  Smaller framework deployment - ~28 MB client deployment package  Smaller, faster client deployment boot strapper  Client Application focused feature set:  Common Language Runtime (CLR)  ClickOnce and Windows Forms  Windows Presentation Foundation (WPF)  Windows Communication Foundation (WCF)  Visual Studio 2008 SP1 Integration – Applications can be targeted specifically for the Client Framework subset.
  • 12. Client Profile Configuration Designer  Designer Tool that will allow developers to customize the deployment experience of their applications  Uses the Client Profile general purpose bootstrapper to deploy your application and all its prerequisites.  Can be used to deploy applications requiring the Client Profile or full .NET Framework 3.5 SP1
  • 13. Walk-through !!! Client Profile Configuration Designer
  • 14. Application Deployment In Win 7  No major breaking changes  If your installation works on Vista it should work on Windows 7  Windows Installer 4.5 and .NET Framework SP1 features are in the box  Faster and easier deployment with fewer dependencies  Performance improvements  Expect to see 10 – 20% reduction in install operation times for larger applications  Greater application deployment flexibility  Windows Installer 5.0 with per-user application support
  • 15. The Value Of Per-User Deployment Personal Empowerment Safer install and removal of Per- • User is in control User applications • Standard user installs applications on • Applications are installed to the user’s users’ schedule (in accordance with profile policy) • Removes risk of corrupted OS state • One user installing an application doesn’t impact another user • No elevation necessary for installation
  • 16. Considering Per-User deployment  Per-User applications do not support some important OS extension points  Set Program Access & Computer Defaults (SPAD)  Default Programs  Additionally…  Any machine-wide prerequisites must be installed separately  Your package can not install services or drivers  Your application can not have a core purpose to serve all users of the computer, such as anti-virus  Patching can only be done when the user is logged-on  Per-User deployment is only available on Windows 7
  • 17. Target Standard User  UAC is training wheels for Standard User  UAC heuristics detect installers, elevate your installer even if you did not manifest it  UAC “virtualizes” (fakes) system resources so your application can still think it is bopping HKLM  Do not rely on this stuff  It is here for legacy, not for new code  It is disabled for 64-bit Processes  Your code is future-safe if you target the true Standard User
  • 19. For the Requesting User  Install for the requesting user, not the current user  If user is a Standard User (OTS) then when they elevate, they become a completely different user  If an application then installs into the current user’s home folder, it will be the Administrator  Best: Don’t configure user during install  Instead, do user configuration on first run  Include a manifest in your package  Mark “asInvoker”  Visual Studio 2008 adds manifests by default  Don’t have anything with “setup” or “install” in the file name
  • 20. Further Reading  Client Profile Configuration Designer  http://tinyurl.com/6etrxn  Win Install Builder  http://tinyurl.com/d5ywny  .NET Framework Client Profile Deployment Guide  http://tinyurl.com/qx6a33  Multi Package Transaction – Basics  http://tinyurl.com/cxtlwo  UAC Virtualization Basics and Demo  http://tinyurl.com/rdtvee
  • 21. Read more @ w w w . m s i g e e k .c o m Thank You…