TechnicsKuzya
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Кому необходимо запускать, с помощью 32-битного sfx-модуля 7-Zip (или любого другого 32-битного приложения), cmd-скрипт ориентированный на обработку 64-битным cmd.exe, вот рабочее решение: К примеру, есть скрипт Setup_64.cmd, ориентированный на использование 64-битной версии cmd.exe. В папку Tools помещаем 64-битный cmd.exe из папки C:\Windows\System32 (копировать только через 64-битный софт, иначе будет редирект в папку C:\Windows\SysWow64 и Вы скопируете 32-битный cmd.exe). Подтверждением того, что Вы используете 64-битную версию коммандного процессора, может служить его соответствующее отображение в диспетчере задач, т.е. без идентификатора *32. Создаем скрипт, к примеру Start.cmd c содержанием: Код: @echo off .\Tools\cmd.exe /Q /K "call Setup_64.cmd" exit | Теперь запускаем с помощью sfx-модуля - скрипт Start.cmd - он будет обработан с помощью 32-битной версии cmd.exe (В диспетчере задач увидете cmd.exe *32), а скрипт Start_64.cmd уже будет вызван с помощью 64-битной версии cmd.exe (в диспетчере задач увидете рядом с cmd.exe *32 - cmd.exe) - это и будет среда выполнения скрипта Start_64.cmd. P.S. В скрипт предназначенный для 64-битной среды также не помешает добавить проверку переменной PROCESSOR_ARCHITECTURE, иначе, при запуске, для примера, из традиционного файлового менеджера TotalCommander 32-bit, также могут возникнуть проблемы. Вышеуказанный скрипт способен их решить. Кроме того, приведенный код скрипта можно объединить с основным кодом, и тем самым получить универсальный скрипт, который будет корректно работать при запуске хоть из 32-битного приложения, хоть из 64-битного. Дополнительная информация для решения "проблемы" другим способом (использование виртуальной папки %WinDir%\Sysnative - из которой напрямую можно запустить 64-битный cmd.exe из 32-битного cmd.exe, без необходимости его копирования в индивидуальную папку): http://support.microsoft.com/kb/942589 http://msdn.microsoft.com/en-us/library/aa384187(VS.85).aspx http://tr-tr-mitya.spaces.live.com/blog/cns!8CA28E6A05580D3E!233.entry Вышеуказанное, считаю, будет полезно, при создании сборников обновлений для 64-битной ОС, т.к. необходимо получить универсальный скрипт, который будет одинаково выполняться, как при запуске из 64-битного приложения, так и из 32-битного.
| Всего записей: 495 | Зарегистр. 02-02-2008 | Отправлено: 11:48 27-12-2009 | Исправлено: TechnicsKuzya, 12:04 27-12-2009 |
|