2009-01-16 58 views
4

我试图使用Powershell修改MSI文件的内容。为此,我创建一个WindowsInstaller.Installer的实例,然后使用$ installer.OpenDatabase和$ database.OpenView。类似的功能在VBScript中起作用,并且我看到在线示例似乎可以正常工作。PowerShell Windows安装程序Com对象

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

对于上面的代码中,我得到一个错误“方法的调用失败,因为[系统.__ ComObject]不包含名为‘的openDatabase’的方法。”

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

如果我试图$ installer.InvokeMethod我得到同样的错误使用“方法调用失败,因为[系统.__ ComObject]不包含名为‘的InvokeMethod’的方法。”

任何帮助将不胜感激。

谢谢。

回答

3

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

+2

的博客文章链接到从出现该页面将消失(在Windows Live空间不存在,错误页说: )。有没有人记得它说的解决方法? – Vimes 2011-06-27 17:12:09

2

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

在评论中,JohnB发布了一个链接,其中有一个关于如何使用Powershell中的Windows安装程序的很好的示例。

还有一个CodePlex项目,它包装了很多功能,并且可能是有用的:
Windows Installer PowerShell Module