Как я могу сделать настройку Cydia, которая изменяет файлы при установке и отменяет изменения при удалении?

Я разрабатываю твик Cydia под названием BrightnessControl (я новичок в разработке). На данный момент все, что он делает, это использует Winterboard для исправления var/stash/Applications/Brightness.plist моей модифицированной версией. Есть ли способ, возможно, с Теосом, чтобы я мог исправить этот файл без Winterboard? Я хочу каким-то образом создать резервную копию этого файла и заменить его моим измененным .plist после установки, а затем после удаления удалить мой измененный .plist и восстановить исходный .plist. Я видел что-то подобное, сделанное с другими настройками, но я не знаю, как это делается. Может ли кто-нибудь подтолкнуть меня в правильном направлении?


person Brian Kieffer    schedule 31.07.2012    source источник


Ответы (1)


Для этого даже не нужно знать программирование. Хитрость заключается в скриптах postinst и prerm пакетов Debian.

Изменить: согласно комментариям @Nate: будьте осторожны, потому что эти сценарии также запускаются при обновлении пакета. Так, например, пакет с одним обновлением, которое затем удаляется, будет делать это:

1st installation:
run preinst
(APT installs your package)
run postinst

update:
run prerm of the old version
(APT removes old version)
run postrm of old version

run preinst of new version
(APT installs new version)
run postinst of new version

removal:
run prerm of new version
(APT removes the new version... you no longer have the package)
run postrm of new version
person Community    schedule 31.07.2012
comment
Благодарю вас! целует твои ноги - person Brian Kieffer; 31.07.2012
comment
Для голосования требуется 15 респ. :( - person Brian Kieffer; 31.07.2012
comment
@BrianKieffer спасибо (на всякий случай вы получили голос за свой вопрос :) - person ; 31.07.2012
comment
+1 от имени @BrianKieffer :). Если только это не уменьшит ваши шансы на получение значка Невоспетый герой (в этом случае дайте мне знать, и я отменю голосование!). Еще одно замечание относительно сценариев rm: однажды меня укусили, потому что я не понимал, что сценарии rm (по крайней мере, postrm, я бы предположил, что и prerm) также запускаются при обновлении приложения. Cydia (через dpkg) делает что-то вроде удаления старой версии и установки новой версии. Если я правильно помню, порядок их тоже был странным, так что обязательно хорошо протестируйте, если у вас есть что-то в сценариях удаления! - person Nate; 01.08.2012
comment
@Нейт, спасибо! Нет, я думаю, что у меня все равно нет шансов на этот значок :P (я скорее хочу получить легендарный ...) В любом случае, ваш комментарий был полезен, поэтому я обновлю свой ответ. - person ; 01.08.2012
comment
Мне удалось исправить файлы при установке/удалении/переустановке/обновлении. Я проверил [ -z $2 ], чтобы увидеть, обновляется или переустанавливается ли пакет, чтобы избежать проблем с обновлением/переустановкой. Спасибо еще раз! Патчи безупречны, хотя мне потребовалось много попыток, чтобы сделать это правильно! - person Brian Kieffer; 02.08.2012
comment
@BrianKieffer нет проблем, и будьте готовы встретить все больше и больше стандартных инструментов Unix на iOS;) - person ; 02.08.2012