Dystrybucja instalatora o dużym rozmiarze, ponad 500MB

0

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ć:

  1. 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.

  2. 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.

  3. 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

1

Możesz swoją aplikację podpisać cyfrowo: https://codesigningstore.com/how-to-digitally-sign-executable-files

Pepe napisał(a):

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ć...

Ogólnie tworzenie tradycyjnego instalatora, szczególnie przez niezależnych twórców, powinno odchodzić do lamusa.
Sobie i swoim użytkownikom zrobisz dobrze publikując przez jakiś sklep, który ma klienta, który zarządza instalacją oprogramowania.
Np. Steam, Google Play, Microsoft Store...
A jeśli wciąż chcesz prowadzić samodzielną dystrybucję, to najlepiej wszystko spakuj z instrukcją tekstową i ze swoimi konfiguratorem (zamiast instalatora).

0

Fakt, żeby instalator działał online i potrzebował do działania dostępu do netu nie jest niczym wyjątkowym, w 2023 roku można dostęp do sieci uznać za coś oczywistego.

A co do hostingu - bierzesz OVH za stówkę rocznie i da radę. Raczej nie jest to program mający dziesiątki tysięcy pobrań tygodniowo, więc nie sądzę, żeby pojawił się problem ze strony dostawcy serwera.

Wielkim plusem instalatora online jest to, że puszczasz go raz w świat i nie musisz co chwilę aktualizować. Wystarczy, że wrzucisz nowsze pliki na serwer i instalator sobie zawsze pobierze najświeższe wersję.

1
cerrato napisał(a):

A co do hostingu - bierzesz OVH za stówkę rocznie i da radę. Raczej nie jest to program mający dziesiątki tysięcy pobrań tygodniowo, więc nie sądzę, żeby pojawił się problem ze strony dostawcy serwera.

Na GitHubie można za free wrzucić release, który ma nawet 2GB w jednym pliku: https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases#storage-and-bandwidth-quotas

1

https://jrsoftware.org/ ?
używaliśmy w firmie gdzie pisaliśmy w Delphi

0

Rozwiązanie 1 jest moim zdaniem najlepsze bo instalatory online to dziś standard. Zobacz sobie np instalatory Microsoftu, jak Visual Studio, .net też był tak samo rozprowadzany od wielu lat. Więc nikogo to nie zdziwi.

0

W ogóle aż się prosi, aby te pakiety/wtyczki do UFM był dociągane na żądanie; a więc instalator umożliwia mi zaznaczenie co chcę mieć zainstalowane i tylko to jest dociągane i instalowane.
Wtedy możesz mieć jeden instalator do wersji lite, full lub jakiekolwiek innej.

1

Odpowiedź na komentarz... (żeby wkleić screenshota).

@Spine:

To zobacz jeszcze to: https://www.indiedb.com/ - kilka lat temu można było wrzucać pliki ważące 8GB. Nie wiem, czy nic się nie zmieniło...

@Pepe:

Dzięki. Ale tamten serwis wspiera autorów gier niezależnych. Nie ta bajka.

Nawet Steam, chociaż niby jest tylko do gier, umożliwia publikacje software'u innego typu niż gry...
Nie rezygnuj w przedbiegach. Tam jest pełno kategorii, pod którymi mógłbyś umieścić swoje pliki...

screenshot-20230317102415.png

A przestrzeń dyskowa wciąż hojnie rozdawana :]

screenshot-20230317102254.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1