Welcome to WindowsClient.net | Sign in | Join

Troy Martez's Weblog

Standby to Deploy

Recent Posts

Sponsors





  • advertise here

Tags

No tags have been created or used yet.

Archives

Introducing the .NET Framework Client Profile

I'm updating this post to reflect the changes since the last time I posted this topic.

The .NET Framework Client Profile (Client Profile) was created to answer the feedback from many customers that a smaller framework was needed specifically for Client Applications. The Client Profile is a subset of assemblies already contained within .NET Framework 3.5 Service Pack 1. The Client Profile subset is focused on fulfilling the needs of Client applications.

The Client Profile contains the following features:

·         Smaller framework deployment - ~28 MB client deployment package

·         Smaller, faster client deployment boot strapper

·         Client Application focused feature set:

o   Common Language Runtime (CLR)

o   ClickOnce

o   Windows Forms

o   Windows Presentation Foundation

o   Windows Communication Foundation

·         Visual Studio 2008 SP1 Integration – Applications can be targeted specifically for the Client Framework subset.

.NET Framework Client Profile

The Client Profile is made up of a combination of features. The first part is client redistributable packages that are installed by end-users. The second part is the client deployment boot strapper that manages the deployment of redistributable packages.

Client Profile Redistributable Packages

There are no new features specific to the Client Profile. The subset of assemblies is the same as in the full installation of the .NET Framework. The Client Profile is deployed and installed in much the same way that the full .NET Framework is deployed and installed.

Figure 1. Client Framework

As you can see in Figure 1, the .NET Framework is a set of versioned layers that are dependent on the layer below it. The Client Profile is broken down in the same way to ensure that the functional parity would be maintained in the client framework.

The Client Profile is deployed in the same versioned layer system as the full framework. This allows for the end-user computer to be easily upgraded to the full framework if an application requires the full framework.

Client Profile deployment boot strapper

The Client Deployment boot strapper is the part of the Client Profile that manages the deployment of the client redistributable packages. The Client Profile boot strapper is small, approximately 200 KB in size, and is primarily designed to accommodate web based deployment scenarios. The Client Profile boot strapper is also XML file driven to allow for more flexibility of deployment configurations.

Figure 2. Client Profile Bootstrapper

As seen in Figure 2, the Client Profile boot strapper contains several XML files that determine how packages are deployed.

The Deployment.xml file contains the definition of the user interfaces displayed to end-users when it is deployed. The file also contains references to Product.xml files that allow developers to define how an application or prerequisite is to be installed and/or uninstalled.

The Product.xml file(s) contains the information needed to install the products required by an application. The Product.xml file format follows the Product and Package Schema Reference required for ClickOnce application deployments.

.NET Framework Client Profile Deployment Scenarios

The .NET Framework Client Profile is targeted for end-user configuration where no framework components are installed. Microsoft Windows Vista and Microsoft Windows Server 2008 already have parts of the .NET Framework installed, so client redistributable deployments on these platforms will not be possible.

Microsoft Windows XP SP2 or greater and Windows Server 2003 do not have any framework components installed by default. The Client Profile redistributable package can be installed on Windows XP. The Client Profile redistributable package will not be installed on Windows Server 2003 as this platform is not intended for use as a client application platform. The following table explains how each platform will be managed to ensure Client Applications are fully functional upon deployment.

As is illustrated in the preceding table, the Client Profile deployment is focused on Windows XP SP2+ with No Framework components installed. This .NET Framework platform configuration is still the predominant .NET Framework platform configuration and will continue be so for the foreseeable future.

However, it should be noted that the end-user deployment experience for all platform configurations will continue have the same look, feel and consistency.

NOTE: .NET Framework Client Profile will not be supported on x64 or ia64 platforms. If there are client applications that require .NET Framework for these CPU types, it is recommended that developers and users install the full .NET Framework for those platforms.

Visual Studio 2008 SP1 Integration

Developing application for the Client Profile is supported across all Visual Studio 2008 SP1 editions. Developers will need to specifically choose to target their applications for the Client Profile.

Opting In your project

Almost any Visual Studio project that is a Client Application can be configured to function on the Client Profile.

Configuring your project

Any WinForms or Windows Presentation Foundation project can be configured for the Client Profile. Developer will need to update their Project Properties to specifically target the Client Profile.

Figure 3. Client-only Framework subset

As seen in Figure 3, developers will need to open the Advanced Compiler Settings in the Project Properties and check the “Client-only Framework subset” option.

Compiling Your Project

