2012-02-03 2 views
2

他のインストールがあらかじめ実行されている場合は、インストールを開始する前にインストーラでチェックしてください。 Windowsのアップデートやその他のインストーラーが動作しているかどうか確認したいのですが、私はインストーラーを起動しません。私のインストーラを起動する前にwindows updateまたはinstaller instaceが実行されているかどうか確認してください。

msiexecインスタンスが手前で実行されているかどうかを確認する予定です。より良いアプローチはありますか?それはWindowsのアップデートをチェックするのと同じです。私のインストーラはJavaにあります

+0

チェックが実行されていないことをユーザーが確認した直後にmsiexecを起動するとどうなりますか? –

答えて

1

インストーラはJavaになっているので、他のインストーラが実行されているかどうかを確認する必要はなく、堅牢な方法もありません。

インストーラはシステムファイルを置き換えようとしますか?それはしないでください。
インストーラは使用中のファイルを更新しようとしますか?それは優雅に行う必要があります。そして、問題のアプリケーションを閉じるようユーザーに依頼してください。それが不可能な場合、またはユーザーがすぐにアプリケーションを終了したくない場合、インストーラは、インストールが完了したときにシステムを再起動するようユーザーに求めます。

他のインストーラを実行することなく気にするほどです。そのため、専用のインストーラツールを使用することが賢明です。

3

msiexec.exeは、インストールが完了してから数分間は実行されていることをご存じでしょうか。これはOSのデフォルトの動作です。ユーザーが別のインストールを開始した場合、プロセスを数分間継続しておくことで、起動の時間を節約します。したがって、プロセスをチェックすると、間違ったデータが得られる可能性があります。

また、インストーラがJavaで書かれている場合は、なぜmsiexec.exeプロセスをチェックする必要があるのか​​説明してください。

+0

becoz後の段階でmsiのリストをインストールしようとしていますが、その時点でインストーラがうまくいきません。 – prithu

+0

あなたが提案するアプローチは何でしょうか? – prithu

1

次のレジストリエントリを使用することができます進行中のインストール用OSを確認するには:

HKLM \ソフトウェアのMicrosoft \ Windowsの\ CurrentVersionの\インストーラ\のInProgress \

Windowsインストーラにはないことに注意してください複数のInstallExecuteSequencesを同時に実行できますが、異なるパッケージから複数のインストールUIを起動できます。パッケージはInstallExecuteSequenceを入力し、通常は「インストール」を押してシステムの変更を開始するためのすべての権限を与えます(レジストリの作成、ファイルのコピーなど)。

ここでは、InstallUISequenceとのInstallExecuteSequenceに関する詳細な情報を見つけることができます。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa372404(v=vs.85).aspx

+0

指定したキーは存在しません。 – user844541

0

は、Uあなたの提案のためのみんなに感謝し、私は最終いるWindowsInstallerの状態を確認するには、WindowsネイティブのDLLを作成して行くことにしました。返されたSERVICE_STATUS_PROCESS構造体のdwControlsAcceptedメンバの値がSERVICE_ACCEPT_SHUTDOWNの場合、Windowsインストーラサービスは現在実行中です。その後、JNIを使​​用してJavaクラスから呼び出します。

関連する問題