2

Windows インストーラーを介してインストールされた Interop Excel アプリケーションがあります。これには、.dll のみが含まれ、実行可能ファイル/.exe は含まれません。「プログラムの追加と削除」とwmic product get nameリストの両方で表示されますが、コマンドでは表示されませんwhere(ここを参照)。

インストール後にいくつかのファイルを変更するバッチ ファイルを作成しています。バッチ ファイルでこのプログラムのインストール パスを取得するにはどうすればよいですか?

また、「プログラムの追加と削除」にはプログラムが表示されますが、存在しないことにも言及する必要があります

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
4

3 に答える 3

4

セットアップでARPINSTALLLOCATIONプロパティを設定しない限り、インストールパスがアンインストールレジストリ情報に自動的に記録されないため、見つけることができないと思います。

https://msdn.microsoft.com/en-us/library/aa367589(v=vs.85).aspx

または、レジストリ項目を明示的に作成し、その値を [TARGETDIR] に設定しました。これは、後で自分の管理下にある場所を保存したい場合に行うことができます。

したがって、クリスの答えは、パスを見つけるための正しい方法である可能性が高く、ファイルを置き換えないように指示することも正しいでしょう。インストーラーの回復力 (または [プログラムの追加と削除] からの修復、または MSI ファイルの修復を右クリック) により、それらが復元される可能性が高く、元の MSI が必要になります。MSI は、インストールされたファイルのバージョンを認識しています。さらに、アップグレードまたはパッチにも元の MSI が必要な場合があります。買い手責任負担。

于 2015-11-19T20:50:13.557 に答える
1

MSI の WMI プロバイダーには常にバグがあります。ネイティブの MSI API を使用して、コンポーネントがどこにインストールされているかを尋ねます。( MsiGetComponentPathEx 関数)

ただし、MSI はそのファイルを「所有」することを好みます。誰かが修理を行った場合、あなたの変更が履歴になる可能性が非常に高くなります。MSI を変換して変更されたファイルを含め、インストール後の変更手順をスキップすることをお勧めします。それか、アドインを再設計して、MSI によってインストールされた値の基本セットと、MSI が認識していない MSI の外部にコピーされた値のオーバーライド セットを持つことができるようにします。

于 2015-11-19T15:48:23.540 に答える