Wix

.msiファイルが存在しない状態で製品IDGUIDを使用してmsiexecでアンインストールする方法



How Uninstall With Msiexec Using Product Id Guid Without



解決:

「リファレンススタイル」の回答 :これは、いくつかの異なるオプションが示されている、以下の回答の代替回答です。 msiexecを使用せずにコマンドラインからMSIファイルをアンインストールする


指定したコマンドは正しいです: msiexec / x {A4BFF20C-A21E-4720-88E5-79D5A5AEB2E8}



あなたが取得する場合 ' このアクションは、現在インストールされている製品にのみ有効です。 '認識されない製品またはパッケージコードを使用したため、適切なものを見つける必要があります。多くの場合、これは誤った使用によって引き起こされる可能性があります パッケージコード の代わりに 製品コード アンインストールする-パッケージコードはMSIファイルを再構築するたびに変更され、msiファイルのプロパティページを表示したときに表示される唯一のGUIDです。適切なものを使用すれば、アンインストールでも機能するはずです。エラーの余地はありません。代わりに製品コードを検索する場合は、MSIを開く必要があります。製品コードはプロパティテーブルにあります。


更新、2018年1月



すべてのレジストリリダイレクトが行われているため、以下のレジストリベースのアプローチが実行可能なオプションであるかどうかはわかりません。 PowerShellを使用して次のアプローチに依存しているため、適切にチェックしていません。インストールされているMSIセットアップの製品GUIDを見つけるにはどうすればよいですか?

また、MSIパッケージをアンインストールするさまざまな方法と、インストールした製品バージョンを判別する方法を説明するこの参照形式の回答を確認してください。msiexecを使用せずにコマンドラインからMSIファイルをアンインストールする


レガシー、レジストリオプション



あなたもすることができます 製品コードを見つける 熟読することによって レジストリ このベースキーから: HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows CurrentVersion Uninstall 。 F3を押して、製品名を検索します。 (64ビットマシン上の32ビットインストーラーの場合は、代わりにHKEY_LOCAL_MACHINE SOFTWARE Wow6432Node Microsoft Windows CurrentVersion Uninstallの下にある可能性があります)。

レガシー、PowerShellオプション :(上記の新しいリンクされた回答とほぼ同じです)

最後に、PowerShellを使用して製品コードを見つけることができます。

get-wmiobject Win32_Product |フォーマット-テーブルIdentificationNumber、Name

ここに画像の説明を入力してください

同様の投稿:WiX-マルチインスタンスインストールでメジャーアップグレードを実行しています(MSIで製品コードを見つける方法のスクリーンショット)。


良い点は、これは非常に簡単かつ決定論的に分析できることです。msiパッケージが実際にシステムにインストールされていないか、何か問題が発生しています。もちろん、正しい呼び出しは次のとおりです。

msiexec / x {A4BFF20C-A21E-4720-88E5-79D5A5AEB2E8}

(もちろん、管理者権限が必要です-ここに引用符のない中括弧を使用-引用符は、コマンドラインでパスまたは値が空白で指定されている場合にのみ必要です。)
メッセージが次の場合: 'このアクションは現在インストールされている製品にのみ有効です'の場合、これは当てはまります。このProductCodeのパッケージがインストールされていないか、タイプミスがあります。

障害がどこにあるかを確認するには:

  1. まず、(おそらく)インストールされている.msiファイル自体を右クリックしてみてください。 (「インストール」と「修復」のほかに)アンインストールエントリが表示されます。それをクリックします。
    a)そのアンインストールが機能する場合、msiには予想とは異なるProductCodeがあります(WiXソースが間違っているか、ビルドにProductCodeが変更される動的ロギングがある可能性があります)。
    b)そのアンインストールで同じ「...すでにインストールされている製品にのみ有効」である場合、パッケージはインストールされません(これは明らかにアンインストールできるための前提条件です)。

  2. 1.a)の場合、Orca、Insted、または別のエディター/ツールを使用してmsiファイルを開くと、パッケージの正しいProductCodeを探すことができます。それらのためにグーグルするだけです。 'Property'という名前のテーブルを探し、最初の列で文字列 'ProductCode'を検索します。 2番目の列には正しい値があります。

他の可能性はありません。

使用するコマンドラインの単なる提案:単純なプログレスバーの場合は少なくとも「/ qb」、または「/ qn」パラメーターを追加します(後者は完全なサイレントアンインストールの場合ですが、機能することが確実な場合にのみ意味があります)。


msiexec.exe / x '{588A9A11-1E20-4B91-8817-2D36ACBBBF9F}' / q