Don’t be too quick to drop XP support (aka Windows Server 2003 End of Life)

Here is a very interesting technical aspect to dropping XP support:  if you happen to drop XP support, by, for example, calling a Vista+ only API, or marking your binaries as 6.0+, you may not realize it, but you are also dropping Windows Server 2003 support for your app.  But here’s the surprise:

Windows Server 2003 End of Life is July 2015

Yes, that’s correct, Windows Server 2003 and XP do not have same end of life date!  So don’t be so quick to call Vista+ APIs in your app because it will no longer run on Windows Server 2003.  If you have clients that use Citrix type environments where they install your app on a server then remote into it, they may be running Server 2003.  So be very careful about dropping support until you are clear about your client’s business needs.

 

C++ REST SDK 1.2.0 Beta released – XP client side support!

EDIT: November 26, 2013: XP is now fully supported in the official 1.3 release

Further to my previous blog entry, where I mentioned that the Casablanca team were looking at supporting XP in some form in future versions – well today a nice surprise arrived:

http://casablanca.codeplex.com/releases/view/111094

From the notes: “Adding experimental support for Windows XP (client features only)”

So now you can use the client side aspects on XP! Great news for anyone who was previously hesitant using this DLL.

I’ve yet to dig into the aspects of what is exactly supported, however, there is now a new DLL, named cpprest110_xp_1_2.dll, specifically for XP.  I did a quick check with dependency walker, and there are no Vista+ APIs being called (no red stop signs), so the DLL loads fine under XP.

Important note: THIS IS ONLY AVAILABLE with the VS 2012 version of the SDK.  The VS 2010 version only contains the non-XP version (cpprest100_1_2.dll)

For those who are using this SDK, please let me know your experience testing support on XP.

C++ REST SDK 1.0 XP targeting support status

I recently came across a poll on the Casablanca web site that asks if supporting XP would be something that is of interest to users of the C++ REST SDK.

https://casablanca.codeplex.com/workitem/25

It appears to be a new item, which probably explains why there is a lack of votes so far (only 3 when this blog entry was written)

Is having XP support something that would be interesting to you?  the C++ REST SDK makes it pretty easy to access REST services in a nice asynchronous manner.  But due to various dependencies on Vista+ APIs which don’t exist on XP, the DLLs cannot be deployed on XP, therefore making any client code you write only deployable on higher platforms.

I’m a bit on the fence with this one: conceptually, it’s a great thing.  However, as the XP cutoff date (April 2014) is approaching rapidly, I’m doubtful that this task would have the resources allocated to it if the vote count is low.  And even with a high vote count, the window of opportunity for usefulness of this feature is closing rapidly.

For those that are avid C++ REST SDK users, I say go ahead and vote on it.  If there’s anyone who would like to take up the cause let me know and I can see that the right people are notified.

XP targeting support in the Visual Studio 2013 Preview

The big news: Visual Studio 2013 Preview was released at BUILD 2013.  A lot of interesting developments in the C++ world were announced by Herb Sutter in his talk, along with another GoingNative C++ conference in September.

Apart from the great new C++11 features to look forward to,  we should look at the current state of XP Support in Visual Studio 2013.  I was afraid that Visual Studio would only support XP for one more “major” version, i.e. they would drop it after 2012.  However, a pleasant surprise is that XP support remains intact!  Visual C++ 2013 fully supports XP.

I created a simple MFC project, used the Visual Studio 2013 – Windows XP (v120_xp) platform toolset, and then create a release executable.  I then installed the Visual C++ 2013 redistributable (vcredist_x86.exe) on the test XP machine and ran the application, and it ran just fine.   Fantastic that we don’t have to worry about this issue for at least the 2013 release.

Casablanca (C++ REST SDK) XP support?

Looking into getting Casablanca (the C++ REST SDK) working on Windows XP – the main issue seems to be the use of Crypto API Next Generation (CNG) , otherwise known as the BCrypt.DLL APIs.

These APIs are only available on Vista and higher, so finding a workaround (replacement) for these APIs would be the top priority if trying to find a solution to the missing XP support.

Once the source code is released on codeplex I’ll start looking at what possibilities exist for supporting XP on the client (and possibly the server, e.g. Windows Server 2003)

