Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

PowerShell wrapper for a few key functions of the Windows Installer API

License

Notifications You must be signed in to change notification settings

marcinotorowski/PowerShellMsiClient

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
15 Commits
 
 
 
 
 
 

Repository files navigation

MsiClient

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.

Importing

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 MsiClient

Samples

Getting all packages

Get-MsiClientPackage

For available properties, see the next example.

Getting specific packages by GUID (ProductCode)

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

Uninstalling a package

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-MsiClientPackage

This removes all products from Microsoft :).

Fancy usage

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

About

PowerShell wrapper for a few key functions of the Windows Installer API

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.