devinw1:
I was just thinking more about keeping the process easy and self-contained, but I suppose downloading the Arduino IDE is not such a difficult thing. And it is free.
While it is free, from time to time there can be issues with IDE versions or the 3rd party libraries that can cause things not to build or create uploading issues.
And various 3rd party libraries have to be installed.
All this can add up to create some support head aches.
And just to be clear, there isn't such a thing as a "Mini Arduino" application that ONLY sends sketches to a board is there?
If what you mean by "Mini Arduino" is something that sends a pre-built image.
Then, "yes" but it isn't called "Arduino".
The IDE calls a tool called avrdude under the hood to do the uploading to AVR devices once the image has been built.
You could use that directly.
For an embedded project I was involved with (The USBASP project)
I created wrapper scripts for avrdude to make it easy to update the firmware in a USBasp device.
(but these scripts are not unique to that device / project)
It allows users to drag and drop pre-built firmware images to update the device on Linux, MAC, and Windows.
The issue you can have is identifying the programming port in the case of using a serial port when talking to an Arduino bootloader.
That is the most problematic for users since it isn't obvious what the port name is, this is particularly difficult on Windows.
Essentially you have to ask the user for it.
This can be avoided by using ISP programmers such as USBasp or USBTiny.
For those ISP programmers avrdude can automatically locate the USB ISP device so the user doesn't have enter in anything.
IMO, this makes the easiest to use user experience as they simply drag and drop a file and the device is updated.
For this methodology, you could provide a downloadable image that contained avrdude, the wrapper scripts, and the firmware image.
The user could drag and drop the file to to the update or you could simply create a wrapper script that just does it.
If you look at the USBasp project it provided scripts and the user could enter in the path for the avrdude tool if it wasn't already on his path.
The more recent IDE versions now can be run from the command line instead of the GUI.
This is the command "arduino-builder" that can be wrapped in script to automate an upload.
If you google around you can find more info about it.
Then there is the tool called "Arduino Builder" which 3rd is a party tool which can do builds and uploads from pre-built images.
It was created before "arduino-builder" exists, but seems to have been maintained up to last year.
I haven't used it but that might be an option.
https://forum.arduino.cc/index.php?topic=151774.0
http://arduinodev.com/arduino-uploader/