2017-09-27 15 views
0

私はdllプロジェクトのインストーラを作成しています。その中に私は参照ファイルを持っています。カスタムアクションに出力を追加しました。エラーが表示されます:Msiカスタムアクションインストーラ:エラー1001

Error 1001. Error 1001. Unable to get installer types in the C:\Program Files (x86)\Default Company Name\CadmateAddinSetup\AddInToolBar.dll assembly. --> Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

解決方法 私はwpfのユーザーコントロールを持っていて、いくつかのフォームとクラスはdllプロジェクトで勝ちます。私が追加しなかった参照ファイルのためですか?もしそうなら、どの依存ファイルが見つからないのかを特定する。

答えて

0

ほとんどの場合、依存関係はありますが、Visual Studioでは、少なくともアセンブリマニフェスト情報から検出できるものをセットアッププロジェクトに追加しようとする必要があります。実行時にリンクするDLLが何もないので、VSはCOMの依存関係を検出しません。また、アセンブリがGACにインストールされていて、DLLが依存している場合は、これも失敗の原因になります。アセンブリはCommitフェーズまでGACにはないため、Commitカスタムアクションが動作することがあります。

その他の問題は、アセンブリが標準的な方法でロードされていないことです。これは、リフレクションでインスタンス化され、インストーラクラス(したがってメッセージ)の検索を試み、リダイレクトなどをバイパスします。

アーキテクチャの不一致もあります。 DllがAnyCpuで64ビットモードで実行されている場合、32ビットの依存アセンブリはロードされません。

Fusion Log Viewerは、欠落している依存関係を特定するのに便利です。

このDLLには、インストール中に表示するフォームとコントロールが含まれている場合、これは一般的に正しいことではありません。サイレントインストールを行うことはできません。フォーム/コントロールは正しく機能しません(Windows UIメッセージループの適切な環境では実行されていません)。また、カスタムアクションが(おそらく)システムアカウントで実行され、UIを表示するため、Windowsセキュリティによって表示されないことがあります。これは、対話型デスクトップサービスが廃止されたのと同じ理由です。だからあなたが何らかの設定をしているのであれば、通常のユーザアプリからアプリを初めて実行してください。

関連する問題