Like a few other posters, I am a mobile tech with a larger percentage of residential customers, but a handful of business customers as well. While my original pricing structure included an hourly rate for most onsite work, I almost never used it. Instead I chose to charge my flat "shop" rate. Mostly, this was out of fear, as I thought that $60 (my original hourly) x anything more than 1 hour would be too much to ask. I've grown up a little since then.
By far the majority of my business if flat rate, but that is by design rather than fear. There are very few repairs I get into that I don't simply walk away with the computer after about 5 minutes. Once I have it on my bench, like most of us, I can work on several machines, increasing my efficiency and profitability. The flat rate gives the customer a level of comfort, and allows me to easily adjust my prices and margins when necessary.
Onsite repairs/installs however, I have been charging an hourly rate. It seemed to be a more sensible thing and most of my customers had no issues with it. Recently, though, I have been trying out a fixed rate onsite charge, based on what experience has told me that particular job will take, time-wise. So if a printer install takes, on average, 30 minutes, I might charge a flat rate that would equate to an hour of my hourly rate. Some installs will take less, some more, but I come out well in the black overall. Clearly, this is an oversimplified example, but the idea is the same for most installs.
Of course, when things get out of hand with unforeseeable issues, my rate goes up. And this is made clear to all my customers ahead of time. This is working for me, but as always, YMMV.