According to my findings,
PluginDescription::createIdentifierString creates a string that isn’t always unique when applied to a VST: it rather depends on the plug-in location. For example:
OS: Debian Stable with GCC 6.3.0
/home/me/audio/vst/mdaAmbience.so -> VST-mdaAmbience-18fae2d2-6d646141 /home/me/audio/vst-test/mdaAmbience.so -> VST-mdaAmbience-b328b2f6-6d646141
I’ve found a comment in the code (juce_pluginDescription.h) that confirms it:
/** Either the file containing the plug-in module, or some other unique way of identifying it. E.g. for an AU, this would be an ID string that the component manager could use to retrieve the plug-in. For a VST, it's the file path. */ String fileOrIdentifier;
Wouldn’t this implementation break the “portability” of a VST plug-in or, in other words, the ability to store a plug-in ID for use across different machines?