14.01.2013 | 22:16
ja samo ne kontam kako se pojavljuje duplo. ako snimis novu verziju programa, valjda bi se automatski trebala starija verzija izbrisati.
Launch Services database (baza u koju Launch Services zapisuje sve registrirane aplikacije) je, u praksi, aditivnog karaktera - Launch Services se brine samo za dodavanje podataka u bazu, nema automatizirani mehanizam brisanja. A nema ga jer bi njegova implementacija tražila jedno od ovoga:
1) uninstaller (kao jedini legitiman način za ukloniti "instaliranu" aplikaciju) ili
2) kontinuirani rebuild vlastite baze (tako da povremeno skenira cijeli disk i provjeri jesu li sve registirane aplikacije tamo gdje su bile kad su upisane u bazu).
Ovo pod (1) bi značilo izgubiti luksuz brisanja aplikacija odvlačenjem u smeće - dodatno bi se približili konceptu Win registrya. A ovo pod (2) bi značilo nepotrebno usporiti rad (blisko iskustvo takvom usporenju je ono kad Spotlight indexira disk).
U teoriji, postoji i hibridna solucija koju bi mogao ponuditi neki 3rd party utility: nadzor brisanja (na nivou file systema) koji bi, nakon što je fajl obrisan, pozvao lsregister sa "-u" switchem (unregister) za (upravo) obrisanu aplikaciju.
No, ni to ne bi pomoglo kad se jedna verzija (update) aplikacije prepiše preko prethodne (odnosno ako se pritom ne dogodi eksplicitni remove fajla) - a to je najčešći uzrok problema: update nekog programa obično ima različiti "version" od svog prethodnika, a zbog te razlike lsregister ga obradi i doda u bazu. Tako nastaju duplikati u "Open With..." izborniku bez obzira što na disku imamo samo jednu (najvjerojatnije zadnju) verziju aplikacije.
Kompromisno rješenje (za sad) je manualno rebuildati bazu i tako se riješiti duplikata.
Nema jednostavnog rješenja ovog problema jer kada bi Apple ignorirao testiranje verzije (kao razlikovni kriterij koji trigga upis nove verzije u bazu), nastao bi problem u slučaju kada na disku želimo imati više od jedne verzije aplikacije.