[Quote]

    Gemostarter
  • 15956
  • Longevity: 2 years 3 months
  • Posts: 185
  • REPUTATION:27

    [+] [-]
Название: EllyMinor
Версия: 2.6.0.1
Автор: GemoStarter
Системные требования:
Версия ОС: Windows XP или новее
Архитектура: x86-32, x86-64
EllyMinor - программа установки Windows, созданная с прицелом на максимальную гибкость и универсальность, позволяющая при помощи встроенных средств и внешних скриптов на языке AutoIt3 реализовать любой мыслимый сценарий установки.
Программа сама по себе не является законченным продуктом, сразу пригодным к использованию (потому и Minor). Она создана, чтобы быть удобной основой для установочного комплекта, содержащего множество версий Windows, каждая из которых может устанавливаться своим способом.
Самый ходовой на сегодняшний день сценарий (развёртывание образа WIM, запуск BCDBoot и BootSect, перезагрузка), использующийся, например, в WinNTSetup, может быть реализован вообще без скриптов, только встроенными средствами.
Если же надо будет писать скрипты, то не придётся задумываться о таких мелочах, как выбор версии, разрядности и редакции Windows, выбор раздела для Windows, для загрузчика, определение стиля разделов диска, на который происходит установка. Всё это EllyMinor возьмёт на себя.
Кроме записанных в сценарий обязательных команд, можно использовать аддоны - наборы скриптов, выполняемых только если пользователь пожелает. Так можно добавлять в систему необязательные настройки, программы, драйверы, и многое другое.
Предыдущие версии программы (до 2.3) "из коробки" поддерживали два сценария: NT5 и NT6. Последние версии не поддерживают ни одного :). Все сценарии стали внешними. Подробное описание того, во что они теперь превратились, содержится в папке "doc" внутри приложенного архива "ellyminor_public.7z". Сама программа вместе со вспомогательными утилитами и библиотеками находится в том же архиве, в папке "bin". Там же находятся демонстрационные файлы настроек, и демонстрационные же сценарии NT5 и NT6, в целом дублирующие те, что были вшиты в ранние версии EllyMinor.
Ещё одна важная особенность программы - никакой автоматики. Она не станет сама искать образы Windows, определять их разрядность, содержащиеся в них редакции, и так далее. Всё это задаётся в файле конфигурации вручную. Так же никаких предположений касательно файла образа, предполагается, что он вполне может быть не WIM/ESD, более того - может отсутствовать по указанному пути на момент начала установки, но появиться там аккурат перед развёртыванием.
Эти особенности дают сценариям небывалую гибкость, но вместе с тем налагают на сборщика большую ответственность, чем программы со схожей функциональностью.
И кстати, именно необходимость в программе с удобным интерфейсом, но с минимумом автоматики, и стало изначальной причиной создания Elly. Аддоны появились много позднее. Сценарии ещё позже.
Не забывайте отписываться о работоспособности, глюках, багах и незапланированных фичах.

История версий:

2.6.0.1
- Устранено "исчезновение" сценарных переменных, определённых в config.xml при повторении попытки установки без закрытия окна установки
- Исправлено определение стиля разделов выбранного диска
2.6.0
- Формат конфига и сценариев изменён на XML
- Существенные изменения в работе скриптов и сценариев
- Множество новых функций в сценариях
2.3.0
- Существенно изменена концепция сценариев, всё выведено во внешние файлы
- Устранён вылет 32bit версии при распаковке с помощью WimLib
2.1.3
- Изменения взаимодействия программы со скриптами, начатые в 2.1, доведены до логического завершения
2.1
- Изменения во взаимодействии со скриптами
- Добавлен .au3 для включения в скрипты
- Мелкие исправления
2.0
- Первая публичная версия
- Переписано на другой ЯП
- Добавлена возможность изменить сценарий установки с помощью скриптов альтернативного сценария (САС)
- Формат аддонов (и САС) теперь a3x

Доисторические:

Они были. И только.
1.8
- Примечательна тем, что в ней всё сломалось
- Зато я многое понял...
1.7
- Первая стабильная версия :)
Attachments

Справка для версии 2.5.0.0 (местами обновлена до 2.6.0.1)

Attachments

Версия 2.6.0.1



Last edited by Gemostarter on 2019-07-11 13:40; edited 16 times in total

