2013-04-18 9 views
5

ターゲットのx86インストーラで32ビットのC#アプリケーションがあります。このアプリケーションは、x64マシン上で稼働しても問題なくインストールできます。しかし、ソフトウェアに統合されたベンダーのサードパーティ製ハードウェアは、x64システムにインストールするたびに64ビットDLLを使用する必要があります。どのように32ビットのC#アプリケーションで64ビットDLLを利用できるのですか

は現在、私は私のプロジェクトに32ビットDLLと64ビットDLLの両方を配置しています。しかし、ターゲットのx86インストーラは明らかに64ビットDLLを好まない。

は、それは私が私が64ビットのDLLおよび/または32ビットのDLLを展開し、まだ唯一のインストーラプロジェクトを持つことができるソリューションを作成することは可能ですか? (私は、高度なインストーラと呼ばれるサードパーティ製のソフトウェアを見てきましたが、これは私が私が必要とするソリューションを実現するのに役立ちます場合、私は確かに知っていない)

するか、それが一般的なインストーラプロジェクトを作成することは可能でしょうか?

注:二つのインストーラ(x64の対x86の)私たちは、私が再定義する必要はありません、自動更新のプロセスを持っているので、展開が実現可能ではありません。 1つのMSIファイルを維持することは私にとって重要です。

アドバイスありがとうございます。 http://www.advancedinstaller.com/user-guide/qa-OS-dependent-install.html

また、あなたが必要と同じ名前を持つDLLの2つのバージョンを持っている場合:MSIは、次の資料がそれを行う方法を説明し、高度なインストーラの問題ではありませんのx86から​​ファイルをインストールする

+1

NSISでこれを行うことができます。 – leppie

+3

本当の問題は、x86アプリケーションからx64 DLLを使用できなくなることです。 –

+6

32ビットプロセスから64ビットDLLを使用することはできません(またはその逆)。これは、アドレス空間の間で変換する方法がないため、一部にあります。 [この投稿はRaymond Chenのブログの詳細を参照](http://blogs.msdn.com/b/oldnewthing/archive/2008/10/20/9006720.aspx)。 64ビットと32ビットを混在させたい場合、2つのプロセスとある種のプロセス間通信が必要です。 –

答えて

0

ここに表示するフォルダに配置する:http://www.advancedinstaller.com/user-guide/qa-install-file-with-same-name.html

ただし、コメントに記載されている人のように、アプリケーションが正しくx64 DLLを読み込むことができるかどうかを確認する必要があります。

+0

彼はなぜチェックする必要がありますか?このプロセスは、32ビットのみのプロセスを意味するx86を対象としています。単一の32ビットライブラリを参照する場合に「ANY CPU」に設定されていても、32ビットプロセスになります。これはまた、64ビットライブラリをロードできないことを意味します。 –

+0

私は、このDLLがx86アプリケーションによって直接ではなく、暗号化で言及された第三者コンポーネントによって読み込まれる可能性があることを考慮しました。 –

関連する問題