UAC in MSI Notes: Read the Friendly Manual
This is the sixteenth in a series of notes about UAC in MSI. Per the earlier caveat, these are just my notes and not an official position from the Windows Installer team. The previous entries
- Architecture Insights
- Common Package Mistakes
- More Architectural Insights
This entry will talk about the next step to understanding the broader architecture in play for understanding UAC in MSI: please take the time to read the SDK.
If you are already deeply involved in this topic, I don't have to tell you the following. For most Windows Installer experts, a large part of providing their expertise to others Windows Installer is being a human index to the Windows Installer portion of the Platform Software Development Kit. While there are more rude versions of RTFM, Read The Fine Manual is tried and true advice from many generations of computing. You'd be surprised how just understanding the manual makes you an expert.
Inevitably I run into those who, like me honestly, have only partially consumed the manual. These Windows Installer journeyman
- get stuck in translating the intent behind a topic
- synthesizing the full insight needed to understand
- find the topics are insufficiently rich or verbose
- point out to the rich mix of mixing documentation
To these journeyman I am sympathetic. I've personally tried to help by opening hundreds of documentation bugs in the six months I was focused on documentation for Windows Installer 4.0. Some of those bugs came back "By Design" or "Won't Fix" so I've learned there are constraints to the SDK document format.
The SDK is focused on explaining "What?". "How?" and "Why?" questions are not the domain of the SDK. Some of the "How?" and "Why?" around the Windows Installer can be inferred from the "What?" BUT not all things. Other technologies in the Windows motivate shelves and shelves of technical books. Other technologies in Windows motivate whitepapers and rich tool environments on top of the base "What?" that comes from the platform SDK. Windows Installer does have a small market but for these secondary sources but it's still small on a relative basis.
Still, if you aspire to go beyond the journeyman to attain architectural mastery, you're going to need to have the "What?" on hand as you work outward toward the "How?" and "Why?".
Quick Introduction to Topics in the SDK
So the journeyman say "I'm under some pressure so could help me pick out the important items?". Absolutely. Here you go:
Let's start on the What's New in Windows Installer Version 4.0? page.
Our professional SDK writers introduction to what UAC in MSI means. Chock full of goodness. Tight writing. (Wish I could write like that. ;^)
An update to the 3.1 feature that enabled home users get patch even if they were Standard Users in the precursor to UAC called Least Privileged User. A full forensic account of UAC in MSI would report this as proof MSI could help deliver the UAC scenarios.
User Account Control glossary entry
Functional definition of UAC in the MSI SDK. Also provides a bridge to the UAC portion of the SDK.
Stuff you need to understand to see the difference between Install per-user and per-machine. Compare this with the way UAC defines per-user and the gaps and seams will start to appear for you too.
Biggest explanation comes for the topic Using Windows Installer with UAC and it's sub topics.
This topic was generated from one of the first bugs I opened against the SDK to respond to the top customer issues. The dialog I remember around this time was: sure, these topics are all already covered in other topics in the SDK but customers are having a really hard time putting these all together. As you read this, contrast this with what I've tried to say in the blog series and you may get a sense of the difference between going from "What?" to "How?" in the format to the SDK that is distinct from going to the "Why?" to "How?" I'm trying to built out via the blog.
Again another "how" topic that was based off a bug that said: sure, these topics are all already covered in other topics in the SDK but customers are having a really hard time putting these all together.
To me, this reads like a family tree in the thinking behind how users and elevation are managed in the Windows Installer. Were I our SDK writer, this topic would have been the hardest topic for me to write. This is a synthesis topic that covers a number of generations of the Windows Installer and the Windows platform. Hurts my head to think about all these generations simultaneously.
This topic hasn't changed for Vista but Vista makes this increasingly important. As a Windows Installer user (before I got my current role), I've always considered this topic cryptic. I still see it as cryptic but I now have a path I could walk someone through the context if I had to. I walked a UAC PM through the context behind this once to which he said: "that would be a great whitepaper. Can you write that down?". It's on the list.
Outside of the Windows Installer portion of the SDK, the User Account Control team is still building their docs. Today, this contains...
Pretty intro to the user experience from Vista Beta 1. This is much friendlier writing that later writing because UAC was optional in Beta1. Ideas are still relevant but lots of context has changed.
Post Beta 2 draft of the above. Subtitled: discover how to get started with User Account Control.
Index page that provides a jumping off point. In that this was authored post Beta2, it's much more relevant.
Downloadable word doc that you can place next to your development environment as a desktop reference.
Bible for working with UAC between Beta 1 and Beta 2. This is the doc I used to understand UAC.
Lots to read. Some believe understanding the manual will tell you everything you need to know. Honestly, the manual isn't enough for me but maybe simply RTFM it'll work for you.