[Quote]

    Gemostarter
  • 15956
  • Longevity: 2 years 3 months
  • Posts: 185
  • REPUTATION:27

    [+] [-]
korsak7, что же, их право. И потом, взгляни на это с другой стороны. al Даже при всех недостатках такого подхода, есть одно преимущество, с которым трудно спорить. Теперь никто и никогда не будет терзаться душой от несуществования в природе чего-то подобного. Вот оно, в этой теме, и даже развивается. Посмотрит страдающий от плохой кастомизируемости стандартных установщиков чел (вроде меня) на справку из комплекта Элли, и перестанет страдать (как и я). И неважно, будет он ею пользоваться, или нет, главное - он успокоится ag

[Quote]

    Gemostarter
  • 15956
  • Longevity: 2 years 3 months
  • Posts: 185
  • REPUTATION:27

    [+] [-]
Программа обновлена.

Переход с предыдущей версии

Если вы использовали предыдущую версию без "скриптов альтернативного сценария", и хотите обновиться, но не желаете вникать в нюансы написания сценариев, поместите содержимое архива "ellyminor_demo.7z" внутрь папки build из архива "ellyminor_public.7z", предварительно сохранив в другое место свой старый "config.ini". Затем в старом конфиге измените название параметра SetupType на ScenName (во всех секциях, описывающих устанавливаемые ОС). И верните свой конфиг обратно, заменив демонстрационный.
Если же вы использовали САС, не вникать в нюансы не получится...
Аддоны для предыдущей версии заработают с этой, если понять концепцию сценариев и правильно их (сценарии) написать/отредактировать.
Так же, аддоны и САС надо будет пересобрать с новым "GeStartElly.au3", он находится в папке "build\Tools" внутри архива "ellyminor_public.7z".

[Quote]

    nik63
  • 1479
  • Longevity: 3 years 10 months
  • Posts: 223
  • REPUTATION:4

    [+] [-]
  • Location: Башкирия
Gemostarter,
Если можно видео сделать как и что? aa

[Quote]

    Gemostarter
  • 15956
  • Longevity: 2 years 3 months
  • Posts: 185
  • REPUTATION:27

    [+] [-]
nik63, едва ли. Для не понявших текстовую справку придётся снять целый фильм в трёх частях, с завязкой, кульминацией, крутыми поворотами сюжета и неожиданным финалом. И всё равно ведь не поймут ac

[Quote]

    vovan1982
  • 214
  • Longevity: 4 years 5 months
  • Posts: 1008
  • REPUTATION:56

    [+] [-]
  • Location: Ростов-на-Дону
nik63, изучите конфиг и справку, там все легко. Могу дать пример моего конфига.

[Quote]

    korsak7
  • 107
  • Longevity: 4 years 7 months
  • Posts: 613
  • REPUTATION:47

    [+] [-]
59849nik63, едва ли. Для не понявших текстовую справку придётся снять целый фильм в трёх частях, с завязкой, кульминацией, крутыми поворотами сюжета и неожиданным финалом. И всё равно ведь не поймут ac
так и скажи - мол не хочу понижать порог вхождения в круг элитных установщиков винды до уровня домохозяйки aa

[Quote]

    Ander_73
  • 15549
  • Longevity: 2 years 5 months
  • Posts: 1064
  • REPUTATION:76

    [+] [-]
korsak7,
"Создайте систему, которой сможет пользоваться дурак, и только дурак захочет ею пользоваться." — Принцип Шоу (с) Законы Мерфи.

[Quote]

    nik63
  • 1479
  • Longevity: 3 years 10 months
  • Posts: 223
  • REPUTATION:4

    [+] [-]
  • Location: Башкирия
vovan1982,
Спасибо, буду признателен. aa

[Quote]

    Gemostarter
  • 15956
  • Longevity: 2 years 3 months
  • Posts: 185
  • REPUTATION:27

    [+] [-]
59852так и скажи - мол не хочу понижать порог вхождения в круг элитных установщиков винды до уровня домохозяйки
Смысл обучать всех и каждого сборке комплектов на базе Элли? Если два-три человека это освоят и выложат результат, то будет намного лучше для самих же "домохозяек" ae

