Updated from 7.0.3 to 7.0.7 Windows - cannot build VST3 anymore - manifest issue?

I’m running JUCE 7.0.7 develop on Windows with VS2019, first time trying a compile since 7.0.3. I am having some issue which probably relates to the manifest thing.

Projucer-exported VS2019 solution.

I went back to 7.0.3 and tried it. It works, here is the output from the steps at the end that are successful:

SUCCESSFUL: (7.0.3) build VST and VST3

1>MYPLUG-plughost_SharedCode.vcxproj -> C:\Users\sk\Documents\MYPLUG JUCE 046 Win\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\Shared Code\MYPLUG-plughostDB.lib

2>include_juce_audio_plugin_client_VST2.cpp
2>------ Rebuild All started: Project: MYPLUG-plughost_VST, Configuration: Debug x64 ------
2>   Creating library C:\Users\sk\Documents\MYPLUG JUCE 046 Win\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST\MYPLUG-plughostDB.lib and object C:\Users\sk\Documents\MYPLUG JUCE 046 Win\MYPLUG 2>MYPLUG-plughost_VST.vcxproj -> C:\Users\sk\Documents\MYPLUG JUCE 046 Win\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST\MYPLUG-plughostDB.dll
2>        1 file(s) copied.

3>------ Rebuild All started: Project: MYPLUG-plughost_VST3, Configuration: Debug x64 ------
3>include_juce_audio_plugin_client_VST3.cpp
3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST\MYPLUG-plughostDB.exp
3>   Creating library C:\Users\sk\Documents\MYPLUG JUCE 046 Win\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\MYPLUG-plughostDB.lib and object C:\Users\sk\Documents\MYPLUG JUCE 046 Win\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\MYPLUG-plughostDB.exp
3>MYPLUG-plughost_VST3.vcxproj -> C:\Users\sk\Documents\MYPLUG JUCE 046 Win\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\MYPLUG-plughostDB.vst3
3>        1 file(s) copied.

========== Rebuild All: 3 succeeded, 0 failed, 0 skipped ==========

FAILED (7.0.7) build VST OK, VST3 fails:

1>MYPLUG-plughostDB_SharedCode.vcxproj -> C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\Shared Code\MYPLUG-plughostDB.lib

3>------ Rebuild All started: Project: MYPLUG-plughostDB_VST, Configuration: Debug x64 ------
3>include_juce_audio_plugin_client_VST2.cpp
3>   Creating library C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST\MYPLUG-plughostDB.lib and object C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST\MYPLUG-plughostDB.exp
3>MYPLUG-plughostDB_VST.vcxproj -> C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST\MYPLUG-plughostDB.dll
3>        1 file(s) copied.


4>------ Rebuild All started: Project: MYPLUG-plughostDB_VST3, Configuration: Debug x64 ------
4>include_juce_audio_plugin_client_VST3.cpp
4>   Creating library C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\MYPLUG-plughostDB.lib and object C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\MYPLUG-plughostDB.exp
4>MYPLUG-plughostDB_VST3.vcxproj -> C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\MYPLUG-plughostDB.dll
4>        1 file(s) copied.
4>Deleted file - C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\MYPLUG-plughostDB.vst3\Contents\Resources\moduleinfo.json
4>0 File(s) copied
4>File creation error - The extended attributes are inconsistent.
4>
4>Unable to create directory - C:\Program Files\Common Files\VST3\MYPLUG-plughostDB.vst3
4>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: The command "copy /Y "C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\\MYPLUG-plughostDB.dll" "C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\\MYPLUG-plughostDB.vst3\Contents\x86_64-win\MYPLUG-plughostDB.vst3"
4>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: del /s /q "C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\/MYPLUG-plughostDB.vst3\Contents\moduleinfo.json"
4>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: if not exist "C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\/MYPLUG-plughostDB.vst3\Contents\Resources\" del /s /q "C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\/MYPLUG-plughostDB.vst3\Contents\Resources" && mkdir "C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\/MYPLUG-plughostDB.vst3\Contents\Resources"
4>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: "C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3 Manifest Helper\juce_vst3_helper.exe" -create -version "1.0.0" -path "C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\/MYPLUG-plughostDB.vst3" -output "C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\/MYPLUG-plughostDB.vst3\Contents\Resources\moduleinfo.json"
4>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: xcopy /E /H /K /R /Y /I "C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3\\MYPLUG-plughostDB.vst3" "C:\Program Files\Common Files\VST3\MYPLUG-plughostDB.vst3\"
4>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(155,5): error MSB3073: :VCEnd" exited with code 4.
4>Done building project "MYPLUG-plughostDB_VST3.vcxproj" -- FAILED.

========== Rebuild All: 3 succeeded, 1 failed, 0 skipped ==========

Some of the errors are talking about the manifest helper. Any ideas?

I do have the VST3ManifestHelper proj added to my solution, and it does appear to build correctly in the output:

