Plugin update server - options to run our own version?
I'm developing plugins that I'd like to distribute to my colleagues, and noticed that the Plugin system has the ability to keep plugins up-to-date from the server version of that plugin.
Is there a way for us to replicate this functionality in a private way, e.g. spin up our own plugin server, or share the .gplugin file in a similar way to how workflows can be shared between shared database users?
Many thanks for any info you can provide.
yes this is indeed possible.
You can specify the URL to your own server by setting `CustomPluginXmlUrl` in Preferences -> General -> Advanced,
or for other users by modifying `geneious.properties`:
You'll need to point this to an XML file that you keep up-to-date with the plugins that you want to distribute; a short example could look like this:
<plugin isNoteWorthy="false" isProOnly="false" releaseDate="2022-08-18">
<name>Name Of Plugin</name>
<version minimumApiVersion="4.202212" maximumApiVersion="4" pluginVersion="1.0.0" releaseDate="2022-08-18" isBeta="true">
The full scheme is this:
<!DOCTYPE plugins [
<!ELEMENT plugins (plugin*)>
<!ELEMENT plugin (
<!ELEMENT name (#PCDATA)>
<!ELEMENT className (#PCDATA)> <!--fully qualified class name of the plugin class. For wrapper plugins, this should be equal to the name attribute in the plugin's pluginWrapper.xml's wrapperPlugin element-->
<!ELEMENT description (#PCDATA)>
<!ELEMENT authors (#PCDATA)>
<!ELEMENT screenshotUrl (#PCDATA)> <!--should be 200x140 pixels-->
<!ELEMENT category (#PCDATA)> <!--Assembly, Alignment, Phylogenetics, Protein, Nucleotide, Services and Searching or Misc-->
<!ELEMENT downloadUrl (#PCDATA)> <!--Optional URL of a web page where the plugin can be downloaded. If the plugin is not installed the user will be sent here instead of downloading directly. Updates are always downloaded directly if plugin is already installed.-->
<!ELEMENT version (changes, file+)>
<!ELEMENT upOnlyVersion (changes, file+)> <!--Plugins to only upload but not promote & not show in Geneious Downloadable plugins. Mainly for experimental plugins-->
<!ELEMENT changes (#PCDATA)> <!--list of changes in this version, html tags accepted-->
<!ELEMENT file (platform+, url)>
<!ELEMENT url (#PCDATA)> <!--URL of the gplugin file-->
<!ELEMENT platform (#PCDATA)> <!--add one of these for each platform supported by the gplugin, must be one of: All, Windows, MacOS, Linux-->
<!ATTLIST version minimumApiVersion CDATA #REQUIRED> <!--must be a decimal in the form x.y-->
<!ATTLIST version maximumApiVersion CDATA #REQUIRED> <!--must be an int-->
<!ATTLIST version pluginVersion CDATA #REQUIRED> <!--must be in the same form as a Geneious version number eg. x.y(.z)-->
<!ATTLIST version releaseDate CDATA #REQUIRED> <!--yyyy-MM-dd format-->
<!ATTLIST version isBeta (true|false) #REQUIRED> <!--beta version are clearly marked as such in Geneious and users are only informed of their release if they specify they are interested in betas-->
<!ATTLIST upOnlyVersion minimumApiVersion CDATA #REQUIRED> <!--must be a decimal in the form x.y-->
<!ATTLIST upOnlyVersion maximumApiVersion CDATA #REQUIRED> <!--must be an int-->
<!ATTLIST upOnlyVersion pluginVersion CDATA #REQUIRED> <!--must be in the same form as a Geneious version number eg. x.y(.z)-->
<!ATTLIST upOnlyVersion releaseDate CDATA #REQUIRED> <!--yyyy-MM-dd format-->
<!ATTLIST upOnlyVersion isBeta (true|false) #REQUIRED> <!--beta version are clearly marked as such in Geneious and users are only informed of their release if they specify they are interested in betas-->
<!ATTLIST plugin isNoteWorthy (true|false) #REQUIRED> <!--if true, users will be notified of its release and the plugin will be displayed at the top of the list with a star next to it-->
<!ATTLIST plugin isProOnly (true|false) #REQUIRED>
<!ATTLIST plugin releaseDate CDATA #REQUIRED> <!--yyyy-MM-dd format, if the plugin has a recent release date then it will be marked as NEW in the plugin list-->
<!ATTLIST plugin isPayFor (true|false) #IMPLIED> <!--whether a license/trial is required in the plugin, false if not specified-->
First of all big thanks for responding to this.
Can I ask, does the "Check for plugin updates now" button check against this custom xml file as well? And if so, what is the change that triggers an update (e.g. pluginVersion, releaseDate?).
This question pertains to users in a particular environment as gradle.properties needs to be accessed on a shared network drive, right? What if we want to let any user of geneious be notified of plugin updates to a particular plugin? E.g. i write a plugin and it is distributed to users in several countries running different versions of geneious and then i write an important update to the plugin and want all these users to be notified of the plugin update when they login next? thanks0
@Alex: Yes, "Check for plugin updates now" will also check the custom xml file for updates. It will only look at version numbers, not at the release date.
@John: I'm afraid informing users about plugin updates is only possible if they're using the `CustomPluginXmlUrl` mentioned above, as plugins themselves are not aware of their distribution channels and can't 'listen' for updates.
However, for all users that do set up the CustomPluginXmlUrl, they will be informed once that file is updated, as long as they have access to the file.
Also, where you keep `geneious.properties` for distribution to your users is up to you and does not necessarily need to be in a shared network drive; although practically that is probably the most common use case. (You could however also make it available on some public domain, as long as it doesn't contain any sensitive information such as passwords or licenses, and it will be up to users to use it.)
I'm not sure whether this addresses your question adequately, please let me know if you need more information.0
Please sign in to leave a comment.