Go Down

Topic: Arduino Library downloader (Read 12373 times) previous topic - next topic


Great tool!!

I use something similar into a GIS open source program: QGIS. It has a similar tool to download scripts and tools from the official repository, but also from three-part repositories... It also show an advise when new version from a library is available. Other interesting option: it allows you to install libraries and also remove them. Just only some ideas that could be interesting for this library download tool for Arduino IDE.

Thanks for this tool!


Nov 23, 2010, 01:28 pm Last Edit: Nov 23, 2010, 01:29 pm by beowulf6 Reason: 1
I am really interested if my tool even works for anyone.

I just tested it on a different PC and the application didn't start at all. :-/

Now switching the development tools and will see if it works better.
Nice side effect is a Development environment where i am more comfortable with.
Just solving the last problems.

Of course i am not thinking someone is an ass just for suggesting something. Even a rewrite.

Maybe when i am more comfortable with building GUIs with wxWidget i might be able to make a small C++ IDE for Arduino. :-?

The remove libraries feature is already planned.


I know the argument for JAVA for the IDE comes with the understanding that it is what is required for cross platform development... but C++ with WxWidgets seems to be well supported on multiple platforms... so... good choice.   :-)

It seems that a WxWidgets solution should be able to work for Linux and Apple in additional to Windows.  Good Luck.


Nov 24, 2010, 10:33 am Last Edit: Nov 24, 2010, 10:42 am by beowulf6 Reason: 1
so i got my development environment working yesterday.

i compiled it and it also works now on the PC where the application didn't started before.
So i think this is a good sign.

i also got some code running to extract the library zips directly with the zip library. Just need code the folder structure creation from the zip. (currently only in the SVN)

when that code works some library zips might no longer be supported because of different folder structures but i think the advantages outweigh the disadvantages in the long term and it will be easier to compile on different platforms without the need of 7zip.

After that i will look to parse the XML from AlphaBeta. It would be nice if i could get a working example from this XML with at least 1 working testentry.

If someone wants to help in programming this, i can create him a SVN login with write access of course. :)

I hope i do not Spam here or we should talk outside of this forum.


I'm interested in contributing to this, maybe we should set up a group somewhere, so we can talk and decide how to proceed.

I'd like to focus on the web/backend and maybe you should focus on the client?

We could continue our discussion here, so all can contribute with feedback/questions etc etc.

What you think?



I tried using the application on my pc (Windows XP Pro) but it cannot find mingwm10.dll.

I may well be doing something stupid......



I reckon a public upload of libraries, with a mandatory structure check as proposed, would be the easiest for all to work with. I know I won't contribute if it takes effort.. (I mainly specialise libraries for my own needs).
It should be a trivial matter of making two lists, one for 'tried&tested' and one for 'new and/or experimental'.
When a library gets X 'works flawlessly' marks, it gets moved to the 'tried&tested' list. This should make it easier to navigate for both newbies and veterans.

I'd also like to suggest the ability to include a link to another library with an entry. For instance, there is a LCD library. There is a specialised 4bit LCD library (I know this can be done with the current version of the LCD library, but the LCD shield from DFRobot for instance also includes 5 buttons on an analog pin) and then there is the shift register powered LCD display library.
This would make it easy to see which libraries are specialised, derivatives or alternatives of a particular library.


and thanks for testing it aliensailor.

that is a dll from the compiler. just like the vc++ runtimes i think.

it should only be needed as long as it is compiled as a debug executable.
I now included it into the zip file in the main post so if you re download it, it should work now.

Sorry for that but i am relatively new to this.

we can of course continue to talk here. But i also added you to Google Talk if you don't mind. :)


Would it be simpler just to setup/maintain an apt repository ?


Nov 25, 2010, 01:19 am Last Edit: Nov 25, 2010, 01:34 am by AlphaBeta Reason: 1
I've been working a bit more on the UI and the database/storage.

http://www.arduinolibraries.net/ please give me feedback and ideas.

