I've made a little progress with this issue, although my solution is quite strange.
Basically when I create a plugin it shows up in Wwise as installed. Then though if I change some of the plugin C++ code, the plugin then shows up as not installed.
I found a work around for this problem, although I really have no idea why it works. I have to create a new empty plugin with the same name as my original plugin. Then I have to upgrade the new plugins VS project to the latest SDK and toolset versions. Lastly I build the new empty plugin, but then delete the outputted files from the build. Then I copy the newly created plugin ID number from the XML file into my original plugins XML file and finally build the original plugin (with changes to the c++ code). Then the original plugin shows up as installed in Wwise again. As I say I have no idea why this works, but it does. I also found that it doesn't work if I don't upgrade the new plugins SDK and toolset versions (the original plugin VS project is also upgraded).
So now I'm automating this process from a .bat script that creates, upgrades, and builds the new plugin, then calls a C++ program to copy the plugin ID from one XML file to the other. I'm nearly finished setting this up and I plan to add the .bat file to my pre-build processes in my original plugin VS project, so that it basically does all this every time I build it. All in all, essentially this process is just updating the plugin ID on every build with an ID that is somehow valid after creating a new empty plugin to get it. Very strange work around but hey it works.