The case of the SoftGrid dependent virtual application
While testing an upgrade scenario to Microsoft Application Virtualization 4.5 (beta), where we deployed several of our SoftGrid 4.1 applications to the 4.5 client after opening and closing them in the 4.5 sequencer, one particular application stood out.
This particular application depends on certain (conflicting) crystal reports dll’s which is why it’s run on MAV in the first place. Most of the application is located on a fileshare (including the main exe) and the sequence consists merely of files in the VFS and some Virtual Registry. Needless to say this application runs successfully on 4.1.
So while running this application on MAV Client 4.5 it errors stating that Crystal Reports is not correctly installed. Note that the application launches and that this error pops up while touching a certain reporting function.
No changes have been made to the sequence (other than opening and saving it on 4.5) nor to the backend, nor on any of the user-privileges. So why isn’t it working?
Well process monitor indicates that it’s looking for craxdrt.dll (a crystal dll) which it can clearly find in a subdirectory of CSIDL_PROGRAM_FILES_COMMON. So Crystal isn’t our problem.
Further down the log we see that the application is looking for MSVCR71.dll (and MSVCP71.dll) and it’s anxiously searching for it in several directories, but fails to find it. So the application is saying it’s missing Crystal Reports when it’s actually missing a Visual C Runtime component. So why is this application working on 4.1? As I stated the package itself wasn’t altered.
A look under the cover of the 4.1 sequence on the 4.1 client reveals the secret.
On the 4.1 client the application also is looking through several directories but this time it successfully finds it in the directory C:\Program Files\Softricity\SoftGrid for Windows Desktops. These files are actually no longer present in the most recent version of the client, ending in application failure.
The most probable reason why these files weren’t captured during initial sequencing is that the sequencer itself installs them (as does the client) and apparently the application doesn’t. In all testing and production scenarios it could rely on the files that were installed by either the sequencer or the client.
So guess I’m saying this virtual application is dependent of the SoftGrid client in more than one way. Be aware of these kind of dependencies in any particular upgrade scenario.
