For all the hype surrounding German engineering, you BMW guys sure do have to deal with a bunch of expensive, stupid shit. Leaky gaskets, faulty sensors, malfunctioning pumps, etc.
Performance engines are finicky, yo
;-)
FWIW, her car was ~15 yrs old and overdue for new ignition coils, valve cover gasket from small oil leaks, etc.
I also replaced an electric window actuator in it. I've done those on 3 different vehicles (all different designs); they are fairly easy to do, but take a lot of time, so any shop will charge you $500-1000 to work on one.
I had to replace my sunroof trolleys in my Jeep ~10 yrs ago, and it cost me $1200. Same problem a couple years ago, and I found the trolley parts are just over $100. It's a bit of work to pull out the headliner and get the whole sunroof mechanism out, but it's an afternoon-job and 2-3 people can get it done w/o much trouble. So, for $100 and some beer, I did that myself when it would have been $1400-1500 this time around...
EDIT: And that sunroof job would have been IMPOSSIBLE w/o someone posting where all the silly clips and things are on the headliner to pull apart. Thankfully, people post that shit for others to learn from.