2011-07-27 14 views
1

カスタムアクションを使用してインストーラを変更しようとしていますが、C#の世界ではとても新しいです。私がやっていることは、インストールが終わった後にバッチスクリプトを実行することです。私は次のインストーラクラスを使用しています。Visual Studio 2008のカスタムアクションでエラーが発生する

namespace PostInstall 
{ 
    [RunInstaller(true)] 
    public partial class Installer1 : Installer 
    { 
     public Installer1() 
     { 
      InitializeComponent(); 

      System.Diagnostics.Process.Start("PostInstall.bat"); 
     } 
    } 
} 

プロジェクト名がPostInstallの場合、上のコードの* .csファイルが含まれています。プロジェクトはthis linkのセクション「カスタムアクションを作成する」の後に作成されます。セットアッププロジェクトでは、「Install &コミット」ノードのPostInstallプロジェクトの主な出力を、リンクの説明に従って追加しました。次のエラーが受信され、インストールの最後にしかし

:インスタンスPostInstall.Installer1を作成できません

エラー1001 インストーラタイプ - >例外が 呼び出しのターゲットによってスローされました。 - >指定されたファイルが見つかりません。

インストールディレクトリにPostInstall.batが存在することを確認しました。なぜエラーが発生しているのか、それを解決する方法は?それはあなたの場合に可能ではない場合理想的には、カスタムアクションは、ネイティブコードで記述する必要があります

+0

CommittedイベントでPostInstall.batを呼び出してみませんか? – CharithJ

+0

他のエラーが発生します。私の考えは、コンストラクタが呼び出された場合、バッチを実行する必要があるということです。 – Donotalo

答えて

2

としての.msiを実行しようとする私は、インストールディレクトリが自動的にインストーラが実行されているディレクトリはないと思います、Process.Start("PostInstall.bat")がバッチファイルを見つけることはできません。

This DevCity articleは、このトピックの非常に良い紹介で、カスタムアクションオブジェクトに渡されるインストールディレクトリを取得して、バッチファイルの完全パス名を作成する方法を説明します。

バッチファイルの実行中に何が起こるか考えましたか?インストールの次の段階に進む前に、終了するまで待ちますか?

+0

バッチファイルはインストールディレクトリの特権を変更するだけです。私はバッチ塗りがインストールディレクトリから呼び出されると仮定しました。そこにインストーラによってコピーされます。 – Donotalo

+0

@Donotalo - 助けてくれることを願っています。もしあなたが「私が思った」が、世界で最も危険なフレーズの1つであることを学んだなら、将来あなたをさらに助けてくれるでしょう! – AAT

+0

私は技術全体を置き換えました。私はc、C++とwin32のバックグラウンドを持っています。私はカスタムアクションをC++プログラムに置き換え、セットアッププロジェクトのコミットノードに追加しました。出来た。 :)リンクはひどく、共有してくれてありがとう。私はその過程で多くを学んだ。 :) – Donotalo

0

は、管理者

関連する問題