Hej,
Pracuję teraz nad instalatorem, którego rozmiar jest bardzo duży. Powiedzmy 1GB, a może nawet więcej...
Instalator zawiera wiele aplikacji, które razem tworzą spójne środowisko do pracy na komputerze - stąd rozmiar.
Dotychczas używałem pojedynczego pliku exe. Ma to wiele zalet. Spójność, łatwość w kompilacji i dystrybucji. ALE, jest jeden zasadniczy problem. Czasem (ostatnio coraz częściej :() programy antywirusowe i ich zwichrowana heurystyka oznaczają taki plik jako zagrożenie, takie czy inne (oczywiście, żadnego zagrożenia nie ma). Można próbować taki plik zgłosić bezpośrednio do producenta programu antywirusowego (jako false-positive) i poprosić o zdjęcie flagi, ale NIE jest to możliwe, gdy instalator ma więcej niż 500MB (taki limit ma np. Microsoft Defender - a niestety jeśli Defender oznaczy plik jako zagrożenie i go usuwa - to nasz projekt w szerszej perspektywie nie ma szans na istnienie). Nie ma opcji, żeby to przeskoczyć (być może w jakiś płatnych planach Microsoft, ale to nas nie interesuje...). Co zatem zrobić.
Dodam jeszcze, że wiele aplikacji tworzących projekt mam napisane w Delphi (Delphi rules!) oraz sam instalator napisany jest w NSIS. Heurystyka jest niezwykle wyczulona na takie połączenie (co chyba wynika z faktu, że w przeszłości wiele "złych" programów napisanych i dystrybuowanych było przy użyciu tych narzędzi).
Doszedłem do wniosku, że można spróbować:
-
Napisać instalator (pojedynczy plik exe), który zawiera główne pliki, resztę zaś pobiera z Internetu, w trakcie instalacji na komputerze użytkownika
Zaletą jest względnie mały rozmiar instalatora, spójny i łatwy w dystrybucji plik. Wadą jest konieczność aktywnego połączenia internetowego podczas instalacji, potencjalne problemy sieciowe oraz najważniejsze - konieczność posiadania serwera, który nie ma limitów transferu danych... To ostatnie to największy problem. -
Napisać instalator (pojedynczy plik archiwum zip), który zawiera w sobie plik instalatora (exe) oraz osobny katalog danych
Zaletą tego rozwiązania jest to, że mamy jeden plik w dystrybucji - plik instalatora oddzielony jest od plików danych (zewnętrznych aplikacji firm trzecich). Wadą jest to, że użytkownik po pobraniu pliku archiwum musi dodatkowo rozpakować plik i dopiero odpalić instalator (choć, teoretycznie można skorzystać z archiwum samorozpakowującego, ale z wielu przyczyn nie pasuje mi to). Plik archiwum ma duży rozmiar, ale wydaje się, że w razie problemów, AV doczepi się do exe w środku archiwum, a nie całego pliku archiwum (mam nadzieję) - więc teoretycznie, wystarczy wysłać plik exe o małym rozmiarze (po ręcznym rozpakowaniu) do producenta AV, aby oczyścić go z oznaczenia jako malware lub innego wyimaginowanego zagrożenia. -
Napisać instalator, który rozprowadzany jest w dwóch niezależnych plikach.
- Plik instalatora (exe) - stosunkowo mały rozmiar, zawiera wszystko co trzeba do działania
- Plik archiwum (zip) - bardzo duży plik z danymi (które przetwarza instalator, wypakowując odpowiednie dane).
To rozwiązanie wydaje się mieć największy sens (jeśli mówimy o naprawdę dużych instalatorach). W razie problemów, łatwo wysłać plik instalatora (exe), bo ma mały rozmiar, do producenta AV. Łatwo też zidentyfikować potencjalny problem w plik archiwum (ponieważ AV powinien wskazać, który plik mu się nie podoba - nie powinien oznaczyć całego pliku archiwum).
Największą wadą jest konieczność pobrania 2 plików. Użytkownik musi wiedzieć, że aby instalator dało się odpalić, musi pobrać też odpowiedni plik archiwum z danymi...
Tak to widzę... Macie jakieś pomysły? Może jeszcze jakoś inaczej można to rozwiązać?
Wychodzi na to, że jeśli się jest niezależnym i nie komercyjnym podmiotem, który wydaje i rozwija instalator o bardzo dużym rozmiarze trzeba się zmierzyć z wieloma problemami. A największym z nich jest producent oprogramowania antywirusowego, który widzi to co nie powinien widzieć (powiedzmy sobie wprost - heurystyka i cały system wykrywania potencjalnych zagrożeń to jedna wielka farsa). Nawet podpis cyfrowy (na który i tak mnie nie stać nic tutaj nie pomoże). Jeśli posiadasz duży instalator, a "fachowcy" z Microsoft oznaczą cię jako potencjalne zagrożenie dla świata - masz problem - bo nic nie możesz zrobić - pliku nie da się wysłać, aby udowodnić, że ich algorytmy są nic nie warte.
Ogólnie (powieje pesymizmem) czarno widzę przyszłość niezależnych twórców. Coraz trudniej publikować w Internecie swoje produkty, ponieważ duzi gracze robią wszystko, aby w imieniu bezpieczeństwa je wyeliminować...
-Pawel