Вы правы в том, что обновление приложения запускает сценарии «удаления» (а также сценарии установки для следующей версии).
Однако система пакетов также передаст скриптам параметры командной строки, и вы можете использовать их, чтобы определить, в каком сценарии вы находитесь: обновление или удаление.
Если вы просто хотите перепроектировать, какие параметры были переданы скрипту, поместите это в скрипт (например, postrm
):
echo "postrm called with args= " $1 $2
Когда я устанавливаю обновление и удаляю пакет, я вижу это:
iPhone5:~ root# dpkg -i /Applications/HelloJB.deb
(Reading database ... 3530 files and directories currently installed.)
Preparing to replace com.mycompany.hellojb 1.0-73 (using /Applications/HelloJB.deb) ...
prerm called with args= upgrade 1.0-73
Unpacking replacement com.mycompany.hellojb ...
Setting up com.mycompany.hellojb (1.0-74) ...
postinst called with args= configure 1.0-73
iPhone5:~ root# dpkg -r com.mycompany.hellojb
(Reading database ... 3530 files and directories currently installed.)
Removing com.mycompany.hellojb ...
prerm called with args= remove
postrm called with args= remove
Итак, если вы хотите rm
только файл во время удаления, поместите это в скрипт postrm
:
#!/bin/bash
echo "postrm" $1
if [ $1 = "remove" ]; then
echo "deleting user data on uninstall"
/bin/rm /var/mobile/Library/Application Support/TweakName/file.save
fi
exit 0
Примечание: вы не указали, устанавливаются ли они Cydia или dpkg
непосредственно в командной строке. Я не могу протестировать с Cydia прямо сейчас, но общая концепция должна быть такой же. Как вы, наверное, заметили, при установке пакетов через Cydia отображается стандартный вывод сценариев установки по мере их запуска.
person
Nate
schedule
27.04.2013