I would like input into the feasibility of using Teensy 3 in a product that allows end users i.e. "consumers" to update the firmware through an application.

I understand that you can force Teensy 3 into the bootloader mode through the PROG line.
How is the .hex file then loaded into Teensy? I assume that something like avrdude could be called in the background from a product update application?
After the upload is complete, must Teensy 3 be Reset in order to run the new firmware?

Example:
Teensy 3 is embedded into a consumer product, and the product gets shipped to 100 customers. I'm looking for a way to easily allow these customers to update the firmware in the product as it evolves and new features are introduced. These would be non-technical customers.

Ideal customer use case:
* user plugs a usb cable between product (with embedded Teensy 3) and PC
* user runs product update software (company branded user interface)
* user selects appropriate firmware file (pre-compiled code) and clicks "update".
* New firmware is loaded onto the Teensy 3.

Appreciate any insights and advice!