Операционные системы - статьи

         

Другие полезные команды и переменные


Использование переменных, корректировок реестра и условных операторов позволит на 99% реализовать все задачи алгоритма установки. Справиться же с оставшимся процентом поможет целый ряд полезных команд и переменных.

Delete File(s). Хотя мастер позволяет устанавливать файлы на пользовательскую систему, он не располагает средствами удаления существующих файлов. Для этого можно применить команду Delete File(s) (удалить файл(ы)) редактора сценариев.

ЭКРАН 5. Задание файла для удаления.

Предположим, требуется создать приложение для "уборки мусора" в системе. При этом желательно, чтобы пакет предотвращал автоматический запуск программы Microsoft Find Fast (из папки автозагрузки). Для этого, как показано на Экране 5, нужно добавить в сценарий команду Delete File, которая сообщит приложению, в каком каталоге находится удаляемый значок. Чтобы описать местонахождение файла, можно использовать либо собственную переменную, которую надо предварительно объявить, либо стандартную переменную SMS Installer STARTUPDIR.

При описании перечня удаляемых файлов разрешено применять символы шаблона, что однако запрещается при работе с системными каталогами \Windows и \Winnt\System32. Кроме того, диалоговое окно команды Delete File(s) содержит ряд флажков, позволяющих удалять каталоги и файлы во вложенных каталогах.

В некоторых версиях SMS Installer режимы работы с каталогами и удаления вложенных каталогов могут функционировать неправильно. О том, как решать подобные проблемы, рассказано в статье Microsoft "SMS: Remove Directory Containing Files Option in 'Delete Files' Script Item Not Functioning Properly", которую можно найти по адресу: http://support.microsoft.com/support /kb/articles/q235/7/48.asp. Более подробные сведения о программных "заплатках" для SMS Installer приведены в статье "SMS Installer Fixes". Указанные ошибки в работе команды Delete File(s) полностью исправлены в версии SMS Installer 2.0.91.00, в которую также включены средства отладки и целый ряд новых команд, в том числе для управления цветом.


Parse String. Иногда возникает необходимость использовать только часть переменной или разделить одну переменную на две. Подобные действия легко выполнить с помощью команды разбора строки Parse String, которая усекает или разделяет переменную, основываясь на заданном порядковом индексе символа или шаблоне выделения.

Допустим, для определения порядка дальнейших действий сценарию необходимо "знать" номер версии установленного приложения. Предположим также, что известен параметр реестра, который описывает этот номер (например, 2.0.1.b или 3.0.5a). Если необходим только основной номер версии (например, 2.х или 3.х), можно обрезать строку с полным номером и вернуть в сценарий только первый его символ. Для этого с помощью параметра Split value команды Parse String нужно выбрать режим разбора строки слева, а параметру Pattern/Position присвоить значение 1. В результате команда извлечет из строки первый символ с номером версии и поместит его в указанную переменную. После этого можно использовать условный оператор для организации ветвления сценария в зависимости от значения переменной.

Include Script. Если есть желание создавать сценарии по модульному принципу, чтобы лучше структурировать их, можно воспользоваться командой включения сценария Include Script. Как следует из названия, команда вставляет в исполняемый сценарий файл другого сценария. Например, SMS Installer пользуется данной командой для включения в пакет функций удаления устанавливаемого приложения. Для этого SMS Installer вставляет в сценарий файл uninstal.ipf, который копирует файл соответствующей утилиты удаления и записывает необходимые параметры в реестр. Это позволяет удалить установленное приложение с помощью значка Add/Remove Programs панели управления. Клиенты SMS могут использовать эту возможность для автоматического удаления приложения, публикацию которого SMS больше не поддерживает.

RESTART. Обычно, когда сценарий выполняет такие команды, как замена системного файла или модификация файла autoexec.bat, установочный пакет предлагает пользователю перезагрузить систему после завершения установки.


Для регулирования этого процесса используется переменная RESTART, которая определяет, будет ли пакет выполнять перезагрузку. Если данной переменной присвоить пустое значение, перезапуска не будет. Чтобы реализовать эту возможность, в конец сценария следует добавить команду Set Variable, присваивающую переменной RESTART значение ' ' (пробел). При этом важно помнить, что многие приложения могут неправильно работать до перезагрузки системы. Однако если SMS используется для одновременного развертывания целого ряда приложений, лучше отложить перезагрузку до завершения установки последнего из них.

Кроме того, можно использовать переменную RESTART для выполнения принудительной перезагрузки после установки пакета, который не требует перезапуска системы. Для этого нужно присвоить RESTART значение S. Кроме того, если выполняется дистрибуция инсталляционного пакета, то можно сконфигурировать программные настройки SMS таким образом, чтобы перезагрузка осуществлялась автоматически без использования переменной RESTART.


Содержание раздела