2>juce_VST3ManifestHelper.cpp
2>MYPLUG-plughostDB_VST3ManifestHelper.vcxproj -> C:\Users\sk\Documents\MYPLUG JUCE 047\MYPLUG 3\MYPLUG 3 plug host\Builds\VisualStudio2019\x64\Debug\VST3 Manifest Helper\juce_vst3_helper.exe

Seems to be the same issue as reported here:

Does it work if you clean/remove the build folder before rebuilding?

Thanks, but I don’t think so.

  • using Windows, not Mac
  • not code-signing anything
  • not using CMAKE, but Projucer

Unfortunately not.
Windows 10, VS2019.

It seems it cannot create/find expected files?

4>Could Not Find C:\Users\sk\Documents\MYPLUG plug host\Builds\VisualStudio2019\x64\Debug\VST3\MYPLUG-plughostDB.vst3
4>Could Not Find C:\Users\sk\Documents\MYPLUG plug host\Builds\VisualStudio2019\x64\Debug\VST3\MYPLUG-plughostDB.vst3\Contents
4>Could Not Find C:\Users\sk\Documents\MYPLUG plug host\Builds\VisualStudio2019\x64\Debug\VST3\MYPLUG-plughostDB.vst3\Contents\x86_64-win
...
4>Could Not Find C:\Users\sk\Documents\MYPLUG plug host\Builds\VisualStudio2019\x64\Debug\VST3\MYPLUG-plughostDB.vst3\Contents\moduleinfo.json
4>Could Not Find C:\Users\sk\Documents\MYPLUG plug host\Builds\VisualStudio2019\x64\Debug\VST3\KARMA3-plughostDB.vst3\Contents\Resources

If you manually copy the plugin into your plugin folder, can you successfully load it in any host? Perhaps the plugin is crashing while writing the manifest file.

This is a bit new to me. Last time I worked on this, my vst3 was a file.

Now it’s a folder ending in .vst3?

Does this new manifest process actually run the plugin during compilation?

(It seems that my plugin may be failing validation due to some recent changes, I have to look into this more, but I’d like to understand this process better.) Thanks.

This has been possible for a long time, vst3 hosts should (and do) pick up the plugin regardless of if it’s a single file or a directory. Having it as a directory is more in-keeping with other platforms and formats, it also allows resources to be stored as part of the plugin bundle/directory which is often nicer for users (and installers!) if they want to move or delete the plugin, there’s generally less files to find.

Yes, to the best of my knowledge it generates a file by running the plugin and generating the info (this ensures the info in the generated file and the plugin always stay synchronised). The file generated can then be read by hosts to speed up plugin loading times as they don’t need to load the plugin to retrieve the same information.

So let’s assume my plugin is crashing during the manifest generation. Can this step be temporarily disabled so that I can at least finish the compilation and have it copied to the correct location for testing?

I’m assuming you’re using the Projucer and Xcode based on our other conversations. If so probably the quickest and easiest way right now is probably to do the following

  1. Show the project navigator
  2. Select the project
  3. Select the target
  4. Select the “Build phases” tab
  5. Comment out the lines that run the helper (I’ve commented two lines here but you probably only need to comment line 5)

1 Like

Thanks, but this discussion is related to Projucer and Windows VS 2019.

I know much less about Windows and VS 2019 than I do about Xcode (mainly a Mac developer). What would be the equivalent steps for VS 2019? Much appreciated…

  • Right-click the plugin project in the Solution Explorer pane
  • Select “Properties” from the menu
  • On the left side of the window, expand “Build Events” and select “Post-Build Event”
  • You can set “Use In Build” to “No” to disable the full script (including plugin copy step), or you can comment/remove individual lines
1 Like

Thanks for all your help on this; I was able to get past it and figure out what was wrong with my code (recently introduced) that was causing it to crash while trying to generate the manifest info.

1 Like

my issue was helper.manifest was in gitignore so did not sync between machines and had gone…
JUCE\modules\juce_audio_processors\format_types\VST3_SDK\helper.manifest
copying again from JUCE source fixed the issue for me.

How about an option for Projucer for this ?

Just came across this issue now too (VS2022 - VST3 build).
Turns out in the past I’ve always had .manifest files in my .gitignore, so the .manifest files inside the juce/modules directory were not added when I updated my custom JUCE repo to JUCE 7.0.10 recently.

Having to run the plugin as part of of the build process - could potentially lead to a lot of confusion when builds might potentially ‘fail’ due to a crashing plugin (even though the plugin was built).
Hopefully the build errors make it clear what’s going on.

It might be useful to add some notes in the JUCE changes list about this. I can’t find anything explaining what the VST3 manifest/manifest helper project is all about (there’s only a couple of comments about VST3 manifest generation fixes).

I see also now the vst3 is wrapped inside a folder (containing the plugin descriptor .json file) - I know this has something to do with enabling faster plugin scans in DAWs, but will have to read up on that… it probably affects my installer generation.