Как получить что-то для запуска при следующем запуске только один раз в Хайку

343
Kev

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

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

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

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

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

4
Это для моего домашнего компьютера, я просто хочу, чтобы что-то запустилось при следующем запуске, но это единственный раз. Как это не по теме? Kev 11 лет назад 0
@ Zoredache - Haiku - это название ОС, отсюда и название в «Haiku», а также тег haiku. Cf http://www.haiku-os.org/ или щелкните по тегу хайку, а затем «Узнать больше». Kev 11 лет назад 0
Виноват. Я не был знаком с Haiku, я думал, что это приложение, которое вы хотели запустить, а не ОС. Zoredache 11 лет назад 0

1 ответ на вопрос

0
Kev

Make sure /boot/common/settings/fresh_install exists and then create a shell script ending in .sh in /boot/common/settings/boot/post_install. It will run on the next startup, and then fresh_install will auto-delete itself, causing the shell script not to run on subsequent startups.

I guess that approach could have been taken from the start, but maybe this is better because it's "built in"? Basically you can steal the following code from /boot/system/boot/Bootscript to accomplish the same thing with a different file than fresh_install, non-.sh scripts, etc. if you want to tweak it:

# 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 

...and put it in your UserBootScript, for example.

(Still not sure what makes the installer itself run--it must be an even more special case, because it launches before Deskbar or Tracker start up.)