Różnica między autonomicznym plikiem wykonywalnym a zainstalowanym plikiem wykonywalnym?


17

Zauważyłem przynajmniej w systemie Windows, że możesz pobrać bezpośredni, statycznie połączony plik wykonywalny i uruchomić go bezpośrednio, lub napisać własny program i wykonać go (nawet dynamicznie) bez konieczności jego instalowania.

To prowadzi mnie do mojego głównego punktu ... jaki jest cel procesu instalacji? Mam na myśli poza tym może rejestr systemu Windows . Jednak ze względów praktycznych i związanych z użytkowaniem możliwe jest posiadanie pojedynczego, niezależnego, samodzielnego programu, który może być uruchamiany, przechowywany w nieulotnej pamięci i dostępny za pośrednictwem systemu plików dowolnego urządzenia, na którym jest zainstalowany, i wykonywany w systemie operacyjnym. Więc o co chodzi z całym tym „instalowaniem” tego biznesu, skoro wiele świetnych programów o praktycznie dowolnej wielkości może działać idealnie bez przechodzenia przez konfigurację instalacji? Zastanawia mnie to trochę, a poza bazą danych lub innymi systemami konfiguracji metadanych / dostępu, jaka jest prawdziwa różnica tutaj, jeśli ten ostatni (zainstalowany plik wykonywalny) działa i działa tak samo jak samodzielny?

Czy jest jakaś różnica, której nie znam w przypadku niezainstalowanego programu w porównaniu z zainstalowanym?

PS: Nie musi to dotyczyć tylko systemów operacyjnych Windows, ale także tych, które implementują podobną funkcję.

Odpowiedzi:


16

Istnieje kilka powodów, dla których programy są instalatorami, a nie samodzielnymi plikami wykonywalnymi:

Obawy dotyczące rozmiaru pliku

  • Programy z wieloma dużymi zależnościami mogą łączyć instalatory internetowe, które pobierają te zależności i umieszczają je we wspólnej lokalizacji, aby mogły być współużytkowane przez wiele programów. Na przykład DirectX jest bardzo dużą biblioteką. Jeśli każdy program w twoim systemie, który zależy od DirectX, po prostu dołącza do niego cały środowisko wykonawcze DirectX, zajmie to sporo miejsca. Wydaje się, że nie ma to znaczenia w wieku 4 TB, ale należy pamiętać, że dyski SSD mają znacznie mniejszą pojemność i są powszechnie używane na ultrabookach, niektóre z zaledwie 64 GB przestrzeni dyskowej. I oczywiście jest wiele innych bibliotek współdzielonych oprócz DirectX.

  • Programy, które są zarówno bardzo duże, jak i stale aktualizowane, najlepiej dystrybuować jako zbiór wielu małych plików, wraz z programem uruchamiającym lub aktualizującym, który sprawdza aktualizację w Internecie, a jeśli istnieje jakakolwiek aktualizacja, pobierz tylko wymagane zmiany. Jeśli wszystkie duże programy zostały dostarczone jako pojedynczy monolityczny plik wykonywalny, jest bardzo prawdopodobne, że proces łatania wymagałby ponownego pobrania całego pliku wykonywalnego, ponieważ łatanie działającego pliku wykonywalnego na dysku jest prawie niemożliwe z powodu blokowania plików. Ponadto, ponieważ program aktualizujący musi wiedzieć, gdzie są jego pliki, często przechowuje tę ścieżkę katalogu w dobrze znanej lokalizacji w rejestrze.

