Skip to content

Virtualisointi EQU virtualization

Random ramblings from the world of virtualization and then maybe some other things as well

In addition to “being informed” by Citrix marketing department, I also signed up for Xenocode trial some year ago, although to then current products which included .NET related tools not the virtualization ones.

For this very reason I got announcement from them that they have launched something called Spoon, namely a technology and/or website to launch virtual applications from Internet. It’s a hosted service by Xenocode through which you can provide your own virtual applications [packaged with Xenocode's app virtualization, of course]. Based on quick look at their demo site, spoon.net, it requires some sort of plugin to be installed first which apparently does acceleration to startup process (5-10x faster based on the marketing email) compred to normal HTTP based downloading.

Btw, their spoon.net site lists sample apps for you or anyone to try out. As I very well know from running my own site of free virtual applications, you should be careful about if original vendors allow redistribution in modified form; spoon.net contains several commerical – but free – applications which I’m not all that sure vendor have given permissions to re-distribute in this manner..

Hooray!

Just yesterday I suddenly received three [very well known] books I had ordered from the Amazon a while earlier: Art of Computer Programming, Volume 1 (Fundamental Algorithms)Art of Computer Programming, Volume 2 (Seminumerical Algorithms) and Art of Computer Programming, Volume 3 (Sorting and Searching) by Donald E. Knuth, guy which has greatly influenced the programming scene.

I say suddenly because I had selected the most cheapest delivery method for them and the estimator on the order tracking page predicted that I should receive them at some point in October, which, in my mind, sounded way too slow for delivery in this time and year.

Anyways, I got them (they are approx. 600 pages each) and now I’m waiting to find enough time to actually read even some of it through! I already started the first one and have to say that I find Knuth’s writing style to my liking, although I’m already fearing a bit about the mathematics he might have for some of the algorithms..

I have read quite some number of programming books before, but I think that instead of focusing specific technologies or products -which most IT books nowadays seem to be about – it’s probably helpful to actually read some of these fundamental base books as well. Like for IT project management, they say that you should read The Mythical Man-Month
(which I also have owned for quite some time already, but never managed to finish… shame on me) in order to understand concepts like why adding more people to the already late project makes it even more late etc..

One of the more obscure functionalities in App-V is the concept of differential SFT files. These DSFT files were introduced into product during 4.5 Release Candidate -phase, at which point you actually had UI option in the Sequencer for generating such an output:

DSFT Option in Sequencer's UI

 

In a very surprising move, this option was actually removed from the Sequencer when RTM was released. I guess it was confusing enough that they felt better to hide the whole thing rather than trying to explain it.. But fear not, DSFTs are still with us (yes, even in 4.6 beta), it’s just that you don’t really see it anywhere. The purpose of this post is to explain them and also show how you can use DSFTs and why.

 

So what is DSFT anyways?

Differential SFT files are, like the name implies, SFT files that contain the differential data (delta) between two versions of the SFT files; the older one and the upgraded one. This is a bit like what you would expect from the MSP files in context of Windows Installer, but of course it is not fully analogous.

DSFT files contain the identical headers to the upgraded SFT file, but only those blocks (FB 1 and 2) that is new to that particular version. This basically enables you to deliver upgraded App-V packages just as that, as upgrade, instead of traditional way of delivering new full SFT file which may contain loads of [old] data the client already has. With streaming, this is of course no problem because of differential streaming, but when servicing standalone client it would be handy to deliver only those bits that matter.

I should stress that the differential SFT file is just the differential between two consecutive versions i.e. if you have package in the client cache that is from the older SFT version (not previous to the most current one) you are not able to bring it up-to-date with the latest DSFT file; you would actually need to have one DSFT file applied per each upgrade version!

 

How do I create one?

As previously said, there used to be option in the Sequencer for a very brief while for creating a DSFT file. You can notice still in 4.5 builds the strange missing line in the checkboxes for Deployment -tab, that’s the placeholder where the DSFT checkbox used to be.

Now without GUI based option, out only choice – at least for time being – is to use executable that actually ships with Sequencer but probably not many knows about: mkdiffpkg.exe.

This tool is a very simple command-line based DSFT generator, which basically needs one input file and one output file; SFT file and DSFT file, respectively. The whole idea is that you choose your upgraded SFT file as source and the tool scans what blocks match the SFTs version (remember, as of 4.5, App-V Sequencer assigns file versions to match the SFTs version, instead of incrementing by one by each change as it used to be). These blocks are then written out as DSFT file, specified as second argument for mkdiffpkg.exe, ready to be delivered.

One of the reasons the checkbox in Sequencer UI was confusing is exactly this; DSFT generating is clearly an post-Sequencing task which did not sit in the flow how Sequencer is used. If you enable the check-box, does that mean you want changes for this version or the one you trigger by saving? You cannot also create DSFT against your very first version of SFT, that would not make sense. And hence the checkbox was always grayed out when doing Sequencing (adding to the confusion still), only when you opened package for upgrade you could enable it.

DSFT creation example

So, let’s create an example difference file for one of the applications available at my InstantApp -site. For simplicity’s sake I’ll choose VirtualDub which is an AVI video editor and provided in ZIP file instead of full-blown installer. The version I’ll base my upgrade on (and which is available at the site in time of writing this) is 1.6.14, clearly not the latest anymore as one available from VirtualDub’s SourceForge site is 1.9.5.

As a first thing to do, I’ll perform an usual upgrade to App-V package. Note that my package was originally created in 4.0 (!) Sequencer, so the upgraded one is by necessity now brought to 4.5 level (I’ll use 4.5 RTM for this):

 VirtualDub v1 package

 

Ok, so for this upgrade I simplycopy few files over from the extracted ZIP file to my package’s directory structure on Q: -drive:

Copy files over to Q drive

 

Then we start the main application (VirtualDub.exe) like you always should (2-3 times) and this time for good measure; it asked about license agreement and also presented first-run dialog. Moving on and after stopping the monitoring, I’ll remove unnecessary MSI runtime files and also modify shortcut to reflect the changed version number.
After not optimizing for FB1/2 (it’s too small package to make any difference with such a thing) I’ll examine the results before saving and see that some of the files are not at version 2 but still at version 1. These are the ones that do not get included inside DSFT file I’m going to generate in a short while:

 V1 files in upgraded package

 

Next I’ll just simply hit save in order to create v2 version of my VirtualDub App-V package and sure enough, I soon have my package files for version 2:

SFT version 2

 

Comparing this new version of SFT file, I see that it’s size has increased by over 2 megabytes over v1 of the SFT file. Now only thing left is the interesting part, the DSFT generation:

Generating DSFT file for VirtualDub

 

Yes, it’s that easy ;-)