[Quote]

    Gemostarter
  • 15956
  • Longevity: 2 years 3 months
  • Posts: 185
  • REPUTATION:27

    [+] [-]
Что-то о малышке Элли я совсем забыл. На данный момент программа имеет версию 2.6, и серьёзно изменилась со времени с последней публикации (версии 2.3 в шапке темы).
Разумеется, функционал гораздо шире, чем был - в сценарии можно прописать и развёртывание wim, и копирование файлов, и запуск скриптов autoit3 (это было и в 2.3), и запись параметров в реестр, и запуск внешних программ, причём для скриптов и программ можно настроить текст сообщения, выводимого при ошибке (это уже нововведения).
Кроме того, можно настроить чекбоксы в окне установки (до 7 штук), и сделать так, что команда(-ы) сценария будет пропущена, если чекбокс не отмечен (или наоборот). Так же настраиваются проверки перед показом окна установки, вообще настраивается практически всё, кроме интерфейса.
Теперь о дёгте. Нынешний формат файла с настройками, а так же файлов сценария - XML. Он позволяет, во-первых, сделать эти файлы более структурированными, во-вторых, вписать гораздо больше параметров для каждой команды и, в-третьих, смягчить требования к синтаксису, избавиться от правила "одна строка - одна команда". Но он сложнее для чтения и понимания человеком, нежели старый формат.
Для примера, вот содержимое пары файлов из состава новой EllyMinor:

Конфиг

