下午好 我需要更改表MSI中的值 通常选择表格,但这里有变化的问题。
例如选择:
$WindowsInstaller = New-Object -com WindowsInstaller.Installer
$Database = $WindowsInstaller.GetType().InvokeMember(“OpenDatabase”, “InvokeMethod”, $Null, $WindowsInstaller, ($msi_path,0))
$View = $Database.GetType().InvokeMember(“OpenView”, “InvokeMethod”, $Null, $Database, (“SELECT * FROM Control WHERE Control = 'LicenseText'”)) ....
($ msi_path,0),0从读取打开表,如果我尝试不是0(1或2),我收到错误:
[MethodInvocationException:异常调用" InvokeMember"用" 5"参数:" OpenDatabase,DatabasePath,OpenMode"]
有人告诉我可能是什么问题。或者可能有另一种方法来更改表中的值对powershell感兴趣。
答案 0 :(得分:1)
我打算解决。
工作,表Msi的更新值是否正确运行
Function Change-MSIProperties($msi_path) {
$Database = $null
$View = $null
[int]$msiOpenDatabaseMode = 2
$WindowsInstaller = New-Object -com WindowsInstaller.Installer
$Database = $WindowsInstaller.GetType().InvokeMember('OpenDatabase', 'InvokeMethod', $Null, $WindowsInstaller, ($msi_path,$msiOpenDatabaseMode))
$View = $Database.GetType().InvokeMember('OpenView', 'InvokeMethod', $Null, $Database, ('UPDATE Feature SET Feature.Level=1 WHERE Feature.Level=0'))
$View.GetType().InvokeMember('Execute', 'InvokeMethod', $Null, $View, $Null)| Out-Null
$View.GetType().InvokeMember('Close', 'InvokeMethod',$Null,$View,$Null) | Out-Null
}