Hi everyone,
I made a distribution script for my JUCE VST3 plugin by following this awesome guide. In my script I codesign the vst3, bundle it into a pkg and I notarize and staple it, just like in the guide. I check the VST3 with codesign -dv and everything looks fine. A few months ago this same script created a pkg successfully that I was able to use for installing the VST3 in any computer.
A couple of days ago I wanted to release a new build of my plugin for testing in my 2nd computer. It created the pkg apparently susccesfully, throwing no error logs. But after I installed the plugin in a new computer, it wouldn’t load in Ableton or Pluginval. These are the logs I get in Pluginval from the 2nd computer:
Starting tests in: pluginval / Open plugin (cold)… The bundle couldn’t be loaded. JUCE Assertion failure in juce_VST3PluginFormatImpl.h:1104 !!! Test 1 failed: Expected value: , Actual value: Unable to load VST-3 plug-in file JUCE Assertion failure in juce_UnitTest.cpp:314 !!! Test 2 failed: Unable to create juce::AudioPluginInstance JUCE Assertion failure in juce_UnitTest.cpp:314 FAILED!! 2 tests failed, out of a total of 2 ----------------------------------------------------------------- Starting tests in: pluginval / Open plugin (warm)… The bundle couldn’t be loaded. JUCE Assertion failure in juce_VST3PluginFormatImpl.h:1104 !!! Test 1 failed: Expected value: , Actual value: Unable to load VST-3 plug-in file JUCE Assertion failure in juce_UnitTest.cpp:314 !!! Test 2 failed: Unable to create juce::AudioPluginInstance JUCE Assertion failure in juce_UnitTest.cpp:314 FAILED!! 2 tests failed, out of a total of 2 FAILURE *** FAILED
I checked juce_VST3PluginFormatImpl.h:1104 and it look like jassert (factory != nullptr) is triggered because it can’t find the VST3 GetPluginFactory function. This seems like a big clue, but I don’t know how to debug this error, any ideas?
I went back in my repo to the tag of the version that I was able to distribute successfully months ago, and I’m still getting the same error logs from Pluginval. I’m building exactly the same code with no changes, so I suspect there’s something wrong in the distribution process that now is going wrong. But I don’t know what to check.
These are the commands generated by my distribution script:
codesign --force -s “Developer ID Application: My Name (XXXXXXXXXX)” -v build/juce_plugin/MyPlugin_artefacts/Release/VST3/MY-PLUGIN_0.7.0.vst3 --deep --strict --options=runtime --timestamp
codesign -dv build/juce_plugin/myplugin_artefacts/Release/VST3/MY-PLUGIN_0.7.0.vst3
pkgbuild --identifier com.myplugin.myplugin.vst3 --version 0.7.0 --component build/juce_plugin/myplugin_artefacts/Release/VST3/MY-PLUGIN_0.7.0.vst3 --install-location /Library/Audio/Plug-Ins/VST3 myplugin.vst3.pkg
productbuild --resources ./resources --distribution distribution.xml --sign “Developer ID Installer: My Name (XXXXXXXXX)” --timestamp myplugin_0.7.0.pkg
pkgutil --check-signature myplugin_0.7.0.pkg
xcrun notarytool submit myplugin_0.7.0.pkg --apple-id myemail@domain.es --password xxxx-xxxx-xxxx-xxxx --team-id XXXXXXXXX --wait
Can you spot anything wrong in it?
Thank you for all the priceless information you share in this forum. I’ve been reading it a lot lately, now that I’m working on a JUCE plugin project. It has been a huge help!