<?xml version="1.0" encoding="utf-8"?>
<config>
<config client="ellyminor">
    <settings>
        <project>
            <author>GeStart Live 2019</author>
            <name>GeStart Windows Install</name>
            <version>1.1.2.0</version>
            <logo>logo.bmp</logo>
            <description>EllyMinor Project, GeStart Live 2019#CRLF#Демонстрационная конфигурация EllyMinor</description>
        </project>
        <directoryes>
            <main>.</main>
            <tools>#MainDir#\Tools\#EllyArch#</tools>
            <addons>#MainDir#\Addons</addons>
            <scenarios>#MainDir#\Scenarios</scenarios>
        </directoryes>
        <tools>
            <help></help>
            <autoit>#ToolDir#\AutoIt\autoit3.exe</autoit> <aucmdl></aucmdl>
            <wimgapi>#ToolDir#\WimLib\wimgapi.dll</wimgapi>
            <wimlib>#ToolDir#\WimLib\libwim-15.dll</wimlib>
            <menu>
                <tool name="DiskPart">
                    <file>diskpart.exe</file>
                </tool>
            </menu>
        </tools>
        <select>
            <wimAgent>WimGAPI</wimAgent>
            <winVer></winVer>
            <winArch></winArch>
            <winIndex></winIndex>
            <ldrPart></ldrPart>
            <winPart></winPart>
        </select>
        <excludeDrives>
            <drive>%SystemDrive%</drive>
            <type>DRIVE_CDROM</type>
            <type>DRIVE_RAMDISK</type>
            <type>DRIVE_UNKNOWN</type>
            <type>DRIVE_NO_ROOT_DIR</type>
        </excludeDrives>
        <messages>
            <stepSuccess>OK</stepSuccess>
            <stepError>ERROR [#]</stepError>
            <complete>|Первый этап установки закончен#CRLF#|Перезагрузите ПК для продолжения</complete>
            <break>Установка прервана из-за ошибки #</break>
            <cancel>Установка прервана по желанию пользователя</cancel>
        </messages>
    </settings>
    <aliases>
        <versions>
            <version> <alias>051</alias> <name>Windows XP</name> </version>
            <version> <alias>060</alias> <name>Windows Vista</name> </version>
            <version> <alias>061</alias> <name>Windows 7</name> </version>
            <version> <alias>062</alias> <name>Windows 8</name> </version>
            <version> <alias>063</alias> <name>Windows 8.1</name> </version>
            <version> <alias>100</alias> <name>Windows 10</name> </version>
        </versions>
        <architectures>
            <architecture> <alias>X32</alias> <name>x86-32</name> </architecture>
            <architecture> <alias>X64</alias> <name>x86-64</name> </architecture>
        </architectures>
    </aliases>
    <os>
        <default>
            <scenName>NT6</scenName>
            <image>..\W#VerAlias##ArchAlias#\install.esd</image>
            <winDir>Windows</winDir>
            <usersDir>Users</usersDir>
            <partStyles>MBR;GPT</partStyles>
        </default>
        <windows version="051" architecture="X32">
            <scenName>NT5</scenName>
            <usersDir>Documents And Settings</usersDir>
            <partStyles>MBR</partStyles>
            <variables
                SrcWinDir="i386"
            />
            <editions>
                <edition> <index>1</index> <name>Home</name> <channel>Retail</channel> </edition>
                <edition> <index>2</index> <name>Professional</name> <channel>Retail</channel> </edition>
                <edition> <index>3</index> <name>Professional</name> <channel>Volume</channel> </edition>
            </editions>
        </windows>
        <windows version="061" architecture="X32">
            <partStyles>MBR</partStyles>
            <editions>
                <edition> <index>1</index> <name>Starter</name> <channel>Retail</channel> </edition>
                <edition> <index>2</index> <name>Home Basic</name> <channel>Retail</channel> </edition>
                <edition> <index>3</index> <name>Home Premium</name> <channel>Retail</channel> </edition>
                <edition> <index>4</index> <name>Professional</name> <channel>Retail</channel> </edition>
                <edition> <index>5</index> <name>Professional</name> <channel>Volume</channel> </edition>
                <edition> <index>6</index> <name>Ultimate</name> <channel>Retail</channel> </edition>
                <edition> <index>7</index> <name>Enterprase</name> <channel>Volume</channel> </edition>
            </editions>
        </windows>
        <windows version="061" architecture="X64">
            <editions>
                <edition> <index>1</index> <name>Home Basic</name> <channel>Retail</channel> </edition>
                <edition> <index>2</index> <name>Home Premium</name> <channel>Retail</channel> </edition>
                <edition> <index>3</index> <name>Professional</name> <channel>Retail</channel> </edition>
                <edition> <index>4</index> <name>Professional</name> <channel>Volume</channel> </edition>
                <edition> <index>5</index> <name>Ultimate</name> <channel>Retail</channel> </edition>
                <edition> <index>6</index> <name>Enterprase</name> <channel>Volume</channel> </edition>
            </editions>
        </windows>
    </os>
</config>
</config>

Сценарий NT6

<?xml version="1.0" encoding="utf-8"?>
<scenario>
<scenario client="ellyminor">
    <check type="script">
        <script>#CurScenDir#\Check.au3</script> <cmdline></cmdline>
        <errors>
            <error code="21">Файл образа Windows не найден#CRLF##Image#</error>
            <error code="22">Неверный номер образа (#Index#) в файле#CRLF##Image#</error>
            <error code="23">Не найдено ни одной библиотеки для работы с образами Windows</error>
            <error code="24">Библиотеки для работы с образами Windows не поддерживаются</error>
            <error code="25">RAW-диски не поддерживаются</error>
            <error code="26">Windows NT 6.x поддерживают установку только на NTFS</error>
            <error code="other">Неизвестная ошибка</error>
        </errors>
    </check>
    <check type="image">
        <image>#Image#</image> <index>#Index#</index>
        <errors> <error code="other">Образ с индексом #Index# не найден в файле#CRLF##Image#</error> </errors>
    </check>
    <checkboxes>
        <checkbox checked="true" disable="false" hide="false"> <alias>moveBoot</alias> <name>Move old loader</name> </checkbox>
        <checkbox checked="true" disable="false" hide="false"> <alias>moveWind</alias> <name>Move old Windows</name> </checkbox>
        <checkbox checked="false" disable="false" hide="false"> <alias>applyImage</alias> <name>Apply image</name> </checkbox>
        <checkbox checked="false" disable="false" hide="false"> <alias>createBoot</alias> <name>Create new loader</name> </checkbox>
        <checkbox checked="false" disable="true" hide="true"> <alias>dummy</alias> <name>dummy</name> </checkbox>
        <checkbox checked="false" disable="true" hide="true"> <alias>dummy</alias> <name>dummy</name> </checkbox>
        <checkbox checked="false" disable="false" hide="false"> <alias>reboot</alias> <name>Reboot</name> </checkbox>
    </checkboxes>
    <step type="script" command="run" description="Сбор информации" break="вычисления значений">
        <script>#CurScenDir#\GetVariables.au3</script>
        <errors> <error code="21">Ошибка сохранения данных</error> </errors>
    </step>
    <step type="addons" command="run" description="Сбор данных для аддона '#CurAddonName#'">
        <script>#AddonsDir#\#CurAddon#\input.a3x</script>
    </step>
    <step type="files" command="exmove" description="Перемещение файлов предыдущей версии загрузчика" break="перемещения файлов">
        <if CheckBox:moveBoot="True"/>
        <file> <source>#LdrPart#\BootMgr</source> <target>#LdrPart#\#LdrOldDir#\BootMgr</target> </file>
        <directory> <source>#LdrPart#\EFI</source> <target>#LdrPart#\#LdrOldDir#\EFI</target> </directory>
        <directory> <source>#LdrPart#\Boot</source> <target>#LdrPart#\#LdrOldDir#\Boot</target> </directory>
    </step>
    <step type="files" command="exmove" description="Перемещение файлов предыдущей версии Windows" break="перемещения файлов">
        <if CheckBox:moveWind="True"/>
        <file> <source>#WinPart#\hiberfil.sys</source> <target>#WinPart#\#WinOldDir#\hiberfil.sys</target> </file>
        <file> <source>#WinPart#\pagefile.sys</source> <target>#WinPart#\#WinOldDir#\pagefile.sys</target> </file>
        <directory> <source>#WinPart#\#WinDir#</source> <target>#WinPart#\#WinOldDir#\#WinDir#</target> </directory>
        <directory> <source>#WinPart#\#UsersDir#</source> <target>#WinPart#\#WinOldDir#\#UsersDir#</target> </directory>
        <directory> <source>#WinPart#\Recovery</source> <target>#WinPart#\#WinOldDir#\Recovery</target> </directory>
        <directory> <source>#WinPart#\PerfLogs</source> <target>#WinPart#\#WinOldDir#\PerfLogs</target> </directory>
        <directory> <source>#WinPart#\ProgramData</source> <target>#WinPart#\#WinOldDir#\ProgramData</target> </directory>
        <directory> <source>#WinPart#\Program Files</source> <target>#WinPart#\#WinOldDir#\Program Files</target> </directory>
        <directory> <source>#WinPart#\Program Files (x86)</source> <target>#WinPart#\#WinOldDir#\Program Files (x86)</target> </directory>
    </step>
    <step type="image" command="apply" description="Применение образа Windows" break="распаковки образа Windows">
        <if CheckBox:applyImage="True"/>
        <image>#Image#</image> <index>#Index#</index> <target>#WinPart#</target>
    </step>
    <step type="program" command="run" description="Копирование загрузочных файлов" break="копирования загрузочных файлов">
        <if LdrPartStyle="GPT" CheckBox:createBoot="True"/>
        <file>#ToolDir#\Boot\bcdboot.exe</file> <cmdline>#WinPart#\#WinDir# /s #LdrPart# /f UEFI</cmdline>
        <hide>True</hide> <wait>True</wait>
    </step>
    <step type="program" command="run" description="Копирование загрузочных файлов" break="копирования загрузочных файлов">
        <if LdrPartStyle="MBR" CheckBox:createBoot="True"/>
        <file>#ToolDir#\Boot\bcdboot.exe</file> <cmdline>#WinPart#\#WinDir# /s #LdrPart# /f BIOS</cmdline>
        <hide>True</hide> <wait>True</wait>
    </step>
    <step type="program" command="run" description="Запись загрузочного сектора" break="записи загрузочного сектора">
        <if LdrPartStyle="MBR" CheckBox:createBoot="True"/>
        <file>#ToolDir#\Boot\bootsect.exe</file> <cmdline>/NT60 #LdrPart# /force /mbr</cmdline>
        <hide>True</hide> <wait>True</wait>
    </step>
    <step type="registry" command="load" description="Загрузка реестра" break="загрузки реестра">
        <reg> <key>HKEY_LOCAL_MACHINE\Elly.System</key> <file>#WinPart#\#WinDir#\System32\Config\System</file> </reg>
        <reg> <key>HKEY_LOCAL_MACHINE\Elly.Software</key> <file>#WinPart#\#WinDir#\System32\Config\Software</file> </reg>
        <reg> <key>HKEY_LOCAL_MACHINE\Elly.Default</key> <file>#WinPart#\#WinDir#\System32\Config\Default</file> </reg>
    </step>
    <step type="files" command="exdelete" description="Удаление аддонов из системы" break="удаления аддонов">
        <directory> <source>#OScriptsDir#\Elly</source> </directory>
    </step>
    <step type="files" command="copy" description="Копирование скриптов" break="копирования скриптов">
        <directory> <source>#CurScenDir#\CmdScripts</source> <target>#OScriptsDir#</target> </directory>
    </step>
    <step type="script" command="run" description="Копирование файла ответов" break="копирования файла ответов">
        <script>#CurScenDir#\unattend.au3</script>
        <errors>
            <error code="21">Исходный файл не прочитан</error>
            <error code="22">Неизвестная архитектура</error>
            <error code="23">Целевой файл не записан</error>
        </errors>
    </step>
    <step type="addons" command="run" description="Применение аддона '#CurAddonName#'">
        <script>#AddonsDir#\#CurAddon#\offline.a3x</script>
    </step>
    <step type="files" command="copy" description="Копирование интерпретатора" break="копирования интерпретатора">
        <if CheckBox:anyAddon="True"/>
        <file> <source>#MainDir#\Tools\#ArchName#\AutoIt\autoit3.exe</source> <target>#OScriptsDir#\Elly\autoit3.exe</target> </file>
        <file> <source>#MainDir#\Tools\GeStartElly.au3</source> <target>#OScriptsDir#\Elly\GeStartElly.au3</target> </file>
        <file> <source>#CurScenDir#\RunAddons.au3</source> <target>#OScriptsDir#\Elly\run.au3</target> </file>
    </step>
    <step type="variables" command="save" description="Сохранение переменных" break="сохранения переменных">
        <if CheckBox:anyAddon="True"/>
        <global>#OScriptsDir#\Elly\GlobalData</global>
        <scenario>#OScriptsDir#\Elly\ScenarData</scenario>
        <scripts>#OScriptsDir#\Elly\ScenScripts\ScriptData</scripts>
    </step>
    <step type="addons" command="copy" description="Копирование аддона '#CurAddonName#'">
        <file> <source>#AddonsDir#\#CurAddon#\oobe.a3x</source> <target>#OScriptsDir#\Elly\#CurAddon#\oobe.a3x</target> </file>
        <file> <source>#AddonsDir#\#CurAddon#\complete.a3x</source> <target>#OScriptsDir#\Elly\#CurAddon#\complete.a3x</target> </file>
        <file> <source>#AddonsDir#\#CurAddon#\logon.a3x</source> <target>#OScriptsDir#\Elly\#CurAddon#\logon.a3x</target> </file>
        <variables>#OScriptsDir#\Elly\#CurAddon#\ScriptData</variables>
    </step>
    <step type="shutdown" command="reboot" description="Перезагрузка">
        <if CheckBox:reboot="True"/>
    </step>
</scenario>
</scenario>
Прелесть, правда? ag
И напоследок - новая версия несовместима со старыми скриптами (их писал кто-нибудь вообще?) даже при условии их пересборки с новым инклуд-файлом.
На данный момент программа готова к публикации, и в ближайшие дни будет выложена здесь. Справка по функционалу, как обычно, будет в комплекте, однако ей требуется существенная переработка - она писалась для версии 2.5, причём для собственного использования, потому не отражает всех нюансов. К тому же, al мне вообще тяжело даётся написание хелпов, и я буду рад любой помощи с этим.

[Quote]

    vovan1982
  • 214
  • Longevity: 4 years 5 months
  • Posts: 1008
  • REPUTATION:56

    [+] [-]
  • Location: Ростов-на-Дону
Gemostarter, по хэлпу готов помочь. Могу даже собрать CHM.

[Quote]

    Gemostarter
  • 15956
  • Longevity: 2 years 3 months
  • Posts: 185
  • REPUTATION:27

    [+] [-]
Программа обновлена

[Quote]

    Gemostarter
  • 15956
  • Longevity: 2 years 3 months
  • Posts: 185
  • REPUTATION:27

    [+] [-]
Обновлено, исправлены ошибки.
Файлы справки вынесены в отдельный архив.

Page 4 of 4


Display posts:    

Current time is: 17-Jul 07:19

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum