I have only recently started evaluating cameyo with a view to producing demo versions of our apps that could be given away on a USB stick
We produce several application suites which are rather vast and have some shared assemblies (even though were not using .net)
The shared assemblies are installed to winsxs and have their own individual installers which run when the main app suite installer is run.
Perhaps I'm overlooking some options when packaging the applications but my observations are as follows:
When Cameyo builds the virtualised app package it seems to convert theses shared assemblies into private assemblies (although it also virtualises the relevant folders added to winsxs)
SHARED ASSEMBLIES ARE NOT THE SAME AS PRIVATE ASSEMBLIES
and in particular an application that has a manifest referencing a shared assembly will notice one crucial behavioural difference if it is instead run with a private assembly.
With a shared assembly any DLL dynamically loaded by the application which depends on (shared assembly) DLL's referenced in the applications manifest will load successfully and it does not matter if the DLL is located in the same folder as the application.
With a private assembly THIS IS NOT THE CASE. The DLL load will instead fail.
Unfortunately without special repackaging and software changes this means that Cameyo is not able to successfully virtualise our applications.
Note these are my observations and comments so far. I'm not that familiar with cameyo as yet but have used other virtualisation packagers in the past including ThinApp.
Cameyo does several things to emulate SxS, and the mechanism is different between Disk and RAM virtualization modes. It does more than just setting the assemblies as private; there's also real-time emulation happening behind the scenes. So I'd suggest you try both virtualization modes.
It works for all tested apps. If this doesn't work for your program, I suggest you go with another product.