msi インストーラーのカスタム アクション dll は Visual Studio のみで作成する必要がありますか?
-
09-09-2019 - |
質問
Visual Studioでセットアッププロジェクトを作成しました。また、いくつかのカスタムアクションも必要です。Visual C++でDLLを作成し、正常に動作しますが、プロジェクトにVisual C++ランタイムファイルを含めたくないです。それでは、他の C++ コンパイラを使用してこの DLL をビルドすることは可能でしょうか?
Dev-c++で作成しようとしましたが、コンパイル時にファイルmsi.hとmsiquery.hから数百のコンパイルエラーが発生しました
解決
おそらく最も簡単な解決策は、静的なランタイムlibに照らし合わせてDLLをリンクすることです。
他のヒント
一般に、カスタム アクション DLL は、インストール前にシステムにすでに存在している DLL のみに依存する必要があります。これは、MSalters が指摘したように、たとえば CRT を静的にリンクすることを意味しますが、サードパーティ ライブラリへの他の依存関係にも当てはまります。
Koby Kahane 氏が説明するように、もう 1 つのオプションは OS CRT とリンクすることです。 ここ.
私は私のセットアッププロジェクトのカスタムDLLを作ってきました。私のdllがCLRまたは依存libのいずれかのサードパーティ製ではないいくつかのサービスを、登録し、非常に簡単です。静的にのみmsi.libとリンクしています。
私は、セットアッププロジェクトから.NETとWindowsインストーラの前提要件を削除しました。私のセットアップは、.NET Frameworkを持っていないmacinesに失敗..?
私はこれに対する解決策がどうあるべきか、任意の.NET依存コードを持っていないとして。私はドン; tは、ユーザがインストール用の第1のフレームワークをダウンロードしたい
よろしく アミット
ここでは、カスタムアクションのためのC ++のDLLを使用して、いくつかの簡単な例を見つけることができます: