I think using dimensions in the n panel is what you are actually looking for. It scales objects from their origin point, so by changing origin location you can change what direction you are going to add to the dimensions to.
If you want to scale to an exact distance, one way would be to simply duplicate (shft d) the edge or two points from your model that represent the distance you want to change. § to extract selection. Take that new object and use the dimension field to add the math for example -.1 to take away 1 cm. If you then copy the scale values that result and apply those to the original object you will get the exact distance applied back to those original points.
Here is a video. Later in the video I describe the relationship between the dimensions and the scale values. Just make sure all your scale values are at 1 (zeroed out) before you start.
It might sometimes be easy to set up a few hooks for ‘scaling’ an object that has parts that do not change in size when it is scaled like for example a window:
One could move the scalable window by moving the hook empties around the scene and adjust it as needed then duplicating and applying modifiers for the duplicates to remain in place.