0

vs インストーラーを使用して、vb6 アプリのセットアップ パッケージをビルドしています。問題は、プロジェクト エクスプローラーの下に、私の exe ファイルに添付された依存関係のリストがあることです。

代替テキスト http://img505.imageshack.us/img505/9696/croppercapture259lr8.png

ターゲット マシンのツリービューのファイル システムの下で、実際には dll/ocx をフォルダーまたは Windows システム フォルダー自体 [左側のウィンドウ] に格納できます。

代替テキスト http://img101.imageshack.us/img101/9224/croppercapture251qm1.png

だから私が理解していないのは..実際に違いはありますか?依存関係を設定しただけで、dll または ocx をフォルダーまたは win sys フォルダーに追加しなかった場合、dll も自動的にコピーされますか?

4

2 に答える 2

1

これらのすべての dll が、ソフトウェアがインストールされているシステムに存在することは保証されていません。そのため、インストーラーに含める必要があります。そこから2つの選択肢があります。

これらは、Windows システム フォルダーまたはアプリケーション フォルダーにインストールできます。違いは、それらをアプリケーション フォルダーにインストールすると、XP と Vista でセットアップできるため、異なるバージョンのコンポーネントを持つ異なるバージョンのソフトウェアを起動して、並べて実行できることです。これらをシステム フォルダにインストールすると、古いバージョンのコンポーネントに依存する古いバージョンが壊れます。

コンポーネントが更新できない他のコンポーネントに依存している場合、アプリケーション フォルダーへのインストールはほとんど機能しません。これが発生する場合、通常は Microsoft ライブラリで発生します。彼らは、この問題に関して何年にもわたって改善してきました。

side by side 実行に関する問題の詳細については、こちらをご覧ください。

最後に、Windows レジストリに登録されるように、依存関係をインストーラーに含める必要があります。ほとんどの .NET アセンブリとは異なり、ActiveX/COM アプリケーションでは、CreateObject および Variant 型を使用してアクセスしている場合でも、コンポーネントを使用するためにコンポーネントを登録する必要があります。

プロセス全体が独特であり、DLL Hell に関する話の情報源の 1 つであることは認めます。MSDN の記事から始めて、ウィキペディアを使用し、もちろんここでさらに質問してください。

于 2008-11-20T13:34:37.197 に答える
0

通常、通常のインストーラー パッケージの app フォルダーの下に "dlls" フォルダーを配置するべきではありませんが、多くの要因が関係しています (プライベート標準 DLL、Reg-Free COM など)。はい、依存関係が含まれます (除外しない限り)。それぞれに、ターゲット システムのどこにインストールするかを決定するプロパティが必要です。

また、そのリストには、OS 依存のシステム コンポーネント、MDAC コンポーネント、または再配布のライセンスがない (fm20.dll など) ため、この方法で再配布できないコンポーネントが多数あります。

悲しいことに、これは、ユーザーのシステムの DLL Hell に直接つながる可能性のあるパッケージのタイプの例です。これを修正するには、MS KB 記事のすべての MS コンポーネントを調査して、再配布できるものと再配布する必要があるものとその方法を判断する必要があります。

展開は、正しく行うのが面倒な作業になる可能性があります。

于 2009-01-17T19:26:55.607 に答える