This heater was specifically manufactured for a Willys, with two of the three mounting points making use of existing holes in the firewall. Similar models were produced for other brands of vehicles but the mounting holes may not line up . Besides the two large holes for the coolant lines, only an additional 5/16" bolt hole was needed. Be aware that the coolant lines stick out straight on some non-Willys models and will hit the fender. The Willys version has the lines angled for clearance.
Two of the bolt holes for the air cleaner brackets are used to secure the heater. The added third hole is visible next to the grommets for the cooling lines:
The heater case has two studs and a captive nut for a bolt through the firewall. Note how the bracket for the upper mounting stud will fit flush against the firewall. The fan motor is not installed in this image:
The bolts for the air cleaner brackets have captive nuts on the aft side of the firewall. A simple cage spot welded to the firewall holds each captive nut. The upper stud on the heater is not very long, so that captive nut must be removed from the firewall. My attempt to break the spot weld was unsuccessful, so the offending cage was pried open and the nut removed. The cage was then hammered flat against the firewall. In this view, looking forward from the passenger floorboard, the flattened cage is visible at the top. Note the six screws for the data tags:
As the thickness of the other captive nut wasn't a problem, it was easier to drill out the threads in the captive nut. Note the ignition coil at the top of the picture:
Determining where to drill the holes for the coolant lines and lower bolt requires some careful layout work. Disassemble the heater case and hold the inner half against the firewall. Leave the heater core with the outer case half. That way the inner case half can be held against the firewall without the protruding coolant lines. Guide the two studs into the existing holes where the captive nuts were removed. To mark the third hole, a 1/4" drill bit inside the 5/16" captive nut worked well. Reach through the hole for the fan and twist the drill several turns by hand. This will leave a small mark in the center of the hole. A short pencil that fits tightly inside the captive nut could also be used to mark the center of the bolt hole:

Once the bolt hole is drilled and deburred, the location of the holes for the coolant lines are carefully calculated. The angle of the lines and tight quarters behind the firewall make it difficult to lay out the holes directly on the vehicle. I used a two-piece cardstock template to replicate the firewall. In this image, the larger piece of cardstock is secured to the heater case. The smaller piece of cardstock has two holes sized to fit the grommets. The large holes can be centered around the coolant lines by moving the smaller piece of cardstock. The grommets I used fit a 1" hole, but yours may be different. The two holes are on 1.875" centers to match the coolant lines, but yours may also be different. Make sure the cardstock is perfectly flat, as any warpage will affect the fit around the coolant lines. Once everything is lined up, tape the two pieces together:

Using the taped template, I transferred the critical measurements to a sturdy template made from a piece of plywood. Not wanting to drill any more firewall holes than absolutely necessary, as a test I drilled the four referenced holes on a piece of sheet metal using the plywood template:
With a satisfactory fit ensured, the firewall was next. The fender will interfere with a drill, so the holes must be tackled from under the dashboard. In this image, the plywood template is bolted in place. Note how the template was trimmed to clear the data tag screws and remaining captive nuts. A sheet metal template could have been used, but plywood was easier to fabricate and the extra thickness provided a better guide for the hole saw:

With the grommets installed, the heater was wrestled in place. Liquid soap helped ease the coolant lines through the grommets. Even so, it was necessary to superglue the grommets to the firewall or they kept popping out. Wrap the heater in a blanket to protect the finish, as there is very little clearance behind the lip of the dash while maneuvering the unit in place. Here is an installed view, with the heater switch also installed. (The decal on the case was added later.) Judging from several pictures in original manuals, the switch went slightly to the right of the parking brake handle. Because of the transmission hump, a stubby bit (or 90 degree drill) will be needed for the switch mounting hole in the bottom lip of the dash:
I traded one of my kidneys to bring home that NOS heater switch. The box is printed with Willys part number 815084, with 669737 penciled next to it. Note the "HEAT" text on the toggle. I've seen other versions with a white toggle:
The terminals are visible in this shot. The switch has three speed selections plus off. I routed power via the ignition switch so the fan shuts off with the engine:
Here is a side view from under the driver's side dash. Note how a nut is directly behind the drilled-out captive nut on the firewall. One word of caution, the resistor on the back of the switch gets incredibly hot. Ensure the wires don't touch it and that there are no combustible objects nearby:
The 1949 CJ-2A/3A parts list (p. 128) details the parts needed for installation. Unfortunately, there was no illustration. Note the specified lengths for the heater hoses. I'd trade my other kidney for a copy of the installation instruction sheet:
3/8" pipe thread fittings are used for the coolant line connections on the engine. Hot coolant is supplied from a fitting just aft of the #4 spark plug. Willys used a 90 degree shutoff valve at this location. Thanks to Ric Meagley for supplying this picture of an original valve:
A simple elbow has been substituted until I can locate such a valve. The return line connects to the water pump with a 45 degree fitting. If you can't find fittings like these, try a marine supply shop:
Here is a close-up of the 90 degree elbow and hose barb installed at the back of the cylinder head. With the close proximity of the cylinder head studs and firewall, install the elbow first and then the hose barb. Thread sealant ensures a leak free connection:
Likewise, install the elbow at the water pump before installing the hose barb. The oil filter bracket is very close, requiring a 45 degree elbow for clearance. A 90 degree elbow here would cause the hose to hit the generator:
The heater hoses are normally secured by a special clip on the fender. I believe this picture is of the specified 669733 bracket. I don't remember the source of this picture. If it is yours, please contact me so I may give proper credit:
The routing of the hoses can be seen in this image. Note the gap between the hoses and fender, which will require some sort of spacer under the clip. Several Jeep owners with the same heater have told me they did not have this clip. An educated guess is that dealers performing the installation left the clip out if there was a gap, which is what I did: