**Update** The CoW exclusions list in App-V 5.1 has been reduced to just .exe, .dll, .ocx and .com | Click here for more details
CoW stands for Copy on Write and it’s a concept discussed in depth in our App-V 5 SP2 Application Publishing and Client Interaction guide. I’ve also talked about it in depth in my posts around state changes for user based files and registry, global files and global registry. In short CoW allows us to write dynamically to locations within the package while it is in use.
While it’s great being able to write dynamically to these locations there are some restrictions in place, primarily concerning certain file type extensions.
Take the example above, I have opened an explorer window inside the bubble of my Adobe Reader package. I can easily copy my .txt into the virtual environment, however no matter how hard I try the .dll just won’t write in. This is a CoW Exclusion.
App-V doesn’t allow us the write any of the following file extensions via CoW:
How attempts to CoW excluded file extensions will be handled differently depending on the operation that is taking place, for example in the instance above explorer simply doesn’t allow the copy operation to take place.
Some customers I have talked to have inadvertently already come across this with some of their weird and wacky applications. For example the other day I saw an application that allowed users to set a password to be asked at start up, should the user set a password, the application would write out the password into a text file which it actually stored under a .dll (for security!!!). This feature didn’t work once sequenced as CoW exclusions stopped the writing of the .dll.
Why have exclusions?
There are two main reasons for these CoW exclusions:
- Due to the way memory manager works it is very difficult to allow the hot-swapping of files that might be in use when the file itself contains code or has programmatic properties.
- It is a core value proposition of App-V that we maintain the integrity of the upgrade process. This integrity would be comprised should App-V allow core binaries to be changed outside of the sequencing process.