2011-08-08 9 views
4

私はいくつかのMSI製品をインターネット経由でインストールするシステムを持っていますが、テスターは製品のフォルダを削除しますが、レジストリキーはありません。それをアップグレードしようとしましたが、実際には製品が存在しませんでした。MSI:実際にその製品がインストールされていることを確認する方法

サイレントモードで製品の状態を判断するのに役立つMSI機能がありますか?ユーザーがファイルを削除して製品全体をアンインストールする場合はありますか?

+0

現在のソリューションチェックはメインファイルです。レジストリに保存され、MSIによって削除されたメインファイルへのパス –

+1

あなたがここで何を求めているかは完全には分かりません。あなたが示唆していることは、製品のアプリケーションファイルがシステムから削除された場合、修復モードではなくアンインストールでMSIを起動したいということです。 MsiGetComponentPath()関数を使用してコンポーネントのキーパスを取得し、そのファイルが存在するかどうかを確認することをお勧めします。ファイルが見つからない場合は、APIを使用して製品をアップグレードするのではなく削除します。 –

答えて

1

製品がまだWindows Installerに登録されているかどうかを確認する必要がある場合は、パッケージの製品コードをpacked guid形式(たとえばhttp://www.dwarfsoft.com/blog/2010/06/22/msi-package-code-fun/のスクリプトを使用して)に変換し、HKCR \ Installer \ Productsでその存在を検索します。

実際にWindowsインストーラデータベースから製品を削除するには、最も簡単な方法は、http://msdn.microsoft.com/en-us/library/windows/desktop/aa370523(v=vs.85).aspxのMsiZapを使用することです。

+0

msizapは私が必要とするものを正確に行いましたが、配布可能ではありません –

関連する問題