2010-12-28 9 views
1

2つのC#カスタムアクションを呼び出すWIXインストーラがあります。外部ライブラリを必要とするWIX Installerカスタムアクション(CA)が見つかりません

最初に、アプリケーション設定のGUIプロンプトにデフォルト値のWIXセッションをロードするルーチンを実行します。その後、インストール時にGUIに新しい値が入力され、設定値がセッションに保存されます。これは正常に動作し、インストーラの実行中にプロンプ​​トが表示されます。

InstallFinalizeの後、別のカスタムアクションを実行して保存した設定を取得し、データベースとレジストリに書き込みます。私は、データベース接続を処理し、私が書いた外部ライブラリを持っており、このカスタムアクションは、次のエラーで失敗し、それをロードし、それを使用しようとします。

Exception thrown by custom action: 
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Could not load file or assembly 'myCompany.PortalLib, Version=2.9.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. 
File name: 'myCompany.PortalLib, Version=2.9.0.0, Culture=neutral, PublicKeyToken=null' 
    at WIXCustomActions.CustomActions.SetBCAConfigOptions(Session session) 

詳細:

  • VSプロジェクトが含まカスタムアクション関数はmyCompany.PortalLibを参照します。
  • csharpカスタムアクションコードには "using myCompany.PortalLib"というディレクティブがあります。
  • この問題を引き起こすWIXインストーラは、myCompany.PortalLibを参照しています。
  • コンパイルされたmyCompany.PortalLib.dllファイルのコピーをWIXインストーラに追加してみても役に立たない。
  • makesfxcaコマンドは、カスタムアクションプロジェクトによってビルドされたときに、myCompany.PortalLib.dllファイルとmicrosoft.deployment.windowsinstaller.dll出力を参照(/ r)し、実行時に出力に含まれていることを示しますパッケージ。サーバーのデータベースに書き込むことができるようにmyCompany.POrtalLibを利用するためにカスタムアクションを取得する

必要があります...

  • UPDATE:私はWIXで.dllファイルを含む試してみましたカスタムアクションのパッケージ化された.dllの横にあり、XML内でそのように参照します(HTML山括弧の場合は "["になります)。

    [バイナリID = "myCompany.PortalLib.dll" SourceFile = "myCompany.PortalLib .dll "/]

...上記のエラーは、「ファイルまたはアセンブリを読み込めませんでした」というエラーが表示されます。

答えて

2

まあ私もこれを修正しました!

私は、makesfxcaを使ってパッケージングコマンドを実行したときに、カスタムアクション用のdll、Windowsインストーラー用のdll、customaction.configをパッケージしていました。 myCompany.PortalLib.dllの有効なDLLにこれらの3つのパスを追加したとき、その関数を実行する時間が来たとき、それはchampのように機能しました...したがって、すべての依存外部DLLをパッケージ化されたカスタムアクションDLLカスタムアクションで使用するために外部DLLを組み込むためにはmakesfxcaを使用してください。

関連する問題