Looking at the DSFT file generated, it’s 3388 kB in size, so we really couldn’t save much space (3419 kB – 3388 kB = 31 kB!) in this particular upgrade scenario, but for packages where less files changes the saving could be significant. Just think of Office hotfix for instance..

 

How/where can I use this DSFT file?

That’s a very good question. As it is, there’s no UI options or indication in the MSI wrapper or SCCM integration or, well, anything anywhere that would suggest an ability to use DSFT files. But that does not mean there actually isn’t way to utilize those delta files!

Yes, I’m talking about good old sfttray.exe here. This is the executable that MSI wrapper also uses in the background for loading (importing) SFT file when you deliver virtual applications via MSI file to the client. And it is that very same syntax you can use for reading in DSFTs, just simply by pointing to DSFT file instad of SFT:

sfttray /load “MyApp 1.1″ /SFTFILE c:\tmp\MyApp_2.dsft

This will trigger loading of package into the client’s cache, but instead of loading the whole package we actually load just the bits available inside DSFT, resulting an update to the package without overhead of moving whole SFT around.

As can be seen, this would be very easy to incorporate into one’s own scripts. Or, maybe even to use when delivering those wrapped MSI packages, but instead of pointing to SFT just point to DSFT!

DSFT usage example

Continuing our earlier example of VirtualDub, let’s now apply the difference to the client. For this purpose, I’ll have 4.5 client installed which has already received the v1 of the VirtualDub package from Management Server. My task is to apply v2 version to the client using DSFT version instead of publishing our upgraded v2 SFT through Management Server:

