Dirk Stöcker schrieb:
> On Mon, 25 Aug 2008, Robin Rattay wrote:
>> Has this actually worked at all or only on specific environments? It
>> seems that the update mechanism needs to be changed.
>
> Works on Linux, but probably you're right and it wont work on Windows due
> to the strange Windows file locking. Anyway I seldom use Windows, so
> that's not my problem :-)
>
> Maybe a solution would be to store files with an intermediate name in
> case of copy failure and copy these on restart before plugins get loaded.
Here you go...
Robin
Index: src/org/openstreetmap/josm/plugins/PluginDownloader.java
===================================================================
--- src/org/openstreetmap/josm/plugins/PluginDownloader.java (revision 868)
+++ src/org/openstreetmap/josm/plugins/PluginDownloader.java (working copy)
@@ -53,12 +53,14 @@
}
@Override protected void realRun() throws SAXException,
IOException {
+ File updatedPluginDir = new
File(Main.pref.getPreferencesDir() + "plugin-updates");
+ if (!updatedPluginDir.exists())
+ updatedPluginDir.mkdirs();
for (PluginDescription d : toUpdate) {
- File tempFile = new
File(Main.pref.getPreferencesDir()+"temp.jar");
- if (download(d.resource, tempFile)) {
- tempFile.renameTo(new
File(Main.pref.getPreferencesDir()+"plugins/"+d.name+".jar"));
+ File pluginFile = new File(updatedPluginDir,
d.name + ".jar");
+ if (download(d.resource, pluginFile))
count++;
- } else
+ else
errors += d.name + "\n";
}
}
Index: src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- src/org/openstreetmap/josm/gui/MainApplication.java (revision 868)
+++ src/org/openstreetmap/josm/gui/MainApplication.java (working copy)
@@ -118,6 +118,17 @@
Main.pref.save();
}
+ // Copy updated plugins to proper directory
+ File updatedPluginDir = new File(Main.pref.getPreferencesDir()
+ "plugin-updates/");
+ File pluginDir = new File(Main.pref.getPreferencesDir() +
"plugins/");
+ if (updatedPluginDir.exists() &&
updatedPluginDir.isDirectory()) {
+ for (File updatedPlugin : updatedPluginDir.listFiles())
{
+ File plugin = new File(pluginDir,
updatedPlugin.getName());
+ plugin.delete();
+ updatedPlugin.renameTo(plugin);
+ }
+ }
+
// load the early plugins
Main.loadPlugins(true);
_______________________________________________
josm-dev mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/josm-dev