2010-01-07 3 views
4

Я пытаюсь обнаружить правильную архитектуру процессора для установки либо x86 msi, либо x64 msi-файла.Правильный способ определения архитектуры процессора?

Если я прав, то для MSI мне нужна архитектура ОС центрального процессора

Я не совсем уверен, что мой путь является правильным, потому что я не могу проверить это. Как вы думаете?

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 ""; 
    } 
+3

Вы действительно собираетесь отправить установщика без предварительного тестирования? Это смело. –

+0

Я могу протестировать его, но только на одной машине x64 и одной машине x32 не на каждом процессоре типа ... это проблема – Kai

+0

любое окончательное решение? – Kiquenet

ответ

0

right способ вызвать IsWow64Process. Этот API «требует Windows XP SP2, Windows Vista, Windows Server 2003 SP1 или Windows Server 2008». This method еще проще.

+1

Это не скажет вам, что такое архитектура процессора, только то, что работает сам процесс. – mletterle

+0

Вам нужна архитектура ОС или фактическая архитектура процессора? –

+0

Мне нужна эта архитектура, которая важна для запуска правильного msi. код является частью обновления, который загружает msi и выполняет его. – Kai

0

Простой, попробуйте выполнить 64-битное приложение. Если это не удается, вы на 32-битной платформе.

Отредактировано для добавления на основе того, что вы пытаетесь сделать, если вы убедитесь, что ваше приложение-бегущее приложение msi - это 32-битное приложение, то используйте метод Стюарта.

+0

нет хорошей идеи, потому что я загружаю только один файл, не оба ... – Kai

3

Вы можете P/Invoke до GetNativeSystemInfo, что даст архитектуру ЦП ОС, даже из-за 32-разрядного процесса в 64-разрядной ОС.

+0

Если я прав, для msi мне нужна архитектура os cpu – Kai

+1

И вот что вам это дает. – Michael

+0

32-разрядная система Windows может быть установлена ​​на 64-битном процессоре. Как MSDN, так и ваш ответ «фактическая архитектура процессора» говорят мне, что GetNativeSystemInfo сообщает x64, но в этом случае Kai нужно сообщить x86. –

Смежные вопросы