2015-04-14 2 views
3

У меня есть пакетный файл, который (по соображениям совместимости) работает в 32-разрядном cmd.exe процессе. Однако теперь мне нужно запустить 64-битную версию инструмента командной строки Windows, в данном случае msiexec. Как я могу это сделать?Как запустить 64-разрядную версию утилиты Windows (например, msiexec) в 32-разрядном пакетном сценарии?

Дополнительная деталь:

Я использую пакетный файл для установки различных программных продуктов. Для максимальной совместимости со старыми продуктами командный файл работает как 32-разрядный процесс. Однако теперь мне нужно установить Intel Haxm, для которого требуется 64-разрядная версия msiexec.

Я уже пробовал позвонить c:\windows\system32\msiexec.exe, но при этом файл журнала установщика Windows, по-прежнему говорит:

=== Verbose logging started: 14.04.2015 14:27:53 Build type: SHIP UNICODE 5.00.9600.00 Calling process: c:\windows\SysWOW64\msiexec.exe ===

+3

В Vista + он доступен как '% SystemRoot% \ Sysnative \ msiexec.exe'. – eryksun

+0

@eryksun - скорее '% SystemRoot% \ System32 \ msiexec.exe' – npocmaka

+1

@npocmaka, скорее нет. Узнайте о [Редиректор файловой системы] (https://msdn.microsoft.com/en-us/library/aa384187) для процессов WOW64. – eryksun

ответ

6

Вы можете сделать это, используя sysnative псевдоним, как описано в MSDN статья File System Redirector:

32-разрядные приложения могут обращаться к исходному системному каталогу путем замены % windir% \ Sysnative для% windir% \ System32. WOW64 распознает Sysnative как специальный псевдоним, используемый для указания, что файловая система не должна перенаправлять доступ. Этот механизм является гибким и простым в использовании, поэтому рекомендуемым механизмом является обход перенаправления файловой системы. Обратите внимание, что 64-разрядные приложения не могут использовать псевдоним Sysnative, так как это виртуальный каталог, который не является реальным.

Windows Server 2003 и Windows XP: Добавлен псевдоним Sysnative, начиная с Windows Vista.

Так, в пакетном файле, вы могли бы сказать что-то вроде

%windir%\sysnative\msiexec /install product.msi /passive /norestart 

Или, если вам нужно запустить еще один пакетный файл

%windir%\sysnative\cmd.exe /c silent_install.bat 

Обратите внимание, что sysnative не поддерживается в 64 -битные версии Windows XP или Windows 2003, если не установлено исправление 942589. See this answer for one workaround.

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

  • Нет связанных вопросов^_^