Я хочу добавить настраиваемое действие, которое вызывает VBScript из двоичной таблицы, используя powershell. Я искал везде, чтобы найти код powershell, чтобы сделать это, похоже, это VBScript. Я попытался сделать это сам, но это всегда ошибки. Кто-нибудь мог добавить файл в бинарную таблицу с помощью powershell? Был бы очень признателен за любую помощь. Вот то, что я до сих пор: Вот код, который я до сих пор: VBScriptДобавить файл в двоичную таблицу MSI с помощью powershell
Dim query
query="INSERT INTO `Binary` (`Name`, `Data`) VALUES ('NewBlob', ?)"
Set Installer = CreateObject("WindowsInstaller.Installer")
Set Record = Installer.CreateRecord(1)
Record.SetStream 1, "C:\Users\Admin\Desktop\coder\CA_Test.vbs"
Set Database = Installer.OpenDatabase("C:\Users\Admin\Desktop\7z920.msi", 1)
Set View = Database.OpenView(query)
View.Execute Record
Database.Commit
Powershell
$windowsInstaller = New-Object -ComObject WindowsInstaller.Installer
$database1 = $windowsInstaller.GetType().InvokeMember(
"OpenDatabase",
"InvokeMethod",
$Null,
$windowsInstaller,
@($database1Path, $msiOpenDatabaseModeReadOnly)
)
$database2 = $windowsInstaller.GetType().InvokeMember(
"OpenDatabase",
"InvokeMethod",
$Null,
$windowsInstaller,
@($database2Path, $msiOpenDatabaseModeTransact)
)
$query = "INSERT INTO ``Binary``(``Name``,``Data``) VALUES ('Callsetstatuskey', ?)"
$View = $database2.GetType().InvokeMember(
"OpenView",
"InvokeMethod",
$Null,
$database2,
($query)
)
$Record = $windowsInstaller.GetType().InvokeMember ("CreateRecord", "InvokeMethod", $Null, $windowsInstaller, 1)
$Record.GetType().InvokeMember("SetStream", "InvokeMethod", $Null, $windowsInstaller.Record, @($SetstausKeyPath, 1))
$View.GetType().InvokeMember("Execute", "InvokeMethod", $Null, $View, $Record)
$View.GetType().InvokeMember("Close", "InvokeMethod", $Null, $View, $Null)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($View) | Out-Null
Там будет намного больше кода в сценарии PowerShell создают признаки, компоненты добавьте свойства ключей реестра и пользовательские действия. Все работает отлично, за исключением добавления файла в двоичную таблицу.
Спасибо, Джим
Эй, спасибо за совет! – Jim