2

インストールされていないソフトウェア/コンポーネントのレジストリをチェックし、必要に応じてインストールするインストーラーを作成しています。私が抱えている問題は、Windows の新しいコピー (http://www.microsoft.com) の DirectX エンド ユーザー ランタイム Web インストーラーから最新の DirectX エンド ユーザー ランタイムをインストールすると、実行する必要があるソフトウェアが正しく起動することです。 /en-au/download/details.aspx?id=35)。

インストールされていない場合に表示されるエラーは、「d3dx9_43.dll がコンピューターにないため、プログラムを開始できません」です。Windows の新規インストールでも、HKEY_LOCAL_MACHINE\Software\Microsoft\DirectX の DirectX レジストリ エントリのバージョン キーに「4.09.00.0904」が表示されます。

私の質問は、レジストリのどこを調べて、DirectX エンド ユーザー ランタイムのすべてのコンポーネントがインストールされているかどうかを確認することです。

助けてくれて本当にありがとう。

4

1 に答える 1

2

使用しているインストーラー、スクリプト、またはプログラミング言語については言及していません。それは知っておくと役に立ちます。

ダウンロード サイズを気にしない場合、最も簡単な方法は、常に DirectX ランタイムを盲目的にインストールすることです。すでにある場合は、インストールしても問題ありません。

考慮できるその他の事項を次に示します。

Vista 以降 (Win7、Win8、Server 2K8 を含む) を使用している場合は、おそらく何もインストールする必要はありません。これらのオペレーティング システムは、バイナリがプリインストールされた状態で出荷される可能性が高いためです。XP SP2 以降についても同様です。あなたの「Windows の新しいコピー」は XP よりも新しいものですか?

もう 1 つの簡単な方法は、Windows\System32 または Windows\SysWow64 ディレクトリで d3dx9_43.dll の存在を検索することです。

プログラム的には、次のようにインストーラー コードで DLL のインストールを検出することができます。

#include <windows.h>
BOOL HasD3DX9()
{
    HMODULE hMod = LoadLibrary("d3dx9_43.dll");
    return (hMOD != NULL) ? TRUE : FALSE;
}
于 2012-07-24T08:54:21.330 に答える