Это радикально решается только переводом на систему с терминальным доступом, хотя бы уровня Microsoft RDS. И все эти проблему уйдут.
На моей последней работе пользователи - взрослые ответственные люди - и то временами что-то у себя сносили или портили. Перевели под citrix - как рукой сняло. Правда там масштабы другие, терминальные сервера в Москве стоят и обслуживают десятки тысяч (!) рабочих мест, но ведь это лишь вопрос масштаба, а не принципа.
Ага, теперь мне понятно, почему у вас ничего никогда в реестр не пишется, а все хранится в текстовых файлах в Program Files Я все, конечно, понимаю – ставки админа на кафедре, очевидно, у вас нет. Но открыть всем ветрам Program Files (x86) – это же… нарушает базовый принцип администрирования Windows! Надеюсь, хотя бы второй Program Files (который не x86) у вас недоступен всем и каждому.
Да нет, то самое! В том-то и дело, что нельзя найти общее удобное решение, если одни правила соблюдают (большинство), а другие их намеренно нарушают (единицы).
Эти кастомные настройки важны только для продвинутых пользователей – в первую очередь для членов данного коммьюнити, которые тестируют каждый новый билд, иногда по несколько штук в день. И если сделать как предлагаете вы, то при малейшей оплошности (НЕ отключения нужной опции) – все их усилия по индивид. настройке могут пойти прахом, ну, или прийдется по-прежнему поддерживать актуальные бэкапы, как правило, вручную – не комильфо! В чем тогда вообще весь смысл этой затеи для нас?
А студенты ваши, раз вы им позволяете все самим инсталлировать, в случае проблем всегда смогут спросить у преподавателя – он подскажет, что попробуйте теперь переинсталлировать с такой-то галкой – таким образом “тайное знание” быстро станет общеизвестным. Это же и есть учебный процесс!
Ну, прежде всего это вопрос финансирования: терминальный доступ на серверах 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#. Я, кстати, уже спрашивал про оптимизацию с помощью хэша процессора, но никто мне так и не ответил.