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
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
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?".
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.
Using Windows Installer with UAC Our professional SDK writers introduction to what UAC in MSI means. Chock full of goodness. Tight writing. (Wish I could write like that. ;^) User Account Control Patching 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. Per-User and Per-Machine 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.
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.
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.
Guidelines for Packages 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. Authoring Packages Without the UAC Dialog Box 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. Installing a Package with Elevated Privileges for a Non-Admin 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. Advertising a Per-User Application to be Installed with Elevated Privileges 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.
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...
Getting Started with User Account Control on Windows Vista 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. Getting Started with User Account Control on Windows Vista Post Beta 2 draft of the above. Subtitled: discover how to get started with User Account Control. Understanding and Configuring User Account Control in Windows Vista Index page that provides a jumping off point. In that this was authored post Beta2, it's much more relevant. Windows Vista Application Development Requirements for User Account Control Compatibility Downloadable word doc that you can place next to your development environment as a desktop reference. Developer Best Practices and Guidelines for Applications in a Least-Privileged Environment Bible for working with UAC between Beta 1 and Beta 2. This is the doc I used to understand UAC.
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.