Outside,
Most of the local marinas just sub out their boat top and interior upholstery jobs, to local shops that specialize in covers and interiors.
So if you go direct to one of these shops yourself, you'll do best price wise. Depending on how new the cover is, and also what kind of shape it's in, a local shop might be able to just replace a section of what you have, or maybe just repair it. I've done this same thing myself for years.
I would think the worst case scenario is that you just replace the fabric and salvage the frame. And a local shop should be able to easily sew up something to fit your existing frame.
Usually the local shops typically just order all the frame and hardware for the roofs seperate from the fabric itself anyway. If you're going to go this route, ask about the different types of fabrics that they offer. They will most likely have vinyls as well as nicer fabrics like Sumbrella which I would describe as more like a heavy canvas.
So my advice here, would be to save yourself a few bucks by reusing the existing hardware and also save few more bucks by just going to a local shop direct.
And as chappy suggested, quite often a few cans with mothballs in them will keep the critters away in the off-season.
-Chris