Skip to main content

Plugin update server - options to run our own version?

Comments

4 comments

  • Official comment
    Jonas Kuhn

    Hi Alex,

    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`:

    override-property-com.biomatters.geneious.userEditablePreferences.CustomPluginXmlUrl=https://url.to.your.server/MyCustomPlugins.xml


    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:

    <plugins>
    <plugin isNoteWorthy="false" isProOnly="false" releaseDate="2022-08-18">
    <name>Name Of Plugin</name>
    <className>com.plete.path.to.YourPlugin</className>
    <description>Some Description</description>
    <authors>Alex</authors>
    <category>Alignment</category>
    <version minimumApiVersion="4.202212" maximumApiVersion="4" pluginVersion="1.0.0" releaseDate="2022-08-18" isBeta="true">
    <changes/>
    <file>
    <platform>Windows</platform>
    <platform>MacOS</platform>
    <platform>Linux</platform>
    <url>http://url.to/my/plugins/MyPlugin.gplugin</url>
    </file>
    </version>
    </plugin>
    </plugins>


    The full scheme is this:

    <!DOCTYPE plugins [
    <!ELEMENT plugins (plugin*)>
    <!ELEMENT plugin (
    name,
    className,
    description,
    authors,
    screenshotUrl?,
    category*,
    downloadUrl?,
    version*,
    upOnlyVersion*)>
    <!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-->
    ]>
  • Alex Zwetsloot

    Hi Jonas, 

    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?).

    Many thanks,

    Alex

    0
  • John Deck

    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?  thanks

    0
  • Jonas Kuhn

    @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.