Making a Pre-Vista Application Vista Compliant, Page 2
Determining Where the Guidelines Turn Into "Gotchas"
You should now be armed with the "why" of the changes that are necessary when moving legacy applications to be Vista compatible. The tricky thing with legacy applications though is "where" and "how" you make the changes. I am going to leave the "how" up to you because development can take on an almost infinite set of paths. The "where," and by this I mean where in your code changes are needed, can be a bit like finding a needle in a haystack. Development teams dismantle and move on, documentation is lost (or never created), large applications tend to get complex, and technologies change. Shy of trying to resurrect the original development team, you could be up against quite a challenge finding all locations where changes are needed. This is where the Application Compatibility Toolkit (ACT) 5.0 comes in to save the day.
ACT 5.0 is Microsoft's toolkit for testing most aspects of your application from installation to process monitoring. The toolkit also includes tools to test future Vista updates as well as compatibility with the UAC and Internet Explorer 7. These tools and their capabilities will help you determine the "where." The toolkit as a whole is too complex and deep to cover in this article, but I recommend starting with this Microsoft TechNet site and demo (bottom of the page) if you want to learn more about the toolkit.
One tool I will recommend as a good starting point is the Standard User Analyzer. The SUA gives you options on how you want to launch your application and then monitors several key data points. It monitors access and write issues, UAC issues, and your application's use of Virtualization. As for the launch options, you have the ability to control Virtualization, elevated privileges, and run time command arguments.
Putting It All Together & Starting Down the Road to Vista Compliance
Each application is sure to present its own unique set of challenges and for that reason there is not a one approach answer. I will offer my suggestions and you can supplement them where needed by tools, specific knowledge, and personal experience. Keep in mind that size, complexity, and dependencies on third parties can greatly increase or decrease the challenge.
First, to get the obvious out of the way, install (or try to) the application on Vista. That sounds simple, but I often hear that developers spend hours analyzing their application to see what could go wrong before ever knowing whether anything will go wrong. You could be pleasantly surprised that, despite the horror stories you hear, your application runs fine as is. That same pleasantness could also be replaced by quick disappointment if you find Vista blocking your installation due to a "Known Compatibility Issue" (advance warning for those of us who have used MSDE).
From a tool standpoint, start with the Standard User Analyzer and work from there. Information gained from this tool can help you determine quite a bit about the type and magnitude of changes needed. After your incompatibility issues have been identified and organized, you can start the process of planning. Determining whether Virtualization will work for your application can save you costly redevelopment time, but you have to keep in mind that Microsoft does not plan to keep the feature in future versions of Windows. Also, determining how UAC-friendly you want to make your application will impact time and cost. Zero unexpected prompts are desired, so making use of the 'Shield UI' graphic or manifest changes are some quick hitting items to accomplish this.
Whether you are working on a small standalone legacy application or a complex multi-tiered monster, these several basic concepts should help you get jump started down the path of Vista compliance. Trying to cover all of Vista's new features and guidelines in a single article would be impossible, so this article's intent is only to help you down the start of the path. I strongly recommend following up in more detail on any of the topics, such as UAC and Virtualization, before undertaking your upgrade.
About the Author
Matt Goebel is a Solution Developer and Project Manager at Crowe Chizek in Indianapolis, Indiana. He is a thought leader focusing on Smart Client architecture. He has a B.S. Degree in Computer Technology from Purdue University and is certified in MCAD and MCSD.
Article edited by Rachel Wireman