That is one reason why I prefer single 18650 battery flashlights. I carry a spare battery in my seat bag. I also don't like cords and battery pack added to my small frame.
I get at least 4 hours on tail lights in flashing mode. I charge them over the weekend because it is convenient rather than they require charging.
I think 3 45 minute rides on a magicshine on high isn't too bad. The brighter the light, the more juice it requires. I use 3400 mAh batteries in my flashlights. Perhaps upgrading the batteries in your battery pack to higher capacity ones will give you more run time.