EN  RU
Войти
Главная
Скачать
Купить
Документация
Поддержка
Контакты
 
Справочная информация  /  FAQ

Как установить фильтр при распаковке файлов

В процессе инсталляции программы может возникнуть такая ситуация, когда необходимо установить только определенные файлы в зависимости от опций, указанных пользователем. В этом случае можно воспользоваться параметром Условие в команде Установочные файлы, но что делать если условия могут быть сложные, файлов много и возникают трудности с разбивкой файлов на отдельные команды. В этом случае, инсталлятор CreateInstall позволяет установить функцию фильтр на распаковку файлов. Данная функция будет вызываться для всех устанавливаемых файлов и вы можете возвратить 1, если файл нужно установить и 0, если указанный файл необходимо пропустить. Рассмотрим подробнее создание и привязку такой функции-фильтра.

Шаг 1

Добавьте в Дополнительные параметры команды Установочные файлы переменную Xfilter. В качестве значения укажите имя ваше функции фильтра. Следует заметить, что имя должно оканчиваться на cmdproc!

Xfilter => myfiltercmdproc

Шаг 2

Добавьте команду Исходный код в начало вашего скрипта установки. Отметьте чекбокс 'Внешний код'. Также вы можете воспользоваться уже добавленной командой Исходный код, если такая уже существует в вашем скрипте. Добавим туда шаблон нашей функции.

func uint myfiltercmdproc( geafile gf  )
{
      return 1
}

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

type geafile
{
   filetime  ft              // File time
   uint      size            // File size
   uint      attrib        // File attribute
   uint      hiver         // Hi version
   uint      lowver      // Low version                 
   str       name          // the name of the file
   str       subfolder  // the name of the subfolder
}

Шаг 3

Сейчас можно определить какой-нибудь фильтр. Например, напишем пример, который будет запрещать устанавливать .jpg файл, если переменная nojpg равна 1.

func uint myfiltercmdproc( geafile gf  )
{
      if macrox_getint( "nojpg" )
     {
           str ext = gf.name.fgetext()
           ext.lower()
           if ext == "jpg" : return 0
     }
      return 1
}

При желании, можно менять имя файла name и директорию установки subfolder в переменной gf.

Смотрите также

  • Распаковать файлы
  • Установочные файлы
Eonza automation software - free, open source cross-platform program for easy creation and management of scripts.
  • Справочная информация
    • Введение
    • Первое знакомство
    • Сравнение инсталляторов
    • Лицензионное соглашение
    • Лицензия Light
    • Лицензия Free
    • Возможности программы
    • Список команд
    • FAQ
      • Глобальные переменные
      • Как использовать переменные среды
      • Как определить Control ID
      • Как подписать инсталляцию
      • Как создавать ярлыки
      • Локальные переменные
      • Переносная версия
      • Установка 64-bit приложений
      • Ложные срабатывания антивирусов
      • Фильтр распаковки
      • Запуск из командной строки
      • Как двигать контролы
      • Как использовать Условие
      • Мультисборка установок
      • Общие параметры диалогов
      • Переменные зависимые от языка
      • Переменные-параметры диалогов
      • Предопределенные директории
      • Предопределенные переменные
      • Функция-обработчик диалогов
    • Примеры
    • CreateInstall Assistant
    • Распаковщик установок
    • Решение проблем
Политика конфиденциальности
Copyright © ООО «Новострим», 2009-2026 ОГРН 1107232031390. Все права защищены.