Obawy dotyczące wygody użytkowników

  • Instalatory bardzo dużych programów, takich jak Visual Studio i Microsoft Office, pozwalają użytkownikowi odznaczyć instalację niektórych funkcji, jeśli użytkownik wie, że nigdy ich nie będą potrzebować. Ma to 3 potencjalne zalety: zmniejsza zużycie miejsca na dysku; może skrócić czas pobierania i zużycie pasma, jeśli instalator jest narzędziem pobierania z Internetu; i może zmniejszyć „bałagan” i „wzdęcia” na komputerze użytkownika, mniej skrótów menu startowego / pulpitu, mniej programów startowych itp.

  • Instalatory skomplikowanych programów często zawierają opcje konfiguracji, które użytkownik może skonfigurować za pomocą przyjaznego interfejsu graficznego jako części instalatora. Zobacz na przykład instalatory MySQL lub SQL Server, które przeprowadzą Cię przez cały proces uruchamiania serwera bazy danych, zanim jeszcze klikniesz „Zakończ” na instalatorze.

  • Instalatorzy mogą poprosić użytkownika o podanie wymaganych informacji, takich jak klucze licencyjne, które należy wprowadzić tylko raz. Może to uprościć konstrukcję samego programu i zmniejszyć liczbę czynności, które musi wykonać, i sprawdzić, kiedy się uruchomi. Powoduje to również, że użytkownik ma pewność, że po pomyślnym zainstalowaniu programu powinien on po prostu „działać” - w programie nie ma już „gotchas”, które mogłyby go powstrzymać przed korzystaniem z niego.

Obawy dotyczące zgodności

  • Niektóre programy powodują konflikty z innymi programami. Jest to prosty i niefortunny fakt inżynierii oprogramowania. Przed instalacją programu, w przypadku którego wystąpiły konflikty z innymi programami, często pomocne jest najpierw sprawdzenie systemu, aby sprawdzić, czy zainstalowany jest niezgodny program. W takim przypadku użytkownik może zostać powiadomiony. Na przykład, istnieje bardzo niebezpieczny potencjał niekompatybilności w starszych wersjach VMware i VirtualBox, co spowodowało niebieski ekran śmierci, ponieważ jeden program próbowałby użyć specjalnej instrukcji procesora wirtualizacji po tym, jak został już zarezerwowany dla użytkownika przez inny produkt . Jeśli po prostu dostarczysz produkt końcowy użytkownikowi bez instalatora, będziesz musiał sprawdzić obecność niekompatybilnych produktów na każdym uruchomienie programu, co może spowolnić uruchomienie programu.

  • Programy mogą zależeć od innych składników systemu, które można zainstalować tylko na poziomie całego systemu, a nie na poziomie użytkownika. Aby zainstalować te specjalne komponenty systemowe, zwykle wymagane są uprawnienia administracyjne i zwykle należy uruchomić instalator.

Podwyższone uprawnienia i usługi specjalne

  • Niektóre programy zależą od zmian w systemie operacyjnym pod względem ich funkcjonalności i zmian tych nie można łatwo wdrożyć bez instalatora, który zajmie się nimi z uprawnieniami administracyjnymi. Na przykład programy, które instalują sterowniki lub moduły jądra, takie jak Wireshark, nie mogą po prostubyć uruchomionym, ponieważ absolutnie musisz wysłać komponenty trybu jądra w osobnych plikach. W absolutnie najlepszym przypadku użytkownik musiałby ręcznie rozpakować archiwum, a następnie uruchomić jakiś instalator sterownika urządzenia. Usługi to kolejny przykład czegoś, co wymaga uprawnień administratora do zainstalowania. Oprogramowanie instalacyjne jest szczególnie dobre w uzyskiwaniu uprawnień administratora w elegancki sposób, bez wymagania, aby sam program główny żądał uprawnień administratora za każdym razem, gdy jest uruchamiany (w wielu przypadkach byłoby to niepotrzebne narażenie bezpieczeństwa).

Po przedstawieniu wszystkich powodów, dla których instalatorzy są przydatni, oto kilka uwag z drugiej strony:

  • Wiele programów, nawet tych, które są dostępne tylko do pobrania jako instalator wymagający uprawnień administratora, można wymusić „wypakowaniem” ich instalatorów i uruchomić bezpośrednio bez ich instalowania. Inne programy, zwłaszcza te typu open source, są ponownie pakowane w samodzielne pliki wykonywalne przez PortableApps . Warto zauważyć, że niektóre programy po rozpakowaniu z instalatora będą miały zmniejszoną funkcjonalność, wykazywać błędy lub inne problemy.

  • W systemach operacyjnych innych niż Windows prawie zawsze można po prostu pobrać (lub skompilować) programy i uruchomić je jako zwykły użytkownik, bez uzyskiwania uprawnień użytkownika root. Istnieje kilka wyjątków w odniesieniu do pakietów, które są podstawową częścią systemu operacyjnego, ale w przypadku większości aplikacji użytkownika można go uruchomić w katalogu domowym bez instalowania go w całym systemie za pomocą menedżera pakietów. Windows jest trochę szczególnym przypadkiem, ponieważ większość programów komputerowych w systemie Windows ma instalator i zwykle nie można go zainstalować w żaden inny sposób.

  • Nawet na platformach innych niż Windows programy, które potrzebują możliwości załadowania modułu jądra są dostarczane z jakimś instalatorem, który kompiluje moduł jądra i instaluje go we właściwym katalogu. Możesz również spodziewać się instalatora w przypadku, gdy program jest demonem, który zostanie uruchomiony za pomocą skryptu usługi systemowej, np /etc/init.d. Ten typ „binarnie zwijanego skurczu” jest rzadziej stosowaną metodą dystrybucji w GNU / Linux, ale większość dystrybucji Linuksa nadal zapewnia większość oprogramowania w postaci pakietów instalacyjnych, z których każda wymaga dostępu do konta root (dostępu administratora).


Wnioski

Zapytałeś, dlaczego potrzebujemy instalatorów. Krótka odpowiedź jest taka , że nie - i tak nie mówiąc ściśle. Istnieje bardzo niewiele przykładów aplikacji, które w zasadzie nie mogą być spakowane w jeden samodzielny plik wykonywalny bez zasobów, bez instalatora itp. Nawet coś tak skomplikowanego jak VMware Workstation może automatycznie uzyskać uprawnienia administratora, wypisz moduł jądra hiperwizora do pliku na dysku i instaluj go dynamicznie podczas uruchamiania programu i wysyłaj wszystkie jego zasoby (obrazy, dźwięki itp.) zawarte w sekcji danych pliku wykonywalnego.

Korzystanie z instalatora lub nie jest wyborem, którego muszą dokonać producenci oprogramowania. Korzystanie z instalatora ma zalety i wady. Wielu dostawców decyduje się dystrybuować swoje oprogramowanie zarówno jako instalator, jak i jako samodzielny plik binarny lub przynajmniej jako plik ZIP, który można po prostu rozpakować i uruchomić. W przypadku oprogramowania, które absolutnie nie wymaga instalatora, jest to bardzo pragmatyczna droga i sprawia, że ​​wszyscy są szczęśliwi. Zazwyczaj oprogramowanie, które nie jest dostarczane w innej formie niż instalator, to oprogramowanie, które wymaga uprawnień administracyjnych do zainstalowania niektórych jego elementów, ponieważ instalator jest najbardziej eleganckim sposobem na uzyskanie wymaganych uprawnień.

Osobiście uważam, że instalatory są bardzo denerwujące w mojej codziennej pracy, ponieważ czasami chcę uruchomić program, gdy nie mam uprawnień administracyjnych na komputerze, którego używam. Mam spore doświadczenie w ręcznym rozpakowywaniu instalatorów w celu wyodrębnienia zawartych w nich plików programów, a następnie prawidłowego działania tych plików. Jednak na moim osobistym komputerze w domu, gdzie zawsze mam dostęp administracyjny, uważam, że instalatory są korzystne i wygodne, ponieważ większość instalatorów daje mi przydatne opcje, takie jak to, czy utworzyć skrót na pulpicie, co musiałbym zamiast tego zrobić ręcznie.


Świetna odpowiedź, ale twoje otwarcie za pomocą DirectX i środowiska wykonawczego nie ma sensu. Po pierwsze, jedynym środowiskiem uruchomieniowym DirectX jest język, w którym jest napisany sam w sobie, czyli C.

