# Building VST3 plugin as a bundle on Windows?

**URL:** <https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428>\
**Category:** Audio Plugins\
**Created:** [January 7, 2023, 8:22pm UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428 "2023-01-07T20:22:57Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![hsetlik](https://avatars.discourse-cdn.com/v4/letter/h/85f322/32.png) [@hsetlik](https://forum.juce.com/u/hsetlik)\
**Post date:** [January 7, 2023, 8:22pm UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/1 "2023-01-07T20:22:57Z")

</div>

So I have a cross-platform VST3 plugin that, on MacOS, builds as a folder containing a ‘Contents’ folder which in turn contains a ‘Resources’ folder, the plugin executable, the code signature, etc. On windows, the same plugin builds as a single .vst3 file, but here on [Steinberg’s website](https://steinbergmedia.github.io/vst3_dev_portal/pages/Technical+Documentation/Locations+Format/Plugin+Format.html#for-the-windows-platform) it describes Windows VST3 Plugins as bundles containing subdirectories similar to the MacOS equivalent. Is it possible to set things up in the Projucer or Visual Studio such that the plugin is built as a bundle? Any help appreciated!

---

<div class="post-metadata">

**Author:** ![leehu](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/leehu/32/3280_2.png) [@leehu](https://forum.juce.com/u/leehu)\
**Post date:** [January 7, 2023, 8:48pm UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/2 "2023-01-07T20:48:21Z")

</div>

Hi. What version of JUCE are you using? Think this was implemented as part of Juce 7, or a point release there-after.

Cheers

---

<div class="post-metadata">

**Author:** ![hsetlik](https://avatars.discourse-cdn.com/v4/letter/h/85f322/32.png) [@hsetlik](https://forum.juce.com/u/hsetlik)\
**Post date:** [January 7, 2023, 8:57pm UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/4 "2023-01-07T20:57:26Z")

</div>

Thanks for the reply- I’m using 7.0.3.

---

<div class="post-metadata">

**Author:** ![leehu](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/leehu/32/3280_2.png) [@leehu](https://forum.juce.com/u/leehu)\
**Post date:** [January 7, 2023, 9:10pm UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/5 "2023-01-07T21:10:54Z")

</div>

Hi - not sure then I’m afraid, I’m getting folders created. Maybe an option somewhere??

---

<div class="post-metadata">

**Author:** ![hsetlik](https://avatars.discourse-cdn.com/v4/letter/h/85f322/32.png) [@hsetlik](https://forum.juce.com/u/hsetlik)\
**Post date:** [January 7, 2023, 9:13pm UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/6 "2023-01-07T21:13:12Z")

</div>

Are you using Projucer or CMake?

---

<div class="post-metadata">

**Author:** ![leehu](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/leehu/32/3280_2.png) [@leehu](https://forum.juce.com/u/leehu)\
**Post date:** [January 7, 2023, 9:28pm UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/7 "2023-01-07T21:28:57Z")

</div>

CMake - thinking about it now, this might be only implemented in that rather than projucer.

---

<div class="post-metadata">

**Author:** ![hsetlik](https://avatars.discourse-cdn.com/v4/letter/h/85f322/32.png) [@hsetlik](https://forum.juce.com/u/hsetlik)\
**Post date:** [January 7, 2023, 9:33pm UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/8 "2023-01-07T21:33:59Z")

</div>

Yeah I don’t see any options for it in the Projucer. May need to bite the bullet and make the switch over.

---

<div class="post-metadata">

**Author:** ![hsetlik](https://avatars.discourse-cdn.com/v4/letter/h/85f322/32.png) [@hsetlik](https://forum.juce.com/u/hsetlik)\
**Post date:** [January 8, 2023, 10:04pm UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/9 "2023-01-08T22:04:18Z")

</div>

Ok it looks like I will use CMake- would you mind showing or describing how you set up the VST3 target in CMakeLists.txt?

---

<div class="post-metadata">

**Author:** ![leehu](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/leehu/32/3280_2.png) [@leehu](https://forum.juce.com/u/leehu)\
**Post date:** [January 9, 2023, 11:08am UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/10 "2023-01-09T11:08:38Z")

</div>

In the juce\_add\_plugin section, I have:  
FORMATS Standalone VST VST3 AU  
VST3\_COPY\_DIR “${USER\_ROOT}Library/Audio/Plug-Ins/VST3”

---

<div class="post-metadata">

**Author:** ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)\
**Post date:** [January 16, 2023, 2:17pm UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/11 "2023-01-16T14:17:35Z")

</div>

The Projucer’s MSVC exporter now builds VST3s as bundles. You’ll need to build the Projucer from JUCE’s develop branch in order to make use of this new feature.

> <https://github.com/juce-framework/JUCE/commit/4deea8ed93ce12458da1e8afea6a4ceb0db35b42>

---

<div class="post-metadata">

**Author:** ![RolandMR](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/rolandmr/32/641_2.png) [@RolandMR](https://forum.juce.com/u/RolandMR)\
**Post date:** [January 21, 2023, 5:22am UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/12 "2023-01-21T05:22:48Z")

</div>

Is it possible to opt out of this? kinda breaks existing plugins. Or is it mandatory for vst3 going forward?

---

<div class="post-metadata">

**Author:** ![Verbonaut](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/verbonaut/32/11824_2.png) [@Verbonaut](https://forum.juce.com/u/Verbonaut)\
**Post date:** [January 21, 2023, 9:20am UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/13 "2023-01-21T09:20:10Z")

</div>

Not using bundles is deprecated, but to ease a transition to a world where we are distributing VST3 as a bundle I think it would be helpful if this could be an option in Projucer rather than default behaviour so we can adopt this at our own speed. Changing where things land in a folder structure is a breaking change for many post-build systems.

---

<div class="post-metadata">

**Author:** ![asimilon](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/asimilon/32/4235_2.png) [@asimilon](https://forum.juce.com/u/asimilon)\
**Post date:** [January 21, 2023, 10:56am UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/14 "2023-01-21T10:56:40Z")

</div>

FYI there is still a single “flat” file in the bundle that you can pull out or use exactly as before.

eg. if before this change you had the flat file at `Release\MyAwesomePlugin.vst3`,  
now `Release\MyAwesomePlugin.vst3` is a directory and your post-build script will blow up, but you can find the flat file at `Release\MyAwesomePlugin.vst3\Contents\x86_64-win\MyAwesomePlugin.vst3`, which (if you made use of variables throughout the build script) should just be a one-line change. Even if not you could just add another tiny little script before to pull the flat file out and place it in the spot where your post-build scripts expects it.

---

<div class="post-metadata">

**Author:** ![RolandMR](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/rolandmr/32/641_2.png) [@RolandMR](https://forum.juce.com/u/RolandMR)\
**Post date:** [January 21, 2023, 4:13pm UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/15 "2023-01-21T16:13:52Z")

</div>

It would have been nice if this was mentioned in breaking changes txt.

---

<div class="post-metadata">

**Author:** ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)\
**Post date:** [January 26, 2023, 11:59am UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/16 "2023-01-26T11:59:03Z")

</div>

Sorry for the disruption. We removed bundle support in version 7.0.5, released yesterday. We added bundle support back on the `develop` branch, and also added an entry in the BREAKING-CHANGES doc:

> <https://github.com/juce-framework/JUCE/commit/65305b1afe2a3d34dd49a09ce6928b6df922e36d>

---

<div class="post-metadata">

**Author:** ![lcapozzi](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/lcapozzi/32/10960_2.png) [@lcapozzi](https://forum.juce.com/u/lcapozzi)\
**Post date:** [January 26, 2023, 2:31pm UTC](https://forum.juce.com/t/building-vst3-plugin-as-a-bundle-on-windows/54428/17 "2023-01-26T14:31:28Z")

</div>

I have concerns about what happens during updates of existing plugins that have the “not bundled” version of the VST3 file. If the old file will be safely replaced, it’s would be perfect, but I haven’t tried yet.

Anyone already tried and can share his experience?
