0

すべて– </ p>

カスタムアクションを使用して、いくつかのタスクをサイレントに実行する必要があります。基本的に、自分のビットを配置した後、サードパーティのアプリケーションをインストールしてライセンスを取得する必要があります。

  1. ビットをアプリケーションフォルダにインストールします
  2. FooSetup.exeを介してサードパーティアプリをインストールするカスタムアクションを起動します
  3. 手順2でインストールしたFooLicense.exeを介して、サードパーティのアプリのライセンスを取得するための別のカスタムアクションを起動します。

インストーラーのコミットフェーズ中に、このコードを起動して、サードパーティアプリケーションのサイレントセットアップを起動します。

[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
public override void Commit(IDictionary savedState)
{
  base.Commit(savedState);

  ProcessStartInfo startInfo = new ProcessStartInfo();
  startInfo.Arguments = "/verysilent";
  startInfo.FileName = Context.Parameters["TARGETDIR"].ToString() + "fooSetup.exe";
  Process myProcess = System.Diagnostics.Process.Start(startInfo);
}

正常に動作しますが、fooSetup.exeが実際に完了するまで、「フェーズ3」(サードパーティアプリのライセンス)を開始できません。

このシナリオに取り組むためのベストプラクティスは何ですか?fooSetup.exeの終了を監視するために、myProcessでイベントハンドラーを設定する必要があると思いますか?(サイレントモードでは、FooSetup.exeが完了後に実際に終了することを確認しました)

そこに例はありますか?私はビジネスインテリジェンスの人対C#ジョッキーなので、あなたが私を押してくれるサンプル/ポインターをいただければ幸いです。

4

1 に答える 1

3

Process.WaitForExit()はあなたが望むものだと思います。http://msdn.microsoft.com/en-us/library/fb4aw7b8.aspx

于 2012-10-15T15:47:33.330 に答える