[ImageJ-devel] Fwd: Updater in ImageJ2

Johannes Schindelin Johannes.Schindelin at gmx.de
Wed Jan 30 12:39:46 CST 2013

Hi Nico,

On Mon, 28 Jan 2013, Nico Stuurman wrote:

> It would be nice to finally get Micro-Manager distributed through the
> Fiji/Imagej2 updater (which of the two should I be using).

Yeah! Actually, the Fiji updater migrated to ImageJ2, so they are one and
the same (Fiji just hands off to ImageJ2).

> I tried both over Christmas break and got stuck pretty early on.  Below
> are the error messages from the ImageJ2 updater.    Advice on how to
> proceed will be appreciated!

I am sorry to have let this slip for so long, but unfortunately I have to
let it slip for a bit more. However, you'll be delighted to hear why: I am
busy preparing a publication (together with others) about that cool
project I told you about already in October 2010. It does involve an
update site serving a (slightly modified) Micro-Manager, so I did put in
some work into the updater to support Micro-Manager. (Don't worry, I
*want* to have our additional drivers/plugins in main-line Micro-Manager,
but due to my time management being blatantly ignored in that project, it
is not possible at this time.)

> > 12/24/12 12:41:58 PM	[0x0-0x2e02e0].net.imagej.ImageJ[11884]	Uncaught exception in thread Thread[AWT-EventQueue-0,6,main]
> > 12/24/12 12:41:58 PM	[0x0-0x2e02e0].net.imagej.ImageJ[11884]	java.lang.RuntimeException: Unknown update site in [null] (known: [])
> > 12/24/12 12:41:58 PM	[0x0-0x2e02e0].net.imagej.ImageJ[11884]		at imagej.updater.core.FilesCollection.getSiteNamesToUpload(FilesCollection.java:258)
> > 12/24/12 12:41:58 PM	[0x0-0x2e02e0].net.imagej.ImageJ[11884]		at imagej.updater.gui.FileTable.setFileAction(FileTable.java:355)
> > 12/24/12 12:41:58 PM	[0x0-0x2e02e0].net.imagej.ImageJ[11884]		at imagej.updater.gui.FileTable$FileTableModel.setValueAt(FileTable.java:461)
> > 12/24/12 12:41:58 PM	[0x0-0x2e02e0].net.imagej.ImageJ[11884]		at javax.swing.JTable.setValueAt(JTable.java:2710)
> > [...]

This looks as if you marked a file for upload, but somehow no update site
was associated with it. How exactly did you mark that file for upload?

>> > Is the idea that one can pull in the Fiji plugins through this
>> > updater?  How does one do so?

The idea is that the ImageJ2 updater on the user site will look at all the
update sites that were registered, and update existing, and install new,

The developer will add the update site with upload information and mark
the files for upload that have been updated/added, and mark files for
removal that became obsolete in the meantime.

I added to the Updater -- just for the purpose of Micro-Manager -- support
for the subdirectories lib/, mm/ mmfocus/ and mmplugins/:


I would have preferred to stay with the default directory layout of Fiji,
but did not dare to ask you to change Micro-Manager, as already my request
to allow for supporting multiple platforms by putting the
platform-specific files into mm/<platform>/ rather than the base directory
caused quite a few hiccups back in October 2010.

In the meantime, the command-line version of the updater also learnt a
couple more tricks that might be useful for Micro-Manager, such as:

- adding new update sites
- using SSH private keys via the configuration in $HOME/.ssh/config
- adding a 'show' command to show details about a given file
- showing upload conflicts that prevent a successful upload

Note that there is still no interactive conflict handling as in the
graphical version of the updater. This is mainly due to the fact that I
personally use the command-line version mostly in automated settings. But
I will set aside time to work with you on the Micro-Manager update site,
so we will sort out these issues, I am sure.

You can call the command-line updater like this:

	/path/to/Fiji.app/ImageJ-linux64 --update <subcommand> [<options>]

It will list the available subcommands if you call it without subcommand
or the 'help' subcommand.


More information about the ImageJ-devel mailing list