The thought as far as voting / quality assurance is that one can say 'I like this library' and then if a version of the library does not work, it can be 'voted' as working or failing. This is so that a new version won't be degraded because of older versions. And it would give the developer a feeling of the how the library is liked.

I've also added the notion of categories AS WELL AS tags, and the thought is that one ca browse all libraries that are marked as category C or browse libraries that are tagged T.

I think we should keep the categories well defined, and tags user defined. What categories do we need?
A tag is added by simply writing it into the tags text field (and will be stored lower case, not duplicated because of case variance).

Have anyone looked at the XML ? There might be something I've forgotten there. Now, with the categories and tags I know that's not in there.

So, a question: should libraries be password protected? So that only the author can edit it?
Do we need multiple authors per library? Is it okay to have a 'main author' and later add authors ?
[edit]Updated the XML and the Schema, it has a 'popularity' field for the library, and a score per version. Additionally I added category and tags.[/edit]


Nov 25, 2010, 02:03 am Last Edit: Nov 25, 2010, 02:03 am by AlphaBeta Reason: 1



looks somewhat complicated. I hope when you are finished i will be able to parse your XML correctly. ;)

I now finished the stuff i really wanted to do in the application.

It does not longer depend on the 7zip executable and is extracting the library on its own. Only supporting Zip at the moment.

with this change there are 3 libraries that might not longer be compatible because of a different folder structure.
I commented them out in the XML.

It is now also possible to remove libraries that you installed before.


for deinstalling the application is analyzing the zip that you downloaded and removes the files according to the structure in the zip file.

I hope this works correctly. so it should not be possible to remove files outside of the scope and without adding the structure to the XML.


Nov 25, 2010, 10:28 pm Last Edit: Nov 25, 2010, 10:36 pm by AlphaBeta Reason: 1
I just thought of somethings:

1] It might be beneficial to denote which versions of Arduino that are tested? Both the IDE and the µCU, and that might even be a pair so:  0015+Pro, 0020+Deicimila, 0021+Uno. ?

2] Should we include a feature to store complete sketches? Say a theremin sketch, or an airsoft dummy timed bomb etc etc. I think it might be cool, but then again, maybe the playground is a better place for this?
[edit]Tested it now, on Windows 7, and download works (although the UI does not update to show that a library is installed until a restart occurs). Remove does not work, it seems like the xml/internal state is updated because after a restart it does not show up as -installed- even though it is in the folder.

I think you probably should browse the provided library and scan for installed libraries. Now it seems like the libraries has to be installed through you app. This, of course opens another can of worms because now, people expect to be told what version it is, so then we need some unified way of denoting the version in the header, so we can scan for it when scanning the folder for installed libraries...[/edit]



which version is tested might be nice to know. didn't thought about that before.
I think there are some libraries that are not compatible with some version of the Arduino IDE.

example sketches can already be inside the library.zip. so i think this is enough to start with a library.

And thanks for testing the program.
It is saving the version of the installed library in the registry from windows, or once it will get compiled under linux in an ini-file.

You can find the registry keys in:

I don't know what might go wrong for you but you can check this registry key.

Of course i thought about finding already installed libraries, but the subdirectory where the library is inside can be named like everyone want and i don't have an idea how to know what library and what version of it is in this directory.

The delete library button will change right after you installed a library.
But you are right. i already changed the application so it updates the listitem and description directly.


Nov 27, 2010, 02:32 am Last Edit: Nov 27, 2010, 02:34 am by beowulf6 Reason: 1
I did some small User feedback optimization, so the user sees the process bar when the install or remove process starts and not when it is already finished.
updated the old link for the application.

I also tried to begin with a small IDE with the Scintilla wrapper.
It is not usable at the moment. It is only possible to open a file, edit it and to save it back.
The syntax highlighting needs more work too.

I looked a little bit at the source code from the Arduino IDE and the compile process looks quite complicated.
That will be much work i think.

see a small screenshot here

Go Up