PowerShell Windows Installer Com 对象

发布于 2024-07-11 19:20:52 字数 716 浏览 6 评论 0原文

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

任何帮助将非常感激。

谢谢。

I'm trying to modify the contents of an MSI file using Powershell. To do so I create an instance of a WindowsInstaller.Installer then use $installer.OpenDatabase and $database.OpenView. Similar functionality works in VBScript and I've seen samples on-line that appear to work.

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

For the above code, I get an error "Method invocation failed because [System.__ComObject] doesn't contain a method named 'OpenDatabase'."

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

If I attempt to use $installer.InvokeMethod I get the same error "Method invocation failed because [System.__ComObject] doesn't contain a method named 'InvokeMethod'."

Any help would be much appreciated.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

傻比既视感 2024-07-18 19:20:53

请参阅线程了解一些信息指导。 基本上,MSI COM 对象的实现方式使 PS 感到困惑。 该线程中有一篇讨论该问题的博客文章的链接。

See the this thread for some guidance. Basically the MSI COM object is implemented in a way that confuses PS. There is a link to a blog post discussing it in that thread.

挽袖吟 2024-07-18 19:20:53

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

在评论中,JohnB 发布了一个链接,其中提供了如何从 Powershell 使用 Windows Installer 的绝佳示例。

还有一个 CodePlex 项目包含很多功能并且可能很有用:
Windows 安装程序 PowerShell 模块

The originally accepted answer link, is no longer valid.

In the comments, JohnB has posted a link that has a great example of how to use the Windows Installer from Powershell.

There's also a CodePlex project that wraps a lot functionality and could be useful:
Windows Installer PowerShell Module

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文