The problem is almost certainly that they changed the registry keys that store the location of where the game is installed. The installer for the expansions from company B is looking for specific registry keys to tell it where to install the update (likewise for the patches), but the install from company A did not use the registry keys it is looking for so it can not tell that the program is installed. They might have the same names but be in a different location, or they might also have different names.
Theoretically, you could fix this by creating a set of keys in the registry in the right place with the right names pointing to the right locations. In practice, messing around in the registry without knowing what you are doing is a good way to mess up your computer. You'd have to know what the installer is looking for, too. That would probably require the help of somebody who has that version already installed, or examining the installer to see what it is looking for (potentially tricky, and potentially violating the EULA).