[wix-devs] Scheduling multiple CAs

Heath Stewart heaths at outlook.com
Fri Jan 13 21:53:51 PST 2017


I’ve been getting some requests for the ability for setup applications (e.g. BAs) to be able to give users the ability to select into which instances a VSIX is installed for VS2017 and newer. As I’ve explained to them, and MSI can’t really prompt. Even if we sent a custom message, we’d have to plumb it all the way through Burn to BAs. It wouldn’t be a general solution: of course, MSIs can’t prompt in general because they need to run silently.

But I’m considering an option where a BA could query up front and pass in a delimited list of instance IDs via public property, and an immediate CA could schedule multiple CAs. As I’ve been out of the guts of MSI for a while, can someone confirm (or otherwise correct me):

If the immediate CA between InstallInitialize and InstallFinalize sets “CustomActionData” then calls MsiDoAction on an unscheduled deferred CA, then I could conceivably schedule multiple invocations of VSIXInstaller.exe with multiple instance IDs, right?

Now the flip side is how to deal with any CA scheduled (in support of Dev14 or older, or anyone wanting to install extension into all instances or selected instances per my current WIP). One option would be to keep the registry detection and have this new immediate CA handle all versions at install time, since really the overall idea is the same: locate VSIXInstaller.exe – using the COM APIs and calling back on registry detection (still in the MSI as it is today). In fact, this could solve a request I’ve seen before: the solution right now only installs and extension into the latest version of VS, correct? (Of course the VSIX manifest can still dictate a lower bound.) An install-time solution could solve that as well.

Feedback would be appreciated.

Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10



More information about the wix-devs mailing list