EDIT – 28/FEB/2013 – Casablanca 0.6 has been released with full source code – so the above is no longer the case – there is no longer a dependency on BCrypt, but there are several Vista+ only functions called from the DLL.

Visual Studio 2012 Update 1 released – download the full version for later offline installation

The wait is over – Visual Studio 2012 Update 1 has been officially released.

http://www.microsoft.com/visualstudio/eng/downloads#d-visual-studio-2012-update

The official Microsoft release only gives an on-demand installer that downloads all content from the web on-the-fly.

To download the entire update without installing it so you can install on multiple machines offline for later installation, use the /Layout flag, so for example:

(1) Download the vsupdate_KB2707250.exe to your desktop

(2) run:  <path to desktop>\vsupdate_KB2707250.exe /Layout

(where <path to desktop> is the full path to your own desktop) and it will download all files to a subfolder of your “My Documents” folder named: Visual Studio 2012 Update 1 (KB2707250)

(3) Distribute the files downloaded to your various machines and then run the downloaded vsupdate_KB2707250.exe in your “Visual Studio 2012 Update 1 (KB2707250)” in your My Documents (notice that there is a “packages” folder as a subfolder of the “Visual Studio 2012 Update 1  -KB2707250)  folder – this is where all the downloaded files ended up from step 2)

Visual C++ 2012 XP targeting support CTP is now available for download

The first CTP of Visual C++ 2012 XP targeting support is now available for download.  More info here:

http://blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx

and

http://blogs.msdn.com/b/visualstudioalm/archive/2012/10/08/visual-studio-2012-update-1-ctp.aspx

One caveat: You’ll have to wait for the final release to actually get the CRT redistributable EXEs.  For now you’ll need to copy the CRT/MFC DLLs to your program folder. I don’t blame Microsoft for doing this – as it’s a pain to have to support beta versions of redistributable DLLs that end up in the system32 folder.

XPSupport wrappers updated to 1.10 – now with Visual C++ 2012 RTM support!

I’ve recently updated the XPSupport wrappers to version 1.10.  This release contains two major changes:

(1) VC2012 RTM support – various functions relating to Vista+ threadpooling have been added to the RTM CRT, so those had to be wrapped.  Also, ConCRT version hacking had to be enhanced to allow it to continue to work smoothly.

(2) The wrappers now include a standard MIT license.  Don’t worry, since this license is part of every source file, it’s unnecessary for you to also include it in any of your own binary (compiled) distributions.

If you’re interested in trying out the new 1.10 version, please go to Ted’s blog to get the link to my Skydrive to download the files.

We won – Microsoft has officially announced their XP targeting update will be delivered later this Fall

Microsoft has just officially announced the details regarding their Windows XP targeting support from Visual C++ 2012 in an update that will be delivered “later this Fall” post-RTM – read the latest blog entry for details:

http://blogs.msdn.com/b/vcblog/archive/2012/06/15/10320645.aspx

They talk about “enhancing” multi-targeting, but the most important aspect of the announcement is that the XP targeting will definitely use the Visual C++ 2012 compilers, runtime, and libraries to accomplish this XP targeting.  That’s the first time we’ve gotten confirmation that this is not just another insufficient variant of the native multi-targeting support solution that was offered up in a previous vcblog post.

It’s great news, and I want to thank all those that have supported me in making Microsoft more aware of this issue, voting on the connect and uservoice items, and posting comments to Microsoft blog entries.  Every little bit helped.

XPSupport wrappers updated to 1.09 – now with x64 and non-Unicode build support!

I’ve recently updated the XPSupport wrappers to version 1.09.  This release contains three major new features.

(1) x64 build support – if you have x64 (64 bit native) builds of your application, then you can use the new files I provide in this version.

(2) Non-Unicode (MBCS) compilation support – these files can now be used without any extra modifications in non-Unicode projects.

(3) The layer has been updated to support the release candidate of Visual Studio 2012.  There was one new non-XP function added between the beta and the RC: InitOnceExecuteOnce API.

I also added a new console application sample to the skydrive and updated the instructions to clarify EDITBIN instructions for console apps.

Thanks to both Antony Vennard and Latency for helping with and suggesting the first two features.

If you’re interested in trying out the new 1.09 version, please go to Ted’s blog to get the link to my Skydrive to download the files.