Checking this option will update the project in two ways. First, the compiler will check the project’s assembly references against a list of Client Framework Assemblies to see if there are any conflicts. If your project references assemblies that are not in the Client Framework Assemblies list, it will show up as a compilation warning.

Developers will need to be aware of this compilation warning and make the appropriate changes to their project in order to function properly on the Client Profile. If this is not done, applications may see random MethodNotFoundException error messages or their applications may not function properly at all.

NOTE: In some cases, it may be appropriate to ignore this warning if the developer is taking care to make sure the assembly referenced in the project will be available at runtime.

Client Profile Runtime Checks

The second way your project will be updated upon checking the “Client-only Framework subset” is that an Application Configuration file will be added to your project. Adding this app.config file will declare to the .NET Framework Common Language Runtime that this application is Client Application.

Figure 4. Client Application declaration.

As seen in Figure 4, the “sku=Client” attribute is added to the application configuration file. The application configuration file will also need to be distributed with application EXE file. At runtime, the framework runtime will check the contents of the file, if this declaration is not found, the runtime will assume that this application requires the full .NET Framework and prompt the end-user to install the full .NET Framework.

If the full .NET Framework is present on the computer, this declaration will be ignored and the application will start as normal.

 

Deploying your project from Visual Studio 2008 SP1

In Visual Studio 2008, developers have the option of deploying their projects directly from Visual Studio. Developers will continue to have this option for Client Profile based deployments as well.

Visual Studio Project Publishing

When a developer chooses to deploy their project from Visual Studio, they can choose the built-in Publish functionality in their project. The Publish functionality, if all the defaults are chosen, will target and set as a prerequisite, the full .NET Framework 3.5. This means that if the framework is not found on an end-users computer that has chosen to install this application, the .NET Framework 3.5 will be installed before their application is installed and allow to run.

Figure 5. Client Profile Prerequisite

As seen in Figure 5, developers will now be able to change that prerequisite to target the “.NET Framework 3.5 Client Service Pack 1.” This means that at runtime, the Client Profile will be installed if no Framework components are installed on the computer.

Visual Studio Setup Projects

For more complex project/application publishing, Visual Studio developers have also had the option of using a Setup Project to deploy their application. Visual Studio Setup Projects, just like the publishing functionality in Visual Studio, will always default to install the full .NET Framework 3.5.

In the same way that Visual Studio Publishing can be changed to target the Client Profile, Setup Projects can be changed to target the Client Profile. The options are the same as illustrated in Figure 5, developers will now be able to change that prerequisite to target the “.NET Framework 3.5 Client Service Pack 1.” This means that at runtime, the Client Profile will be installed if no Framework components are installed on the computer.

Customizing the deployment experience

As mentioned in previous sections of this document, developers will have the flexibility to customize the deployment of their applications using the Client Profile. The customizations allowed using the Client Profile are:

·         Customization of the user interface

o   Customize the size, position, framing, background colors, fonts, etc. of the installation window

o   Choose to display the license agreements required by the products being installed

o   Choose whether or not to acknowledge the end of the installation process or immediately launch an application

·         Choosing the products to deploy with your application

o   Choose what prerequisites are required by the application and install them

·         Choosing how to deploy your application

o   Application deployment can be done over the web or from Media for an “offline” deployment experience

Customizing the user interface

The user interface of the Client Profile is driven by the Deployment.xml file. The Deployment.xml is a representation of the stages that the deployment process will run through. The stages of the deployment process are:

<PreInstallWindow /> - Start up of the deployment process where license agreements are displayed

<InstallWindow /> - Stage where the installation of the products is started. Display the progress of the installation.

<PostInstallWindow /> - Stage where the installation of the products is concluded. Developers can provide the option of starting the application that was installed.

Each of these stages have properties and controls that can be modified to fit the desired look and feel of the deployment process. For example, if a developer decided that the user experience should be such that they don’t want the user to acknowledge the conclusion of the installation and just go directly into application that was installed, the <PostInstallWindow /> stage can be omitted and the AppToLaunch property can be set.

Choosing the products to deploy with your application

The products being installed as part of the deployment of your application can also be customized. The Deployment.xml file also contains a <ProductRefs /> reference that will allow developers to define what products are to be installed. The <ProductRefs /> node can contain any number of references to Product.xml files that will define what gets installed.

When defining what will be installed by the application deployment, there will be at least two Product references, one for the Client Profile installation and one for the application being installed. If the application being installed requires Microsoft SQL CE, then another Product reference must be added.

Choosing how to deploy your application

