The company I work for is looking to finally upgrade from VB6 to .Net, and hoping to start off on the right foot, doing things right.
Currently, all of our VB6 programs share files with each other in common folders. It's a mess. Paths are hard coded in in some programs, and forced to App.Path in others. Installing a program where we don't expect causes things to break, and files to get dumped in directories not checked. On top of that, our 'standard' installation location has changed in the last few years, forcing us to update all the software that spoke to each other.
So that's what we have.
What we want is some way to share files between programs in a much, much more robust way. For example, one program may generate log files, and another watches the directory, emailing us with changes. What is the de facto way to share common folder locations between programs? Furthermore, what is the best way to determine if another program is actually installed, and if so, where it's at?
The registry seems like a natural place for this type of information - somewhere under HKEY_LOCAL_MACHINE\SOFTWARE\Company Name\Common, but I know software is tending to move away from the registry more and more. Would a shared settings file in the users AppData be a good alternative? Again, something like AppData\Company Name\Common\Locations.xml.
What have other developers done in similar situations?