How can one go about programming multiple PICs without requiring an external Programmer? Am looking for a way for the end user to plug in a cable (Serial or Parallel) to our end product to program an updated version of firmware to multiple PICs if needed.
The following are some of the solutions I have thought about:

1. The easiest solution is to have three cables that plug in to an 11 port connector (The three PICs will share Vdd and GND).
2. Using an external Multiplexing switch that selects which PIC to program at a time and use one cable in this case.

The ultimate solution however will be a way to write code in such a way that each PIC is programmed in sequence (one at a time) using software to select which PIC to program until all three have been programmed using the same cable. The idea is a GUI interface that can be sent to an end user and one cable so that the user can click on an icon to program each PIC and the firmware will be able to differentiate which PIC to program based on the user input.

To make sure that this idea is viable, what are the different ways to program a PIC without using the external programmer?
Also does anyone have an idea of how to program PICs in Parallel?

I would really appreciate any suggestions or assistance as to how to solve this issue. The code can be in C or ME Pro-basic whichever works better.