2009-03-17 1 views
2

VC++ 6.0プロジェクトVC++インストールクリエーター自分のプロジェクトを完了した後

iは、インストーラを作成して使用してプロジェクトEXE、

を作成した。しかし、問題は、VC++ 6.0ソフトウェア、それは実行されませんEXEプロジェクトなし

です

エラーを表示します:

このアプリケーションは、MFC42.DLLが見つかりませんでしたので、サジェストに失敗しました。アプリケーションを再インストールするとこれを修正する可能性があります。

私はinsatll vC++ 6.0ソフトウェアを使用するとエラーは発生しません。

plz任意のボディは、vC++ 6.0 s/wなしでプロジェクトを実行する必要があります。

かplzはどのようにMFC42.DLLが自由に配布された場合、プロジェクトのEXE(セットアップ)

答えて

1

チェックをするために教えてください。私はそれがマイクロソフトのランタイムライブラリの一部だと思うので、再配布するには正当なものでなければなりませんが、(他人が確認できない限り)これを確認する必要があります。

次に、dllがexeが開始されているのと同じフォルダにdllが含まれるように、そのdllをセットアップに含めてください。

1

広く使用されているインストールユーティリティに移行することを検討してください。多くのオープンソースプロジェクト(そしてかなりの商業プロジェクトも)は、InnoSetupを使ってインストーラをビルドします。

使用するツールに関係なく、一般的なプロセスは同じです。

  1. プログラムのリリースビルドを作成します。
  2. インストールが必要なすべてのファイルを特定します。 (Visual Studioに付属のdepends.exeツールを使用して、必要なDLLを確認してください)ヘルプファイルとサンプルを忘れないでください。
  3. ファイルやその他のインストール時のタスク(ショートカットの作成、DLLの登録など)を一覧表示します。
  4. インストールパッケージをビルドしてテストします。

テストインストールは難しい場合があり、実際には他の質問の対象となるはずです。インストールされているものをアンインストールすることができます。また、インストーラを再実行することは賢明です。また、古いコピーがまだ実行されている間にユーザーが更新プログラムをインストールしようとしているかどうかを検出し、それが発生したときに適切な処置をとる方法があることを確認することをお勧めします。

1

アプリケーションがVisual C++のランタイムに依存する場合は、エンドユーザーのインストール環境を簡素化するために、アプリケーションをインストーラーの一部として組み込むことができます。これは、Visual C++ランタイムマージモジュールをインストーラーに組み込む方法と、表示される予定のICE警告を説明する方法です。

手順1:正しいVisual C++ランタイムマージモジュールを入手 Visual C++ランタイムマージモジュールは、Visual Studioと共にインストールされ、\ Program Files \ Common Files \ Mergeモジュールにあります。 Visual C++ 8.0ランタイムファイルは、Microsoft_VC80_CRT_x86.msmです。この同じMSMはVisual C++ 8.0 SP1ランタイムに使用されますが、Visual Studio 2005 SP1インストーラーによってその場で更新されます。 Visual Studio 9.0ランタイムファイルはMicrosoft_VC90_CRT_x86.msmです。一般に、インストールの一部としてポリシーMSMを含める必要はありません。

手順2:インストーラにマージモジュールを組み込む マージモジュールをインストーラに含めるには、および要素を使用します。次の例は、これらの要素の使用方法を示しています。

マージ要素は、マージモジュールは、最終的なWindowsインストーラパッケージに含まれている保証します。一意のIDはId属性を使用して割り当てられます。 SourceFile属性は、マシン上のマージモジュールの場所を示します。 DiskId属性は、プロジェクトのMedia要素で指定されたDiskIdと一致する必要があります。 Language属性は常に0にする必要があります。

MergeRef要素は、実際にマージモジュールをインストールするためにFeature要素内で使用されます。上記の例では、ランタイムに固有の機能が作成され、非表示に設定されているため、インストーラが使用するUIに表示されません。 MergeRefは、一意のIDでマージモジュールを参照します。