@TomTurkey Um ... co? Dlaczego ma to znaczenie w jakim języku jest napisany? Jasne, mógł statycznie odwołuje żadnych komponentów DirectX że trzeba prosto do swojego pliku wykonywalnego, ale jak powiedziałem, że stanowi problem rozmiar pliku, jeśli wiele programów zaczną robić to z dużych bibliotek (Qt 4.x, na przykład, działa około 40 MB ). Kod musi być gdzieś i nie możesz po prostu założyć, że potrzebna wersja DirectX jest już zainstalowana w systemie, inaczej pojawi się błąd, gdy ktoś otworzy Twój program w systemie Windows XP SP2, który nie został załatany wieczność.
allquixotic

4
Och, myślę, że mnie źle zrozumiałeś - w mojej odpowiedzi nie mówiłem o instalacji samego DirectX ; Mówiłem o instalacji programu, który zależy od DirectX. Aby zaspokoić tę zależność, możesz albo skompilować DirectX bezpośrednio w swojej aplikacji, zwiększając w ten sposób zużycie zmarnowanego miejsca na dysku, lub możesz zainstalować w instalatorze małą aplikację, która sprawdza, czy masz zainstalowane odpowiednie środowiska wykonawcze DirectX, a jeśli nie, pobiera je i umieszcza je w scentralizowanej lokalizacji systemu. Ten ostatni jest znacznie bardziej wydajny pod względem miejsca na dysku i wielkości pobierania.
allquixotic

3
@allquixotic Również licencjonowanie. Czasami biblioteka może nie posiadać licencji na redystrybucję niezależnie od swojego instalatora. DirectX może należeć do tej kategorii, nie jestem pewien. Myślę, że framework .NET ma. Nie jest to ograniczenie techniczne, ale prawne. (Framework .NET ma jednak dodatkowe ograniczenia techniczne. Jest dość ściśle zintegrowany z systemem operacyjnym).
Bob

1
boop . Dźwięk pozytywnego komentarza. W mojej głowie.
allquixotic

3

Proces instalacji uwzględnia następujące elementy:

  1. czy masz zainstalowaną bibliotekę (api), taką jak .NET Framework, czy bezpośredni X.

  2. Zainstaluj dodatkowe systemowe pliki DLL w folderze systemowym. Jeśli folder systemowy zawiera już te pliki (ta sama wersja), zignoruj ​​ten krok. W ten sposób nie potrzebujesz kilku kopii tych samych plików DLL.

  3. Zainstaluj skróty w menu Start lub na pulpicie, aby szybko uruchomić aplikację.

  4. Jak powiedziałeś, modyfikacja rejestru. Ten krok można faktycznie wykonać przy pierwszym uruchomieniu aplikacji na tym komputerze, więc nie jest to szczególnie ważne.

  5. bardzo ważne: czy dołączyć oprogramowanie (takie jak pasek pulpitu Google lub pasek Yahoo! do swojego IE). W ten sposób wiele niezależnych programów generuje dochód dla programisty. Nie zapominaj o tym, jeśli korzystasz z bezpłatnego oprogramowania.

Ponieważ zastanawiamy się nad aplikacją „wykonywalną”, nie musimy omawiać tych kroków, które mogą zainstalować dodatek IE lub podobne rzeczy.


3

Autonomiczny program nie ma zewnętrznych zależności.

Nie musi to być tylko plik .exe, może mieć towarzyszące biblioteki i pliki danych: Rozpakuj archiwum do folderu i uruchom plik wykonywalny. Jeśli po prostu rozpakujesz archiwum, do menu Start nie zostanie dodany żaden skrót, dlatego będziesz musiał przejść do folderu, w którym znajduje się rozpakowana aplikacja, i uruchomić ją stamtąd lub ręcznie utworzyć skrót do niego w menu Start. Wielu użytkownikom komputerów ma trudności.

Łatwiejszy w użyciu

Instalator prowadzi użytkowników przez proces instalacji. Pobierasz instalator, .exe lub .msi (ten pierwszy jest preferowany dla użytkowników nie zaawansowanych) i uruchamiasz go. Odbiera folder instalacyjny, zwykle w Program Files, kopiuje pliki, tworzy skrót w menu Start. Gotowe: w większości przypadków wystarczy kilka razy kliknąć Dalej.

