2011-07-06 10 views
0

以前はいくつかの.Netアプリケーションを実行しましたが、これはインストーラで初めてのことです。.netインストーラクラスのイベントハンドラでインストールされたファイルを実行する

インストーラはファイル(.esriAddIn拡張子 - 基本的に、実行時にESRI製品によってユーザーのホームディレクトリに解凍されたzipアーカイブ)をユーザーのファイルシステムに置き、インストーラの終了後にそのファイルを実行しようとします。

インストーラはまだそれが実行された時点で、私のファイルにアクセスしているようだ、とプロセスがメッセージで失敗しかし

「...ファイルが使用中の可能性が...」

私が試してみました上書きされたOnCommitted関数、Committedイベントハンドラと他のいくつかの場所でプロセスを実行しますが、喜びはありません。

インストーラがファイルを保持していないときに、そのファイルを実行する方法を教えてもらえますか?

インストーラクラスは、現在、次のようになります。

protected override void OnCommitted(IDictionary savedState) 
{ 
    base.OnCommitted(savedState); 

    string installFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 
    string addinFile = @"\<<file name>>.esriAddIn"; 

    System.Diagnostics.Process.Start(installFolder + addinFile); 
} 

すべてのヘルプははるかに高く評価します。

答えて

0

誰もがこれを解決するために管理していたし、偉大な熟練が関与していない場合。私は以前にこの組み合わせを試みたことはないと思う:

public partial class Installer : System.Configuration.Install.Installer 
{ 
    private string m_addInLocation; 

    public Installer() 
    { 
     InitializeComponent(); 

     this.Committed += new InstallEventHandler(this.onCommit); 
    } 

    protected override void OnCommitted(IDictionary savedState) 
    { 
     this.m_addInLocation = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + @"\<<add-in name>>.esriAddIn"; 

     // raise the committed event - ensure this happens after add in location has been determined 
     base.OnCommitted(savedState); 
    } 

    private void onCommit(object sender, EventArgs e) 
    { 
     try 
     { 
      System.Diagnostics.Process.Start(this.m_addInLocation); 
     } 
     catch (Exception) { MessageBox.Show("..."); } 
    } 
} 
関連する問題