我想让某个程序在下次重启后启动,但只启动一次,而不是在任何其他重启后启动。就像您第一次从 USB 启动 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
存在,然后创建一个以 结尾的 shell 脚本.sh
。/boot/common/settings/boot/post_install
它将在下次启动时运行,然后fresh_install
会自动删除自身,导致 shell 脚本在后续启动时不会运行。
我想这种方法从一开始就可以采用,但也许这种方法更好,因为它是“内置的”?基本上,如果您想调整它,您可以从中窃取以下代码,使用不同于、非脚本等/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 启动之前启动。)