VirtualDub, version 1 is published

 

 When launching VirtualDub at the client, I can verify from the GUI that it’s indeed original – unupgraded – one:

Version 1 on the desktop

 

So let’s do an upgrade via DSFT file we generated after sequencing.
Remember to close all applications from the package, otherwise you cannot upgrade package data in the cache (DSFT or otherwise)! You also need to have permissions set to allow importing or be local admin in order to import via sfttray and you HAVE to specify full path to the DSFT file:

 Loading DSFT via sfttray.exe

 

 Now, only thing left to do is to check if our upgrade with DSFT actually succeeded to achieve what we wanted. As we could see the version directly from the VirtualDub GUI, simply re-start it from the existing shortcut and see what happens..

DSFT upgraded package on the desktop

 

Success! :-) We managed to upgrade our package with DSFT file!

 

Although there is one caveat you should be aware of (and I bumped into this during my testing): if your original package has been delivered to desktop via Management/Streaming Server (as mine had), client will try to do downgrade of the package from DSFT upgraded one when you launch it, unless you have matching updated SFT file published in the centralized server as well. The reasonfor this is very simple: client will have a check with the server (if it can be reached) each time you launch an virtual application and if the server contains older SFT than one you delivered with DSFT, client will think it needs to revert back to older version (”Active Downgrade”, if you will)!

In any case, DSFT is something you definitely can take advantage of by following the advise I have outline in this article. Just be careful with it when combined with the streaming delivery.

You can download my upgraded package and DSFT file used in the examples from here and here.

Happy DSFT’ing!

I just got spam, err, marketing e-mail from Citrix (apparently I accidently signed up for something in somewhere at some point) which had an interestingly sounding title: “5 Features VMware Can’t Deliver”.

It says (those?) five things in the body of email and urges to download something called “VDI Comparison Kit”, which evidently talks about these issues in more details.

Well, here are the five things mentioned in the email:

* 10X lower bandwidth requirement for LAN or WAN
* Unmatched user experience on any device
* Unique performance monitoring of desktops
* Scalable, single image management
* Lowest TCO with both hosted and streamed desktops

While I haven’t (yet) read about the explanations behind these claims and thus cannot comment on their validity, I can only say that it would be interesting if Citrix would compare their solution to others as well (like Quest vWorkspace); I bet that at least some of the things mentioned do not hold up water (TCO comes to mind as a first thing, knowing general level of Citrix pricing) in that comparison.. The 10X bandwidth claim also sound quite incredible as a blanket statement.

Another interesting point is that Citrix openly compares themselves with the competitor, this is something that tech companies generally do not seem to do. Yes, they usually have internal/with restricted distribution documents for that purpose but not so often in the public.

Well, maybe I have to download the kit and see what sort of adjusted truths I can find from there. As we all very well know, VDI is still far from being cost-effective solution [as centralization technology] so it’ll be interesting to see how they spin the story this time.

New 1.1 version of the SFT Encoder -product has been released. SFT Encoder is meant for powerful command-line -based editing and creation of App-V packages.

New release introduces several new directives for template -based package processing as well as few new command-line options.

Installer now includes the Batch Processing GUI – previously available as separate download – which makes it breeze to mass-process batch of App-V packages when there’s need to change server name due to server migration or perhaps when needing to add new OS values due to Windows 7 rollout.

For those wanting to evaluate product before buying, trial version is finally available for downloading and trying, as is the free Express version for simple package creation purposes.

The official blog for vWorkspace published an article over a year ago about how to publish automatic farm settings to vWorkspace client(s) via config.xml file, but it only concerned the usage of HTTP(S) protocol.

While this protocol is surely an usable one, and perhaps most common as well in normal circumstances, I was recently faced with a situation while doing PoC wherein no web servers were readily available and we had to be able to assign correct farm settings to the client regardless of who was logging on to workstation. After thinking a while, it occurred to me that from the AppPortal GUI you are able to download farm settings with file protocol, but this method wasn’t documented in the blog article or in the official documentation when it comes to using AutoConnectURL registry setting.