Developers can also choose how they would like to deploy their applications. The most optimal method of deploying an application would be over the web. However, a developer can also choose to create a Media based deployment for DVD or USB Key Drives. The difference between the two is that the media based deployment must be completely self-contained and include all the prerequisites that may be needed on the media as well.

If a developer chooses to deploy their application over the web, developers can customize the “HomeSite” the Product.xml files to point a web download location of their choosing. At deployment time, the Client Profile boot strapper will go to the “HomeSite” defined in the Product.xml file and download only the items that are needed for the installation, further optimizing the deployment experience for the user.

You should also check out Justin's post on the file list that makes up the .NET Framework Client Profile.

-Troy

Comments

Rob Relyea - Xamlified said:

We're very excited that we're improving the installation experience on machines without .Net
# May 21, 2008 4:18 PM

BCL Team Blog said:

Last week Soma and Scott Guthrie announced the availability of Visual Studio 2008 and .NET Framework
# May 21, 2008 4:42 PM

Warren Tang said:

Introducingthe.NETFrameworkClientProfile

blogs.windowsclient.net/.../20...

# May 21, 2008 9:09 PM

Brad Abrams said:

As I mentioned a few days ago , with .NET Framework 3.5 SP1 Beta we are taking some MAJOR steps toward

# May 22, 2008 12:47 AM

vikasgoyal77 said:

Instead of having a fixed set of assemblies in client profile, can't we have a dynamic set, generated based on application requirements. This will reduce the size further.

dotnetwithme.blogspot.com

vikas goyal

# May 22, 2008 3:52 AM

Around and About .NET World said:

.NET Framework Client Profile

# May 22, 2008 8:36 AM

Christopher Painter said:

More information on the .NET 3.5 Client Profile

# May 22, 2008 9:12 PM

Jan Brabec said:

Where I can find Deployment.xml described above? I haven’t even find a schema for this guy. Will it sit next to setup.exe or will it be compiled in as all product.xml and package.xml files? Will it be finally possible to run the bootstrapper unattended, so user wouldn’t need not to sit there and click on every confirmation messages for each reboot etc.? Thanks Jan
# May 23, 2008 9:00 AM

POKE 53280,0: Pete Brown's Blog said:

Justin Van Patten from the BCL Team has put out an official list of what assemblies will be included

# May 23, 2008 9:50 AM

Community Blogs said:

Justin Van Patten from the BCL Team has put out an official list of what assemblies will be included

# May 23, 2008 4:40 PM

Jay said:

I've been brazenly rerouted to your blog from Justin's blog.

I'm trying to determine if this Client Profile would make it feasible to move my .Net 2.0 apps to 3.5. The concerns:

