App-V 5.0 Beta: The End of CSIDLs

Note:This is part of a series on App-V 5.0: Part 1 Part 2 Part 3 Part 4 Part 5

Plowing my way through the new Sequencer.  Looking at the options page of the sequencer, the ParseItems look a little different.


One of the most important jobs of the sequencer is to make the package Machine, OS, and User neutral.  The sequencer does this by locating hard coded paths in the windows registry, file path info, and maybe looking into some files like .ini files (although some of that latter support has been removed over the years).

When we built the product, we latched onto a Microsoft developer technique to produce code that was OS neutral – CSIDL.    This stands for “Common System InDependent” plus something starting in the letter L.  Different documentation in the day called it “List” or “Link” depending on which you found.  CSIDL solved the problem of a client windows installed to the Windows folder or WindowsNT folder (which was popular at that time), or on a drive other than “C” (popular under Citrix).  When Windows Vista came out, it also solved the problem of “Documents and Settings” versus “Users” folder names.  So whenever the sequencer saw “C:\WindowsNT” it would replace it with “%CSIDL_WINDOWS” in the sft package.  Then the client could replace the CSIDL with whatever was appropriate there.

Microsoft originally documented the CSIDLs in a KB article that has long since been removed.  It was updated in each OS release to include sections of OS specific changes.  App-V, at least prior to 5.0, used these CSIDLS like environment variables in these Parse Items.  There were a few non CSIDL additions as became necessary, like the famous %SFT_MNT% (representing the Q: drive).

But with Windows Vista, Microsoft deprecated CSIDL and removed the KB (It seems they now have one with a partial listing ) and started recommending developers use a new, but very similar KNOWNFOLDERID  KNOWNFOLDERID syntax.

It was unclear how App-V would handle this transition, and until this Beta they have been able to ignore it.  But here in the 5.0 Beta, we can see that they have replaced the old CSIDL syntax with an App-V specific syntax that they can map into whatever the OS supports to help with the mapping.  This is nothing more than in internal plumbing change that will make it easier as the OS continues to evolve.