This is a small PowerShell module project which aims at exposing Windows Installer API through a PowerShell interface, which is highly inspired by the layout and use of AppVClient module.
Either copy the files to a system-recognized location or make sure they are in your working directory, and then import the module
Import-Module MsiClientGet-MsiClientPackageFor available properties, see the next example.
Get-MsiClientPackage -PackageId '90160000-008c-0000-0000-0000000ff1ce'or
Get-MsiClientPackage '90160000-008c-0000-0000-0000000ff1ce'The output is a class with the following properties (sample values provided for a reference):
ProductCode : 90160000-008c-0000-0000-0000000ff1ce
PackageCode : 7afb57da-76ca-4406-8979-ad7fd1365320
ProductName : Office 16 Click-to-Run Extensibility Component
VersionString : 16.0.9029.2167
Language : 0
Publisher : Microsoft Corporation
PackageName : C2RInt.16.msi
Transforms :
InstallSource : c:\program files (x86)\microsoft office\root\integration\
InstallDate : 04.03.2018 00:00:00
Properties : {[ProductCode, {90160000-008C-0000-0000-0000000FF1CE}], [PackageCode, {7AFB57DA-76CA-4406
-8979-AD7FD1365320}], [PackageName, C2RInt.16.msi], [ProductName, Office 16 Click-to-Run
Extensibility Component]...}
The property Properties is a dictionary which contains all values available at the time of reading, for example:
| Key | Value |
|---|---|
| ProductCode | 90160000-008c-0000-0000-0000000ff1ce |
| ProductID | |
| PackageName | C2RInt.16.msi |
| ProductName | Office 16 Click-to-Run Extensibility Component |
| VersionString | 16.0.9029.2167 |
| Language | 0 |
| Publisher | Microsoft Corporation |
| State | |
| Transforms | |
| DisplayName | |
| PackageCode | {7AFB57DA-76CA-4406-8979-AD7FD1365320} |
| AssignmentType | 1 |
| InstanceType | 0 |
| AuthorizedLUAApp | 0 |
| Version | 268444485 |
| ProductIcon | |
| InstalledProductName | Office 16 Click-to-Run Extensibility Component |
| HelpLink | |
| HelpTelephone | |
| InstallLocation | |
| InstallSource | c:\program files (x86)\microsoft office\root\integration\ |
| InstallDate | 20180304 |
| LocalPackage | c:\WINDOWS\Installer\5ad3e8de.msi |
| URLInfoAbout | |
| URLUpdateInfo | |
| VersionMinor | 0 |
| VersionMajor | 16 |
| RegCompany | |
| RegOwner | |
| Uninstallable | |
| PatchType | |
| LUAEnabled | |
| MoreInfoURL | |
| LastUsedSource | n;1;c:\program files (x86)\microsoft office\root\integration\ |
| LastUsedType | n;1;c:\program files (x86)\microsoft office\root\integration\ |
| MediaPackagePath | |
| DiskPrompt |
Remove-MsiClientPackage -PackageId '90160000-008c-0000-0000-0000000ff1ce'This removes a package with a given GUID. The GUID/package can be passed via pipeline, so the following is possible:
Get-MsiClientPackage | where { $_.ProductName -contains 'Microsoft' } | Remove-MsiClientPackageThis removes all products from Microsoft :).
Get all products from Microsoft, and output the list to a HTML file with a custom CSS and a bunch of properties:
$Header = @"
<style>
TABLE {border: 1px solid gray collapse; }
TH { border: 1px solid gray; padding: 6px 4px; background-color: #eaeaea; }
TD { border: 1px solid gray; padding: 4px; }
</style>
"@
Get-MsiClientPackage | where { $_.Publisher -contains 'Microsoft Corporation' } | sort-object -Property ProductName | ConvertTo-Html -Property ProductCode,PackageName,ProductName,VersionString,Language,Publisher -Head $Header | Out-File c:\temp\test.html