Online Updates for a Plug-in


#1

Hi.

I want to automatically update my plug-in.
I checked some installers like NSIS but didn’t find anything appropriate.
The idea I have is to have 2 DLLs, one is the JuceVSTWrapper with a LoadDynamicLibrary() in its const that will load the 2nd
DLL with the content of my plug-in, this way I will be able to check for updates and download a new version of the 2nd DLL if needed and replace it next time my plug-in is loaded while the DAW will always see only the 1st DLL.

I will also support an OSX version.

Is is too crazy? isn’t any better way to do that?

Thanks.


#2

I’ve done a lot of things like that in my software to date and, to be honest, I would not do it again. IMO the most robust solution is to check for updates and point your users to a website for download.

Checking for updates is a the simple part, but getting a reliable integrated installer is hell. Other than on the Mac (Unix), under Windows it is impossible to delete an executable that is currently running. You will need a batch or other form of external script that kills your running process (or waits for it to quit), then replace it, and restart. This introduces a number of additional points of potential failure, i.e. only works in 9 out of 10 installations.

Your nested DLL idea sounds good and might solve some of the problems. But what about plugin version, parameter names, etc? You can not replace these dynamically anyway. You’re putting a lot of extra work on your shoulders only to save the user an extra mouse click.

And last but not least, it’s a good thing having your users visit your site for updates. It’s a great opportunity to keep them informed about new products, events, new features, etc.


#3

Thanks again Ans.

I unwillingly started working on this feature exactly because of the reasons you’ve mentioned.
But I thought that the advantages it offers overcome the disadvantages.

It’s working fine for now but I didn’t do enough testing yet.


#4

My Idea was to create an update module that will be robust enough to not do harm in any case.
In the worst scenario it will just won’t update the plug-in.

So even if it will work 80% of the time then it will be fine with me, the rest 20% will just do it manually.

I’m not there it, but this is the general direction.