1. SIZE.  Going from 22MB for dotnetfx20 to 26+MB for clientProfile35 (let's call it that) seems reasonable. Without the client profile, we have ruled .Net 3.0 or 3.5 (300MB, or even 80MB after elaborate workarounds) to be prohibitively large for web download of our relatively small apps, so you have our attention!

2. CHANCE OF AVOIDING FX INSTALL. Vista has dotnetfx20 installed already, as do many (though not most) XP systems. So now we can in some (increasing) cases avoid an install completely. ClientProfile35 won't be a default install anywhere for a while and so seems like a worse choice.

3. NUMBER OF SETUP VARIATIONS REQUIRED. We currently have one prereq installer (dotnetfx20) for all systems, for both our server (90MB) and client (32MB) installs. It seems for this new ClientProfile35 we cannot install it on Vista (so we need the huge version of the redist still?), and our service needs the full 300MB install even on XP due to the API subset not covering our service needs.

4. REGISTRY VERSION CHECKS (For non-client 3.5 apps). Assuming a system has only clientProfile35 installed, and NOT the full 3.5 framework, is there a simple regkey I can check to determine that the API is a subset of 3.5?  Otherwise how does my server installer know that it needs to run 3.5 install because the ClientProfile is not the 'real' framework it was depending on?

5. REGISTRY VERSION CHECKS (Backward compat with apps expecting 2.0). My current software already tries to detect if dotnetfx20 is installed by checking for a v2.0 key. But now the clientProfile35 may show up on systems that my app is being installed on. Is your clientProfile35 going to set the regkey and thus look like it has the full 2.0 feature set, breaking my app with MissingMethods if it calls APIs that have been part of 2.0 for yers?

I hope these scenarios have been considered and you have answers!

# May 24, 2008 4:47 AM

trickster92 said:

I will try to answer as many of the questions in upcoming posts. I will post a samples on deploying with the .NET Client Profile using a Windows Installer Package and a ClickOnce deployment. I will get those posted next week. The posts will also contai the deployment.xmls specification and a few other items of interest.

Running 2.0 and 3.0 apps on the Client Profile... Test your apps! The Client Profile is subset of Assemblies from the full framework. The Client Profile assemblies has many dependencies (as highlighted in Justin's blog) that are not covered in the Client Profile. And sometimes apps also contain unintended references that may cause unintended dependencies. Ultimately to find out if your app is going to work, you'll need to test.

Version Checking...

The Client Profile installation package will do the proper checking for you. However, if your application needs to do some checking (which is a good practice) there will be two ways of doing this. Registry check and if working across the net, User Agent String check. I will post those items in my next post coming this week.

Setup Variations...

The Client Profile installer only supports two variations, the Client subset and the full framework. When performing a web (or network) based distribution of the Client Profile, it will detect if it needs to install the Full Framework based on OS Platform. If it does need to install the full framework, it uses the web based installer. this means that at most, the installation is 60 MB for x86 systems. When we start deal with amd64 and ia64 systems, is when the downloads gets larger. But we would never run into a situation when the download requires the "everything" framework package. The "everything" framework package contains x86, amd64, ia64 for Windows XP and Vista/Server 2008 all in one. Which is the reason its so big.

-Troy

# May 24, 2008 12:36 PM

Wöchentliche Rundablage: ASP.NET MVC, Silverlight 2, C#, Entity Framework, WPF, Javascript | Code-Inside Blog said:

Pingback from  W&ouml;chentliche Rundablage: ASP.NET MVC, Silverlight 2, C#, Entity Framework, WPF, Javascript | Code-Inside Blog

# May 26, 2008 4:32 PM

Weekly Links: ASP.NET MVC, Silverlight 2, C#, Entity Framework, WPF, Javascript | Code-Inside Blog International said:

Pingback from  Weekly Links: ASP.NET MVC, Silverlight 2, C#, Entity Framework, WPF, Javascript | Code-Inside Blog International

# May 26, 2008 4:32 PM

Paul van Brenk.com said:

# May 30, 2008 7:53 AM

Aaron Stebner's WebLog said:

The beta version of the .NET Framework 3.5 SP1 and Visual Studio 2008 SP1 were released a few weeks ago.

# May 30, 2008 9:26 PM

Programming said:

As I mentioned a few days ago , with .NET Framework 3.5 SP1 Beta we are taking some MAJOR steps toward

# May 31, 2008 10:36 AM

DEVELOPMENT SITE - NOT MY PUBLIC BLOG said:

Justin Van Patten from the BCL Team has put out an official list of what assemblies will be included in the RTM of the .NET Framework Client Profile. The usual suspects are there, and as expected, server-side technologies like ASP.NET are not. Note that

# June 29, 2008 12:01 AM

.Net Framework 3.5 Client Profile « Non Solo .Net said:

Pingback from  .Net Framework 3.5 Client Profile &laquo; Non Solo .Net

# July 5, 2008 4:41 PM

Iga lahendus tekitab uusi probleeme ehk alati võib leida veel ühe bugi. said:

Mõned hetked tagasi tuli välja pressiteade , et Microsoft on välja lasknud Visual Studio 2008 SP1, .Net

# August 11, 2008 2:19 PM

Oneda said:

O Service Pack 1 do Visual Studio 2008 e do .NET Framework 3.5 já estão disponíveis para download (caso

# August 11, 2008 9:05 PM

Oneda said:

O Service Pack 1 do Visual Studio 2008 e do .NET Framework 3.5 já estão disponíveis para download (caso

# August 11, 2008 9:06 PM

WPF Performance said:

As you know the .NET Framework 3.5 Service Pack 1 Beta download is now available. There are many improvements

# August 13, 2008 3:29 AM

Aldığım notlar: .NET, VS.NET ve IIS... said:

Geçtiğimiz Kasım ayında yayınlanan Visual Studio 2008 ve .NET Framework 3.5 için pek çok yenilik ve düzeltme

# August 14, 2008 5:27 AM

Khurram Aziz said:

Soma announced the availability of Visual Studio 2008 Service Pack 1 and .NET 3.5 Service Pack 1 . Installation

# August 14, 2008 6:51 AM

.NET Client Profile + WPF = Superb Apps « C# Disciples said:

Pingback from  .NET Client Profile + WPF = Superb Apps &laquo; C# Disciples

# September 24, 2008 5:19 PM
Leave a Comment

(required) 

(required) 

(optional)

(required) 

Page view counter