PowerShell Windows Installer Com对象

时间:2009-01-16 16:13:15

标签: windows powershell installer comobject

我正在尝试使用Powershell修改MSI文件的内容。为此,我创建了一个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 个答案:

答案 0 :(得分:4)

请参阅this主题获取一些指导。基本上,MSI COM对象的实现方式会混淆PS。有一个博客文章的链接在该主题中讨论它。

答案 1 :(得分:2)

最初接受的答案链接不再有效。

在评论中,JohnB发布了一个链接,其中有一个很好的例子,说明如何使用Powershell中的Windows Installer。

还有一个CodePlex项目包含了很多功能,可能很有用:
Windows Installer PowerShell Module