4

x86 msi または x64 msi ファイルをインストールするための適切な CPU アーキテクチャを検出しようとしています。

私が正しければ、msi には os cpu アーキテクチャが必要です

私はそれをテストすることができないので、私の方法が正しいかどうかは完全にはわかりません. どう思いますか?

private static string GetOSArchitecture()
    {
        string arch = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");
        string archWOW = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432");
        if(archWOW != null && archWOW != "" && archWOW.Contains("64"))
            return "x64";
        if(arch.Contains("86"))
            return "x86";
        if (arch.Contains("64"))
            return "x64";
        return "";
    }
4

3 に答える 3

3

64 ビット OS の 32 ビット プロセス内からでも、OS の CPU アーキテクチャを提供するGetNativeSystemInfoにP/Invoke を実行できます。

于 2010-01-07T01:13:30.520 に答える
0

簡単です。64ビットアプリケーションを実行してみてください。失敗した場合は、32ビットプラットフォームを使用しています。

何をしようとしているかに基づいて、追加するように編集しました。msiランナーアプリケーションが32ビットアプリであることを確認した場合は、Stuartの方法を使用してください。

于 2010-01-07T00:56:44.457 に答える
0

正しい方法は、 IsWow64Process を呼び出すことです。ただし、この API には「Windows XP SP2、Windows Vista、Windows Server 2003 SP1、または Windows Server 2008 が必要です」。この方法はさらに簡単です。

于 2010-01-07T00:49:41.977 に答える