4

Я хочу, чтобы что-то запускалось после следующей перезагрузки, но только один раз, а не после какой-либо другой перезагрузки. Точно так же, как при первой загрузке образа Haiku с USB-накопителя запускается установщик, и независимо от того, используете ли вы его или нет (например, просто хотите всегда запускать его с накопителя), он никогда не запускается при запуске после этого. Как я могу сделать что-то подобное, например, одноразовое напоминание для следующей загрузки?

Если я подключу только что загруженный образ и сравню в нем следующие каталоги с моим установленным загрузочным диском:

/image/home/config/boot
/image/system/boot
/image/common/boot

... файлы идентичны. Так как же Haiku узнает, был ли запущен однократный установщик? Во всяком случае, не оттуда ...

Обновление: Я нашел файл /image/common/settings/fresh_install , что не существует на моей установке, содержащий текст «Этот файл должен только существовать на свежие установки Haiku.» Однако копирование его в мою установку и перезагрузка привело только к тому, что программа обновления типа MIME снова запустилась, а не программа установки.

1 ответ1

0

Убедитесь, что /boot/common/settings/fresh_install существует, а затем создайте сценарий оболочки, заканчивающийся на .sh в /boot/common/settings/boot/post_install . Он запустится при следующем запуске, а затем fresh_install автоматически удалит себя, в результате чего сценарий оболочки не будет запускаться при последующих запусках.

Я думаю, что такой подход можно было бы использовать с самого начала, но, может быть, это лучше, потому что он "встроен"? По сути, вы можете украсть следующий код из /boot/system/boot/Bootscript чтобы выполнить то же самое с файлом, отличным от fresh_install , не- .sh и т.д., Если вы хотите настроить его:

# Check for fresh install and run post install scripts.
freshInstallIndicator=/boot/common/settings/fresh_install
postInstallDir=/boot/common/boot/post_install
if [ -e $freshInstallIndicator ]; then
    # wait a moment for things to calm down a bit
    sleep 3

    # execute scripts
    for f in $postInstallDir/*.sh; do
        if [ -f $f ]; then
            echo "Running post install script $f ..." > /dev/dprintf
            $f
        fi
    done

    sync
    rm $freshInstallIndicator
fi

... и поместите его в свой UserBootScript, например.

(Все еще не уверен, что заставляет сам установщик работать - это должен быть еще более особый случай, потому что он запускается до запуска Deskbar или Tracker.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .