Kirx' Blog - kirxblog.wordpress.com

Defective component registration with 4.6 SP1 Sequencer | May 13, 2011


This is a loose translation of Sebastian Gernert’s blog articel “4.6 SP1 Sequencer registriert Dateien nicht richtig…” (German).

Sebastian namely thanks Jan Pfisterer and Marius Gawenda, who pointed him to that issue.

Because the new Sequencer does not require a separate hard disk partion for the Q: drive (but uses a Symbolic Link), some components (like OCX controls) may not register correctly. In their registration, they may point to the Symbolic Link’s target (on the C: drive) instead.

The Issue

The new App-V Sequencer 4.6 SP1 does not require a separate drive or partition for the Q: drive letter any longer. During installation, a Symbolic Link is created that is labeled “Q:” and that points to “C:\ProgramData\Microsoft\Application Virtualization Sequencer\Package Root”.

All files that are installed to the Q: drive directly during monitoring and all files that the Sequencer creates or collects in Q are stored in that folder on C:

Obviously it now may happen that some activities do recognize the Symbolic Link’s target location (instead of the “original” label location) for certain reasons.

It Sebastian’s post (and in a German discussion at dsgug.de), namely OCX registration via Regsvr32.exe seems to struggle:

The component “Foo123.ocx” is located in Q:\PrimaryDirectory\InstallationDestinationDir and has to begistered with Regsvr32.

“Local” Registry Value would look like:

[Standard] (Reg_SZ)
Q:\PrimaryDirectory\InstallationDestinationDir\Foo123.ocx

Expected Virtual Registry:

[Standard] (Reg_SZ)
%SFT_MNT%\PrimaryDirectory\InstallationDestinationDir\Foo123.ocx

Real Virtual Registry:

[Standard] (Reg_SZ)
%CSIDL_COMMON_APPDATA%\Microsoft\Application Virtualization Sequencer\Package Root\PrimaryDirectory\InstallationDestinationDir\Foo123.ocx

Because on the client there is no “C:\ProgramData\Microsoft\Application Virtualization Sequencer\Package Root”, also not in the Virtuel Environment, the component can’t be loaded: The application (probably) fails.

The Solutions (well: Workarounds)

1. On the Sequencer Machine, attach a secondary drive or create a second partition and label it Q: before installing the Sequencer 4.6 SP1 Software. The installer then does not create a Symbolic Link to C:\… but uses the Q: drive directly. (actually, use the same like for pre-SP1 Sequencers).

2. When registering the OCX, don’t run regsvr32.exe from “somewhere” and point to the full path of the OCX. Instead, change to the OCX’ folder and run Regsvr32 without specifying a path. According to Sebastian’s Blog, this should work.

So:

Do not

C:\> Regsvr32.exe "Q:\PrimaryDirectory\InstallationDestinationDir\Foo123.ocx"

Do

Q:\PrimaryDirectory\InstallationDestinationDir>  Regsvr32.exe Foo123.ocx

3. Don’t install the application to the Q: drive, but install it to C: instead. While Microsoft strongly recommends to install to the Q: drive, there are various reasons why not to follow that and install to C:.

Future

This issue has been reported to Microsoft and they may fix it in a future version of the App-V Sequencer

Remark:

Again, tributes go to Jan Pfisterer and Marius Gawenda who reported that issue and to Sebastian Gernert who analyzed and blogged about it.


1 Comment »

  1. […] substitution. However there is a bug with this that can result in broken COM registrations as detailed here, and until this is resolved you should always use a separate drive.  One other thing to be aware […]

    Pingback by Building an App-V Lab Part 3: Installing App-V | packageology — November 29, 2011 @ 09:29


Leave a reply to Building an App-V Lab Part 3: Installing App-V | packageology Cancel reply