Project Description

Exposes Windows Installer functionality to PowerShell, providing means to query installed product and patch information and to query views on packages.

PowerShell is a powerful command shell that pipes objects - not just text. Because of this ability, you can string practically unrelated commands together in many different ways to work on different types of objects, all built on .NET. You can use all the properties and methods of those objects passed through the pipeline instead of being limited by the text sent to you as with traditional command shells.

This Windows Installer module for PowerShell provides cmdlets ("command-lets") - similar to functions - to query package states, patches registered and applied to products, and more. You can use it to query Windows Installer products and patches installed on your system.

get-msiproductinfo | where { $_.Name -like "*Visual Studio*" }
You can even use it to determine which products installed a particular file on your system.

get-msicomponentinfo `
    | where { $_.path -eq 'C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe'} `
    | get-msiproductinfo
You can find more Examples and usage in the Documentation.

News

Work has begun again! I'm taking any suggestions, but looking into more functionality including remote capabilities based on PSSessions (since Windows Installer APIs themselves are not remotable). I've also switched the project system over to Git and have got unit and functional tests working on PowerShell v3 Beta.

And after careful consideration, I've decided that functionality to modify packages will not be a priority. I might not do them at all. As a developer on the WiX Toolset, I've worked with others on helping setup developers avoid problems by adding lots of validation into the toolset. Allowing modifications of MSI files directory really goes against that. If modifications are needed, developers really should modify the source. But querying MSI packages (and related package types) is still helpful and I'll likely be including cmdlets for installing, repairing, and uninstalling packages as well.

I'm still considering previous requests as well, but be sure to include any ideas in the Issue Tracker.

Last edited May 20, 2012 at 12:54 AM by heaths, version 33