Как получить что-то для запуска при следующем запуске только один раз в Хайку
Я хочу, чтобы что-то запускалось после следующей перезагрузки, но только один раз, а не после любой другой перезагрузки. Точно так же, как при первой загрузке образа Haiku с USB-накопителя запускается установщик, и независимо от того, используете ли вы его или нет (например, просто хотите всегда запускать его с накопителя), он никогда не запускается при запуске после этого. Как я могу сделать что-то подобное, например, одноразовое напоминание для следующей загрузки?
Если я подключу только что загруженный образ и сравню в нем следующие каталоги с моим установленным загрузочным диском:
/image/home/config/boot
/image/system/boot
/image/common/boot
... файлы идентичны. Так как же Haiku узнает, был ли запущен однократный установщик? Во всяком случае, не оттуда...
Обновление: я нашел файл /image/common/settings/fresh_install
который не существовал в моей установке и содержал текст "Этот файл должен существовать только в новых установках Haiku". Однако копирование его в мою установку и перезагрузка привело только к тому, что программа обновления типа MIME снова запустилась, а не установщик.
1 ответ
Удостовериться /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.)