Następnie przejdź do menu Start i uruchom aplikację. Niektórzy instalatorzy zapewniają opcję uruchomienia aplikacji po zakończeniu instalacji.

Jeśli aplikacja otworzy pliki lub dokumenty określonego typu, instalator zarejestruje je w powłoce. Abyś mógł kliknąć plik, aby go otworzyć.

Umowa licencyjna

Wiele aplikacji, zarówno komercyjnych, jak i bezpłatnych, wymaga zaakceptowania umowy licencyjnej przed użyciem ich aplikacji. Instalacja nie będzie kontynuowana, dopóki nie potwierdzisz, że zgadzasz się z warunkami licencji. Nawet jeśli nie przeczytałeś licencji, zgodziłeś się na nią.

Zależności

Czasami nie wystarczy po prostu skopiować pliki wykonywalne. Aplikacje często korzystają ze współużytkowanych komponentów lub specjalnych bibliotek wykonawczych. Na przykład środowisko uruchomieniowe .Net musi zostać zainstalowane, aby uruchomić aplikację napisaną dla .Net; nawet środowisko wykonawcze Visual C ++, jeśli nie jest statycznie powiązane, musi zostać zainstalowane. Instalator dba o to, aby wszystkie zależności były spełnione.

Jeśli aplikacja składa się z kilku plików .exe i / lub .dll, dynamiczne łącze do środowiska wykonawczego Visual C ++ zmniejsza przestrzeń dyskową. Jeśli pliki .exe i .dll są połączone statycznie, środowisko wykonawcze jest duplikowane w każdym pliku.

Postanowienia licencyjne dotyczące biblioteki mogą nie zezwalać na statyczne łączenie.

Bezpieczeństwo

Jeśli w środowisku wykonawczym zostanie wykryta podatność, można ją zaktualizować niezależnie od aplikacji. Aktualizacje środowiska wykonawczego .Net i Visual C ++ są instalowane automatycznie za pośrednictwem usługi Windows Update.

Jeśli pliki wykonywalne i biblioteki są połączone statycznie, wówczas dostawca aplikacji musi ponownie skompilować aplikację i wydać zaktualizowaną wersję. Tak więc korzystanie ze współdzielonego środowiska wykonawczego zmniejsza koszty utrzymania aplikacji dla programistów i dostawców.

Instalacja Program Fileszapewnia również bezpieczniejsze środowisko: plików tam nie można modyfikować ani usuwać bez uprawnień administratora.

Rejestr

Wiele aplikacji Windows opiera się na wpisach w rejestrze. Jeśli aplikacja korzysta z COM, wszystkie obiekty muszą zostać zarejestrowane, w przeciwnym razie aplikacja nie utworzy potrzebnego obiektu i nie uruchomi się.


1
+1 za aktualizacje zabezpieczeń współdzielonych komponentów - nie pomyślałem o tym w odpowiedzi.
allquixotic

0

Krótka odpowiedź: samodzielny plik exe nie wymaga instalowania bibliotek na komputerze i nie wymaga wpisów rejestru ani innych składników.

Zainstalowany plik może być samodzielny w pakiecie instalatora, ale ogólnie zależy od różnych komponentów i bibliotek zainstalowanych obok niego.

W wielu przypadkach za pomocą Universal Extractor (nieoficjalna aktualizacja: tutaj ) można wyodrębnić zawartość instalatora i uruchomić program bez uprawnień administracyjnych w systemie Windows. Instalatory MSI można rozpakować za pomocą lessmsi .

W większości innych systemów operacyjnych wszystkie programy można uruchamiać bez uprawnień administratora / root, poprzez specyficzne dla użytkownika „bin”, „lib” i inne katalogi w katalogu domowym. Osobiście nienawidzę instalatorów przez większość czasu, ponieważ utrudniają mi korzystanie z programów bez uprawnień administracyjnych, gdy ich nie mam. Ale są one pakowane w ten sposób przez duże firmy, aby uprościć proces dla przeciętnego użytkownika końcowego.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.