Hi all,
I have this application that apparently depends on the Visual Basic RunTime 5 dll "MSVBVM50.dll" . Although the dll is captured during the install of the application, and is part of the project, the resulting virtual app won't run, unless this dll is also copied to the base.
I noticed that the virtual app wouldn't run on a clean system, but would run on the system that was used to capture the installation (and has all the relevant files in the base). After that, I was able to pinpoint the problem to this one dll.
Although it is easy enough to put this dll in the base, or write a script that copies the dll to the base on runtime, it is more important for me to know what's going on. Why isn't ThinApp able to use the virtual instance of this .dll. It is part of the project in the directory %SystemSystem% and is included in the build. Why does the virtual app need it in the base as well?
One possible explanation is that the application has something done by another process that is part of the base. This process would need the dll to be in the base, as it can't see the virtual filesystem. Is there a way to check this?
Has anyone seen this before? Any suggestion is welcome!
Thanks,
Vincent
Hi Vincent,
i have seen this several times, pretty often when the virtual app communicates with another process/service via COM or something like that, i even saw an application running kind of an "runas" and this communicates with a process running outside the virtual bubble, so for example open a virtual cmd, run "runas .... cmd.exe" and you are outside the bubble.
Unfortunately most times this isn`t solveable.
You could try opening taskmanager and have a look at busy processes/new processes and have Log-Monitor open. There should be one busy process missing within logmonitor which is active/new in taskmanager.
Another workaround could be putting VB 5 Runtime into your base-image as the application will also search for the dll in windows\ystem32, which is only a workaround and of course not a real satisfying solution.
Hope this helps understanding.
Greetings,
Stephan
Thanks, Stephan.
Personally I feel base processes not being able to see the virtual filesystem to be a big disadvantage of ThinApp.
I guess this is a direct result of the way ThinApp works: without an agent, and with portable executables as a result. This concept is of course great, but it increases the number of cases where it is not possible to virtualize something.
Some examples are: Internet Explorer plugins (since IE is in the base) and virtual printers (since the spooler service is in the base), both examples that can be successfully virtualized with products that work differently, like Symantec Workspace Virtualization (Altiris SVS). If a company wants to maximize the number of succesfully virtualized applications, maybe ThinApp is not for them. However, SWV and Softgrid cannot work agentless.
Vincent
First, I would suggest manually registering the DLL during the capture. (If you don't know how to do it, google for regsvr32)
If that doesn't work...
I'm providing the following script as is and won't guarantee it works in every case. I'll leave it up to you what to do with it.
When the first process start, it will copy a file (in your case the DLL) to the base of the application
(within the virtual environment, I'm not sure if your application will work if it's within the virtual environment or if it requires the dll to be in the physical directory)
After the last process closes it will delete the file.
I hope it helps in your situtation, cause I'm still struggling with mine.
Hi,
I've incapsulate application that use Visual Basic Virtual Machine 5 and 6. They works ok!
I use Windows 2000 VM to capture application setup with ThinApp 4.5
The problem you fould could caused by :
1 missing dependency . In that case try to encapsulate the setup of VB5 Runtime (see attached setup)
2 the file you're talking about is registered outside windows\system32. In that case you could:
a. register the file in windows\system32 (I think this is your problem because you're talking about %SystemSystem%)
b. window\system32 is referenced with phisical path in hkey_local_machine.txt (the file you find in the folder of Build.bat) . In that case replace phisicla path with %systemSystem% and build capsule again.
If you want you could create a slim capsule only with VB5 runtime and enable RequiredAppLink in package.ini of your capsule
Mirko
Since this DLL is in the package, have you tried the "ExternalDlls" option in the package.ini so that you don't need to copy the DLL to the base system? Like this:
[BuildOptions]
ExternalDlls=MSVBVM50.dll
you could also register the dll (regsvr.exe) within your VOS.
after that, sandbox merge, new package, build..
It worked for me a couple of times
Jeroen Speetjens
CIS-Group.nl - VMware Partner