Hence I had to do little bit experimentation myself and came across this syntax which seems to enable automatic loading from the file-location, instead of more familiar HTTP:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Provision Networks\Provision-IT Client]
“AutoConnectURL”=”file://\\\\servername\\share\\”

Note that the backslashes are doubled in this regedit export, so the “human readable” form is: file://\\servername\share\

Hopefully this helps others in similar situation as I was facing!

Michel Roth, a Terminal Server MVP, has written an article about new VDI features in Windows Server 2008 R2.

Have to say, there’s a lot to it (meaning complexity -wise) but Michel’s article nicely overviews all the necessary bits and pieces (RD Connection Broker, RD Session Host, RD Web Access and RD Virtualization Host) you need to be familiar with.

So, if Microsoft’s take on VDI is of interest, check the article out!

Sorry, this entry is only available in Suomi.

Okay, here’s a pet peeve of mine and I cannot resist of writing about it.

Occasionally I see a phenomena of trying to do all and everything with a single product, as if expecting one technology to be a silver bullet that magically resolves all the problems that are for some purpose tied together to produce a whole. This is a problem that plagues especially [managed] service providers or organizations offering paid-for service to multiple customers. 

The usual flow of reasoning in these situations goes somewhat like this:

- Does it do foo and bar, which – incidentally - are the main things we want it to do?

- It does? Okay, that’s good but then we would expect it to do quux and xyzzy, which – in no way, btw - relate to the core things that your product does but needs to be done within the same system anyhow.

- It doesn’t do those? Oh, that’s too bad, then it cannot be any good at all.

And herein lies the problem; these people are not willing to embrace the idea of choosing the best products – multiple products if needed to - for the job, each one focusing on their forte. Yes, this could and will mean integration to some extent, but the end-result surely is better overall solution than doing with just one product that tries to do everything but does all those parts little bit badly. Which is, btw, somewhat similiar to UNIX ideology of small little utilities building up larger wholes instead of single monolithic systems.. And from the competitive point of view, let’s not forget that if you add your own special “spice” by actually developing some of that glue that holds everything together, as opposed to doing integration purely with the interoperability capabilities of the products used, you are doing something that no competitor too can readily buy off the shelf.

In keeping with the spirit of this site, let’s take a simplified example from the one of latest trends in virtualization: providing desktops (VDI) to customers as a service (DaaS as some call it) from the datacenter.

In the typical (or should I say more realistic) desktops as a service scenario, there’s multiple components involved: brokers, hypervisors, storage optimization, management layers, automation, self-automation, protocols, billing, integration, web portals, maybe integration APIs exposed etc. Expecting one product, or even only couple of products, to actually do all of these is simply a pipe dream. Many of the different aspects mentioned above are completely and utterly separate and distinct concepts that no one company can really (realistically) be best at, so excepting one company to build and provide a such technological whole is like expecting a miracle to happen.

Yes, maybe I’m stating the obvious here, but I have actually seen these sort of illusions where one solution is expected to solve every demand there is to a complete system, not really stepping back and looking what parts can be lifted from the different vendors and technologies.

And yes, more often than not these companies also might have “hidden” ties to certain vendors or technologies that they have decided to keep or favor and so, little bit artificially, other technologies are unfairly looked at and maybe discarded for not a very valid reason. Existing investment is a valid argument for some cases, but it should not be show-stopper if you really aim to provide something completely new in any case. Competetive advantage demands agility to switch and move, if necessary!

There’s no silver bullet, you know?

-Kalle

As the upcoming App-V 4.6 now supports x64 systems (along with 64-bit apps) so new OSVALUEs were in order. These are the new values for x64 OSes (existing – old - ones are for 32-bit versions):

  • WinXP64
  • WinVista64
  • Win764
  • Win2003TS64
  • Win2008TS64
  • Win2008R2TS64

Speaking of OSVALUEs, it should be noted that no longer separate values exists for both “regular” server and terminal services. From now on, only one value maps for server OSes and that’s for terminal server (understandably so as not many people ran App-V client on regular servers and also when considering licensing nowadays, that’s not really even doable). For 2008 R2, only 64-bit value is defined.

-Kalle