2017-03-07 14 views
0

私はWiXを使って64ビットアプリケーションをインストールしています。私は64 bit installer作る方法を考え出したが、私は手動でWiXで64ビットDLLを登録する方法

"Program can't start because XXXX.dll is missing from your computer. 
Try reinstalling the program to fix this problem" 

エラーを得ることはありません私はインストール私のDLLを登録する方法を考え出すのトラブルを抱えています。

私はheat.exeを使用して、必要なRegistryValueタグを作成しようとしましたが、64ビットDLLと互換性がありません。私は32ビットでDLLのいくつかをコンパイルしましたが(32ビットで私が利用できるわけではありませんが)、まだheat.exeを動作させることができませんでした。 this WiX help articleを見ると、RegistryValueというタグを手作業で作成できるはずですが、何を入れるべきか混乱しています。私は例hereを見てきましたが、それはWiXの記事よりずっと複雑です。

どのようなRegistryValueタグは、OSにDLLを登録する必要がありますので、PATH上にありますか?

EDIT:追加のコンテキスト。

私はSDKといくつかのサンプルソースコードをインストールしようとしています。私はSDK(DLL、.libs、およびヘッダー)を\ Program Filesのフォルダに入れています。サンプルのソースコードをデスクトップのフォルダに入れています。 %LIBPATH%にlibディレクトリ、%INCLUDE%にインクルードディレクトリ、%PATH%にbin(DLL)ディレクトリがあります。

次に、サンプルコードのVS Solutionを使用してデスクトップにフォルダがあります。このソリューションでは、Additional Library Directoriesに%LIBPATH%を指定し、VSプロジェクトのAdditional Include Directoriesフィールドに%INCLUDE%を指定します。それはうまく動作し、ソリューションが構築されます。しかし、私はそれを実行しようとすると、 "あなたのコンピュータからDLLが見つかりません"エラーが発生します。私はSDK DLLを(%PATH%にあるかどうかに関わらず)見つけることができるようにしたいので、DLLをコピーする必要なしにデモコードを構築して実行するだけです彼らが構築する他のアプリケーションにも当てはまります。

編集2:私は質問を閉じるために投票しています。 WiXを使ってDLLを登録することは、私の実際の問題とは関係がないようです。

+0

各DLLの['File'](http://wixtoolset.org/documentation/manual/v3/xsd/wix/file.html)要素に' SelfRegCost = "1" 'を追加するだけでよいでしょう。 – zett42

+0

私はそれを試み、登録に失敗しました。また、それは[ベストプラクティスではないようです](http://stackoverflow.com/questions/364187/how-do-you-register-a-win32-com-dll-file-in-wix-3) 。 – stranger

答えて

1

ここでは2つのことが混乱しています。 "Registration"はCOMアクティビティですが、 "XXXX.dll is missing"は通常のCOM以外のDLLを示します。

%PATH%への参照は、COM以外のDLLでのヒントも示していますが、%PATH%は必要ありません。代わりに、実行可能ファイルの横にDLLをインストールします。

理論的には、アプリケーションマニフェストもありますが、マイクロソフトではそれをまったく扱っていません。どんな種類の普通のアプリケーションを書いていても、私はそれらを完全に避けるでしょう。

+0

ありがとうございます。あなたが提案するようにDLLをEXEフォルダに置くことができない理由についていくつかの文脈を提供するために質問を編集しました。 – stranger

関連する問題