5

我正在尝试使用 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’的方法。”

任何帮助将非常感激。

谢谢。

4

2 回答 2

4

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

于 2009-01-16T16:25:07.033 回答
2

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

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

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

于 2012-08-16T10:19:01.660 回答