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 "/]
...上記のエラーは、「ファイルまたはアセンブリを読み込めませんでした」というエラーが表示されます。