//Проверяем доступность исходного каталога
if (!FSO.FolderExists(SFrom)) { //Исходный каталог не существует
//Формируем строку с информацией об ошибке
SErrMess="Не найден исходный каталог "+SFrom;
return false;
}
//Проверяем доступность каталога для архивирования
if (!FSO.FolderExists(SArch)) {
//Каталог для архивирования не существует
//Формируем строку с информацией об ошибке
SErrMess="Не найден каталог для хранения архивов "+SArch;
return false;
}
//Если оба каталога существуют, возвращаем true
return true;
}
//Архивирование файлов из исходного каталога
function FilesToArchiv() {
var WshShell,SComLine,RetCode,SFName,FSO;
//Если хотя бы один из каталогов не существует, возвращаем false
if (!CheckPath()) return false;
//Создаем объект FileSystemObject
FSO=new ActiveXObject("Scripting.FileSystemObject");
//Создаем объект WshShell
WshShell = new ActiveXObject("WScript.Shell");
//Формируем имя файла-архива
SFName=SPref+NowIs()+".arj";
//Формируем командную строку для запуска архиватора arj.exe
SComLine="%COMSPEC% /c arj.exe a ";
SComLine+=FSO.BuildPath(SArch,SFName)+" ";
SComLine+=FSO.BuildPath(SFrom,SMask);
//Запускаем архиватор arj.exe
RetCode = WshShell.Run(SComLine, 1, true);
//Анализируем код возврата для arj.exe
if (0==RetCode)
//Выполнение arj.exe завершилось без ошибок
return true;
else {
//Формируем строку с информацией об ошибке
SErrMess="Ошибка ARJ.EXE! Код "+RetCode;
return false;
}
}
]]>
</script>
</component>
Регистрация файла DateArc.wsc в качестве СОМ-объекта
После написания текста объекта-сценария нужно внести информацию о нем в системный реестр, т.е, зарегистрировать объект. Это можно сделать несколькими способами, самый простой из которых заключается в следующем. Нужно выделить в Проводнике Windows необходимый WSC-файл с компонентом-сценарием (в нашем случае это файл DateArc.wsc в каталоге C:\WSC), щелкнуть правой кнопкой мыши и в появившемся контекстном меню выбрать пункт Подключить (Register) (рис. 10.7).
Рис. 10.7. Контекстное меню, сопоставленное расширению WSC
После этого необходимая информация запишется в реестр и выполнится функция Register(), которая описана в файле DateArc.wsc внутри элемента <registration>, в результате чего на экран будет выведено диалоговое окно, показанное на рис. 10.8.
Рис. 10.8. Информация о регистрации компонента-сценария DateArc.WSC
В системном реестре данные о регистрируемом объекте DateArc.WSC заносятся в две ветви: HKEY_LOCAL_MACHINE и HKEY_CLASSES_ROOT.
В разделе HKEY_LOCAL_MACHINE\SOFTWARE\Classes создается новый подраздел DateArc.WSC со значением по умолчанию "DateArc". В подразделе DateArc.WSC в параметр CLSID записывается глобальный код объекта DateArc.WSC — "{424AC2BC-5732-4DEA-BE17-0211AF99CD79}" (рис. 10.9).
Рис. 10.9. Информация о зарегистрированном объекте DateArc.WSC в ветви HKEY_LOCAL_MACHINE
В разделе HKEY_CLASSES_ROOT\CLSID создается новый подраздел, название которого совпадает с глобальным кодом объекта DateArc.WSC — "{424AC2BC-5732-4DEA-BE17-0211AF99CD79}". Значением по умолчанию для нового подраздела является "DateArc" (рис. 10.10).
Рис. 10.10. Информация о зарегистрированном объекте DateArc.WSC в ветви HKEY_CLASSES_ROOT
В новом разделе создаются, в свою очередь, еще несколько подразделов, значения которых очень важны для функционирования компонента-сценария в качестве СОМ-объекта (см. разд. "Технология Windows Script Components"). Эти разделы для нашего примера описаны в табл. 10.2.
Таблица 10.2. Подразделы, создаваемые в разделе HKCR\CLSID \{424AC2BC-5732-4DEA-BE17-0211AF99CD79} при регистрации объекта DateArc.WSC
| Название | Значение по умолчанию | Описание |
|---|---|---|
InprocServer32 |
"F:\WINDOWS\System32\scrobj.dll" | Полный путь к оболочке компонентов-сценариев scrobj.dll |
ProgID |
"DateArc.WSC.1.00" | Программный идентификатор объекта, включающий номер версии |
ScriptletURL |
"file://C:\WSC\DateArc.wsc" | Полный путь к WSC-файлу |
VersionIndependentProgID |
"DateArc.WSC" | Программный идентификатор объекта без номера версии |