KdokolivV zásadě to nemá být univerzální balíčkovač,ale spíš nutnost k instalaci našeho softu, který má strukturu balíčků. Konečně proto, že většina lidí tady okolo je zvyklá pracovat na debianu a organizace práce je k tomu tak přizpusobena. Nicméně protože se soft skládá z komponent a uživatel si může nainstalovat jen něco a případně aktualizovat jen něco, je potřeba řešit to také instalací jednotlivých komponent. Takže pokud tam bude závislost na nějakém komerčním produktu, který bude vyžadovat jeho instalák, tak se to vyřeší stejně jako třeba teď se na Ubuntu řeší instalace flashplayeru. Prostě balíček po rozbalení stáhne/spustí komerční instalaci a počká na její dokončení (a naopak po dobou odstranení vyvolá uninstall té aplikace).
To ostatní, v ten program na závislosti (víceméně už hotový) je přísnější, než třeba dpkg. Dpkg občas dělá to, že zkouší instalovat balíčky tak jak mu přijdou pod ruku, a pokud tam je nějaká závislost, tak je odkládá až nakonec, aby to zkusil znovu (nebo to možná dělá jenom debootstrap...? nevim). To co píšu já, tak je transakční, takže nejprve si celou transakci vytvoří, sestaví seznam úkolů a pak jede. Takže pokud něco na něčem prokazatelně závisí, nejprve to odinstaluje, aby se právě tyhle vazby zpřetrhaly a uvolnily se otevřené soubory. Odinstalace může požadovat od uživatele akci uzavření některý aplikací (instalák na to počká). To ovšem znamená, že při upgrade nějakého základního balíku, se zpravidla odinstaluje kompletní strom, balík se zaktualizuje, a pak se ten strom zase nainstaluje.
Nicméně i tak to držení souborů může nastat. Pak program pro kopírování, či odstraňování povoluje systému, aby v případě neúspěchu akci naplánoval na reboot (windowsy na to mají příznak u těhle příkazů) a holt pak se uživateli objeví okénko, že je nutné systém restartovat.
Jinak Advanced Installer nějak umí přepisovat soubory, které jsou otevřené (myslím DLL, EXE), akorát nevím, jak to dělá, zkusím to zjistit :-) |