PowerShell Windows Installer Com Object - PullRequest
       10

PowerShell Windows Installer Com Object

4 голосов
/ 16 января 2009

Я пытаюсь изменить содержимое файла MSI с помощью Powershell. Для этого я создаю экземпляр WindowsInstaller.Installer, затем использую $ installer.OpenDatabase и $ database.OpenView. Подобная функциональность работает в VBScript, и я видел образцы, которые, кажется, работают.

$installer = new-object -comobject "WindowsInstaller.Installer"
$database = $installer.OpenDatabase("C:\Temp\Setup.msi", 1)

В приведенном выше коде я получаю сообщение об ошибке «Ошибка вызова метода, поскольку [System .__ ComObject] не содержит метод с именем« OpenDatabase ».»

$installer = new-object -comobject "WindowsInstaller.Installer"
$database = $installer.InvokeMethod("OpenDatabase","C:\Temp\Setup.msi", 1)

Если я пытаюсь использовать $ installer.InvokeMethod, я получаю ту же ошибку «Ошибка вызова метода, поскольку [System .__ ComObject] не содержит метод с именем« InvokeMethod ».»

Любая помощь будет высоко ценится.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 16 января 2009

См. Ветку this для некоторых указаний. В основном объект MSI COM реализован таким образом, что сбивает с толку PS. В этой теме есть ссылка на сообщение в блоге, где это обсуждается.

2 голосов
/ 16 августа 2012

Первоначально принятая ссылка для ответа больше не действительна.

В комментариях ДжонБ опубликовал ссылку, на которой есть отличный пример использования установщика Windows из Powershell.

Существует также проект CodePlex, который содержит множество функций и может быть полезен:
Модуль PowerShell для установщика Windows

...