So I think what you might be needing is some method of measuring performance ad deployment time. As ungraceful as they are I might look at adding Performance Counters to your application. See System.Diagnostics. I have used the extensively to monitor applications in deployment. I have found that profilers while awesome sometimes conceal certain problems due to their overhead. For instance if your application hits a database and the disk is slow causing queries to take longer that might not be apparent in a profiler since the application will be running slower in general.
For the client side if your app does not require administrative access on install I might make perf counters part of a "diagnostics mode" since installing them requires admin access. You would want to put perf counters to measure things like the duration of database and service calls, the size of data structures that can grow and the number of failures that occur.
We already know that your code works since on certain customers setups it works fine. So think about adding instrumentation to your application. It is one of those unglamorous bet important elements of writing reliable software like good logging. It's not fun but in my opinion it needs to be done. It is often the only thing that gives you visibility into what your application is doing in deployment. The current application I am working on went from about 20 perf counters in Rev 1 to about 150 in Rev 2. I don't monitor most of them all the time but for alerting me to performance and reliability problems they have been well worth the time.