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 に答える