Использование скриптов в Windows среде

В Windows существует встроенная поддержка скриптов. Например, пакетные файлы командной строки BAT-файлы выполняются в windows именно как скрипт. То есть, при старте BAT-файла система анализирует (по расширению файла) что ей подсовывают и вызывает соответствующий обработчик.

В проекте Madus в качестве скриптового языка используется PHP. Рассмотрим на его примере, как вписать его в систему так, чтобы при запуске PHP-файла автоматически запускался его интерпретатор.

Для этого нам понадобится вписать некоторые записи в реестр. Именно там хранятся соответствующие настройки операционной системы. Создадим файл, назовём его PHPScriptInstall.reg, в котором опишем все основные настройки:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.php]
@="PHPFile"

[HKEY_CLASSES_ROOT\PHPFile]
@="PHP-скрипт"

Первая строка нужна, чтобы regedit правильно определил свой файл. Следующие две строки описывают место в реестре, где искать продолжение описания. Смотрите ниже, там все строки находятся в подключе PHPFile.

[HKEY_CLASSES_ROOT\PHPFile\DefaultIcon]
@="C:\\Program Files\\PHP\\php.exe, 1"

Тут, думаю, понятно, эта запись указывает, какую иконку ассоциировать с PHP-файлом. Кстати, перед тем как всё настраивать, следует установить интерпретатор PHP. Как видно из описываемой строки, в данном примере интерпретатор установлен в папку C:\Program Files\PHP. Слить дистрибутив можно по адресу http://www.php.net/downloads.php.

[HKEY_CLASSES_ROOT\PHPFile\Shell]
@="Open"

[HKEY_CLASSES_ROOT\PHPFile\Shell\Edit]
@="&Изменить"

[HKEY_CLASSES_ROOT\PHPFile\Shell\Edit\Command]
@="C:\\Program Files\\Editor\\Editor.exe \"%1\""

[HKEY_CLASSES_ROOT\PHPFile\Shell\Open]
@="&Открыть"

[HKEY_CLASSES_ROOT\PHPFile\Shell\Open\Command]
@="\"C:\\Program Files\\PHP\\php.exe\" \"%1\" %*"

[HKEY_CLASSES_ROOT\PHPFile\Shell\Open2]
@="Открыть в &браузере"

[HKEY_CLASSES_ROOT\PHPFile\Shell\Open2\Command]
@="cmd /c C:\\Progra~1\\PHP\\php.exe %1 %* >C:\\Temp\\phptemp.html &&
C:\\Temp\\phptemp.html"

[HKEY_CLASSES_ROOT\PHPFile\Shell\Print]
@="&Печать"

[HKEY_CLASSES_ROOT\PHPFile\Shell\Print\Command]
@="C:\\Program Files\\Editor\\Editor.exe /p \"%1\""

Здесь описываются основные команды для оболочки. То есть что делать с файлом с расширением php, и какие команды доступны при вызове контекстного меню. По умолчанию - открыть.Кстати, для того чтобы файл открыть в браузере, используется маленький трюк. Сначала файл отправляется интерпретатору, а выход со стандартного потока перенаправляется в файл во временной папке, в данном примере в папке C:\Temp. И уже потом вызывается просто запуск созданного файла. Подразумевается, что операционная система сама вызовет брауер и передаст сгененрированный файл в качестве параметра. Обратите внимание, что вся команда передаётся интерпретатору командной строки CMD, при этом, есть трудности передачи ему длинных имён файлов, содержащих пробелы. Простое решение - передавать DOS-имена.

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.php]

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.php\OpenWithList]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.php\OpenWithList]
"a"="cmd.exe"
"MRUList"="a"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.php\OpenWithProgids]
"PHPFile"=hex(0):

Эти строки формируют обработчик php-файла. Обратите внимание, минус перед строкой означает, что её надо удалить. Это необходимо сделать, потому что этот параметр может уже существовать в системе, его туда прописывают другие программы.

Итак, всё сводится к простым шагам: скачать и установить PHP, подправить файл реестра (прописать где находится интерпретатор и редактор), запустить и выполнить тестовый файлик. Кстати, вот он (test.php):

<?php
  phpcredits(CREDITS_ALL);
?>

Сохраняем файлик, вызываем cmd.exe, в командной строке пишем test.php. Если всё сделано правильно и работает, то в окне появится список разработчиков PHP. На этом считаем установку PHP в качестве скриптового языка законченной.

© 2006-2009 Сикорски, sicorski@madus.org, ICQ: 347183