3 powershell windows-installer
是否可以将MSI产品代码从MSI文件中提取出来,而无需使用PowerShell进行安装?我想将MSI文件的产品代码与安装在机器上的MSI代码进行比较,以了解该文件是否以前安装过。
从 MSI 包获取 ProductCode 的更短方法:
Get-AppLockerFileInformation -Path "C:\PathTo\my.msi" | select -ExpandProperty Publisher | Select BinaryName
Run Code Online (Sandbox Code Playgroud)
这是一个基于本文的读取产品代码的脚本:
$path = "pathto.msi"
$comObjWI = New-Object -ComObject WindowsInstaller.Installer
$MSIDatabase = $comObjWI .GetType().InvokeMember("OpenDatabase","InvokeMethod",$Null,$comObjWI,@($Path,0))
$Query = "SELECT Value FROM Property WHERE Property = 'ProductCode'"
$View = $MSIDatabase.GetType().InvokeMember("OpenView","InvokeMethod",$null,$MSIDatabase,($Query))
$View.GetType().InvokeMember("Execute", "InvokeMethod", $null, $View, $null)
$Record = $View.GetType().InvokeMember("Fetch","InvokeMethod",$null,$View,$null)
$Value = $Record.GetType().InvokeMember("StringData","GetProperty",$null,$Record,1)
Run Code Online (Sandbox Code Playgroud)
$Value 现在包含产品代码。
| 归档时间: |
|
| 查看次数: |
5620 次 |
| 最近记录: |