I am not taking into account mirroring or AGs. I honestly am not sure how that would affect the process.
Like any time you run DBCC SHRINKFILE this is going to shred your indexes. Take that into account and re-index as needed.
Kenneth shows screen shots, has a step-by-step checklist, and includes common errors. This is a great explanation.