Ну, прежде всего это вопрос финансирования: терминальный доступ на серверах MS да с отдельной учеткой на сервере для каждого студента/школьника – это очень дорогое удовольствие по лицензиям. Не говоря уже про клиентские RDP лицензии, надежный выделенный сервер (желательно с RAID и дублированными БП) + хороший UPS с дистанционным управлением и мониторингом, грамотно настроенные внешние бэкапы (опять же железо + софт + настройка), быстрая качественная сетка (или лицензии на Citrix) и грамотного админа для всего этого хозяйства. И это далеко не полный список того, что надо для надежной, безопасной и бесперебойной работы такой сети с доступом в Инет.
Если бы у них на все это были деньги/ресурсы, они бы так не извращались, как сейчас.
У меня просто нет слов! Жесть! Бедная, полуграмотная училка… Её бы саму на какие-нибудь курсы для чайников отправить, прежде чем к детям и школьным компам подпускать! “Голь на выдумки хитра” – но для этого “голь” должна быть, как минимум, квалифицированной. А то, что вы описываете – это же на грани профнепригодности!
Ну, это я понимаю. Вы сами сказали. Кастомные настройки важны только для единиц. Поэтому массово их надо сносить.
По идее надо делать два разных инсталлята и всё. Или писать батник и инсталлировать тогда через него. Продвинутым. С опциями командной строки.
Я также прошу не уводить разговор в сторону, критикуя нас за то, как наши администраторы на факультете работают. Это неприятно, поверьте. Началось всё с настроек, а заканчивается критикой жизненных позиций и жизненных установок.
Массово инсталлировать со сносом настроек и без флажков. Для продвинутых пользователей с сохранением настроек - предлагать запустить батничек. Второй батничек - для тихой установки в учебных классах со сносом настроек.
Я все равно вас не понимаю – вашим студентам не нужно будет массово что-то включать в инсталляторе: если вы когда-нибудь обновите содержимое этих файлов в исходниках, то обновится дата их создания и файлы у всех студентов перепишутся автоматом даже при выключенной опции…
…У нас же при этом не будет риска затереть нестандартные настройки без всяких плясок с батниками и командной строкой.
Единственная ситуация, когда кому-то прийдется включать эту опцию – это если файлы были испорчены и он не знает, как их иначе восстановить. Ну столкнется студент-айтишник первый раз с такой ситуацией, спросит у преподавателя один раз – и весь класс сразу узнает, как это элементарно лечится. Где проблема-то?
Я не знаю, как удобнее это будет сделать средствами NSIS, но я бы предложил для простоты (чтобы не плодить тучу командных опций) при наличии параметра /s для “тихой” установки сначала искать и парсить файл, указанный явно в командной строке:
PascalABCNETSetup.exe /s my_settings.ini
Если файл явно не задан, то искать в текущей папке, откуда запускается инсталлятор, дефолтный файл настроек PascalABCNETSetup.ini или PascalABCNETMiniSetup.ini, соответственно. При отсутствии явно указанного или дефолтного файла, но наличии в команде параметра /s выдавать ошибку и прерывать установку. Кроме того, нужны консольные коды завершения установщика: с любой ошибкой (1) и без (0), как минимум.
Файл “тихих” настроек должен иметь простой формат, напр. классический .ini, где одна текстовая строка – один параметр, с разбивкой по группам, как в дереве настроек через GUI.
Граф. интерфейс при “тихой” установке желательно показывать, поскольку установка довольно долгая и нужно видеть прогресс. Или же сделать доп. консольный интерфейс с простейшим прогресс-баром (типа звездочек или процентов) и выводом сообщений об ошибках, которые можно перенаправить в файл.
Я их не боюсь, но это просто неудобно и неправильно – требовать обычную переустановку через батник только для того, чтобы не затереть по умолчанию пользовательские настройки. Так никто обычно не делает, поскольку это против правил best practices в Windows!
Батники обычно используют только в исключительных случаях, когда нужны какие-то специфические режимы, настройки окружения, доп. нестандартные проверки и т.п. Иначе это жуткий костыль какой-то.
Вы меня, наверное, неправильно поняли. Я хочу написать статью наподобие этой, только с учётом специфических возможностей Паскаля и некоторыми другими примерами.
Честно сказать, не знаю. Статья на хабре уже написана. Переписывать на Паскаль ее смысла нет.
И - есть гигантское количество других оптимизаций. В числе которых протяжка констант например.
Я и не говорю, что переписывать. В Паскале много своих особенностей. Например то, что локальные переменные работают быстрее глобальных, работа с указателями отличается от C#. Я, кстати, уже спрашивал про оптимизацию с помощью хэша процессора, но никто мне так и не ответил.
Как Вы смотрите на то, чтобы добавить какое-нибудь ключевое слово (подобное out - модификатору параметра из C#, или, насколько помню, рез из КуМир). При чтении заголовка подпрограммы можно будет сразу понимать какая переменная не будет считаться инициализированной при входе в тело подпрограммы, и инициализация которой обязательна до завершения подпрограммы.
В языке Паскаль любому формальному параметру, который не имеет описателя var, при вызове подпрограммы должно быть сопоставлено некоторое значение. Нет var - оно копируется в формальный параметр. Есть var - в формальный параметр копируется ссылка. Просто, как мычание, в чем проблема-то?