Programy Portable, czyli wirtualizacja aplikacji

Programy Portable to specjalnie przygotowane aplikacje dostępne w postaci jednego pliku wykonywalnego (lub kilku), który zawiera wszystkie niezbędne biblioteki oraz wpisy rejestru jakie są potrzebne do prawidłowego funkcjonowania. W zależności od zastosowanych metod, kontener może również przechowywać konfigurację oprogramowania czy zapisywane projekty. Wirtualizacja aplikacji daje wiele korzyści, ale również ograniczeń. Kiedy warto je stosować oraz jak działają? Zapraszam do dalszej części artykułu.

Jak działają Programy Portable?

Zapewne wiele osób nie raz spotkało się z specjalnymi wersjami programów, które zezwalają na uruchomienie z poziomu pendrive na całkiem innym komputerze. No może nie wszyscy. Ale na pewno Ci, którzy siedzą w branży. Niektórzy programiści tworzą aplikacje przystosowane do takiego trybu działania. Zawdzięczamy to przede wszystkim zasadzie przechowywania i zapisywania danych oraz bibliotek z jakich korzystają. Jeśli producent udostępnia nam taką wersję, oznacza to, że struktura samej aplikacji pozwala na to. Nie dodaje żadnych wpisów do rejestru oraz nie integruje się znacząco z systemem. Przykładem takiego oprogramowania jest popularny CCleaner.

Kiedy producent nie udostępnia wersji Portable swojego produktu możemy sami ją przygotować. Wymaga to posiadania odpowiednich narzędzi, środowiska i przede wszystkim wiedzy na temat danego oprogramowania, które chcemy zwirtualizować. Brak takich informacji często doprowadza do nieoptymalnej lub nieprawidłowej konwersji. Musimy wiedzieć między innymi czy dane oprogramowanie korzysta z innych modułów firm trzecich lub sam jest złożonym projektem. Za przykład weźmy oprogramowanie Adobe Photoshop. Najnowsza wersja to nie tylko sam program graficzny, ale również moduł Adobe Creative Cloud służący do aktualizacji, licencjonowania i instalacji samego produktu. Posiadamy zatem dwie aplikacje, które są zależne od siebie. Z punktu widzenia użytkownika interesuje nas tylko program graficzny. Wirtualizacja z kolei zezwala na zbudowanie wielomodułowych kontenerów, ale bardzo ciężko jest uzyskać zadowalający efekt końcowy. I właśnie tutaj przydaje się wiedza na temat wirtualizowanego oprogramowania. Na podstawie tych informacji możemy wywnioskować czy w ogóle program nadaje się na Program Portable.

Narzędzia dedykowane do wirtualizacji aplikacji tworzą specjalne środowisko, w którym zawarte są wszystkie biblioteki, wpisy rejestru, pliki konfiguracyjne oraz inne zasoby niezbędne do uruchomienia. Izolację można skonfigurować w taki sposób aby również zapisywane projekty znajdowały się w tym samym katalogu lub katalogach systemowych (np. Pulpit, Dokumenty). Proces tworzenia nie jest skomplikowany. Sprowadza się do przeskanowania wstępnego systemu, zainstalowanie aplikacji i ponowne przeskanowanie. Resztę wykonuje narzędzie z którego korzystamy (razem z kompilacją i zapisem).

Czy wszystkie programy się do tego nadają?

Społeczność w Internecie udostępnia wiele aplikacji przygotowanych wcześniej samodzielnie. Dzięki temu nie musimy posiadać żadnych narzędzi i przygotowywać ich sami. Często wiąże się to jednak ze złamaniem warunków licencji czy okrojeniem funkcjonalności. Nie wszystkie aplikacje nadają się do tego typu działania. Szczególnie gdy mamy do czynienia z pakietem oprogramowania lub aplikacjami uzależnionym od wielu modułów. Narzędzia wirtualizacyjne skanują i próbują zbudować środowisko w taki sposób, aby można było odpalić moduł główny. Nie traktuje priorytetowo modułów nadrzędnym. Po za tym moduły odpowiadające za licencjonowanie czy integrację przestają działać kiedy nie mogą wykryć rzeczywistych bibliotek systemowych. W konsekwencji nasza licencja nie jest wykrywana, a zatem główny moduł również ma problemy.

Oczywiście zdarzają się osoby, które ambitnie próbują oprogramowanie przerabiać. Bardzo pomaga tutaj doświadczenie, ponieważ pozwala na ręczne zbudowanie Programu Portable. Jeśli wiemy gdzie i co zapisuje instalator, jesteśmy w stanie sami odtworzyć strukturę w odizolowanym środowisku. Wiąże się to oczywiście z złamaniem warunków licencji. Jeśli wytniemy pewne składniki, które np. przechowują licencję lub swobodnie zaczniemy przenosić oprogramowanie, program będzie użytkowany nielegalnie.

Jakie ograniczenia posiadają aplikacje Portable?

W przypadku specjalnie przygotowanego oprogramowania nie tracimy żadnych podstawowych funkcjonalności. Sytuacja wygląda nieco inaczej w przypadku ręcznie zwirtualizowanych aplikacji. Możemy utracić integrację z menu kontekstowym. W przeciwieństwie do skojarzeń plików, trudno jest to naprawić bez głębszej ingerencji w system. W programach portable musimy się nastawić na obsługę plików z poziomu jego interfejsu. Nie wywołamy wielu działań poprzez menedżer plików czy inne programy. Również zdecydowanie stracimy integrację z programami firm trzecich.

Program Portable jest również zdecydowanie większy jeśli chodzi o zajmowaną przestrzeń dyskową. Środowisko wirtualne oprócz plików samego programu przechowuje również inne biblioteki systemowe, które są potrzebne do funkcjonowania. Odtworzenie rzeczywistych warunków wymaga niestety pewnych wyrzeczeń. Na szczęście nie są to duże różnice i przy dzisiejszych dyskach ograniczenie jest mało istotne.

Jakie są korzyści z stosowania oprogramowania Portable?

Podstawowym zastosowaniem Programów Portable jest uruchamianie ich na innych stanowiskach według własnej zdefiniowanej konfiguracji. Gdy pracujemy w wielu miejscach jednocześnie i nie mamy komputera służbowego, wystarczy pendrive o pojemności minimum 4 GB. Wystarczy zainstalować lub przenieść odpowiednie pliki i w ten sposób zachowujemy swoją wirtualną przestrzeń roboczą. Programy Portable stały się tak popularne, że polityka bezpieczeństwa coraz częściej zmusza administratorów systemów do ich blokowania. Najprościej zabierając uprawnienia do uruchamiania plików wykonywalnych lub definiując odpowiednią listę zaufanych źródeł. Na takim komputerze nie uruchomimy naszych aplikacji. Stosowane praktyki mają oczywiście duże odbicie w bezpieczeństwie. Przenośne aplikacje potrafią czasami obejść pewne blokady i realizować zadania, które normalnie są niedozwolone. Zawdzięczamy to odizolowanemu środowisku i braku integracji z systemem.

Programy Portable odnajdują się również w profesjonalnych zastosowaniach. Użytkownicy, którzy korzystają z różnego oprogramowania lub oprogramowania w różnych wersjach, pracują na aplikacjach zwirtualizowanych. Powodem jest to, że Windows nie zezwala na instalację kilku wersji. Przeważnie zachowywana jest najnowsza. Oprócz zastosowań deweloperskich i użytkowych, Programy Portable mogą również stanowić metodę testowania nowych rozwiązań. Instalacja aplikacji na chwilę w systemie operacyjny spowoduje, że po kilku takich czynnościach skończy się to reinstalacją. W przypadku aplikacji Portable nie ingerujemy w rzeczywiste środowisko.

System wirtualny, a aplikacja Portable

Wirtualizacja systemów operacyjnych ma wiele zalet. Ale jej zdecydowaną wadą jest to, że z poziomu maszyny wirtualnej nie wykorzystamy maksymalnego potencjału ze sprzętu. Coraz więcej oprogramowania korzysta nie tylko z rdzeni CPU, ale i również GPU. Szczególnie gdy mamy do czynienia z grafiką, renderowaniem czy obliczeniami sztucznej inteligencji. Na przykład programy do łamania haseł coraz częściej potrafią wykorzystać potencjał kart graficznych, a modelowanie bez dostępnej akceleracji jest już niemalże niemożliwe. No właśnie, akceleracja. Na palcach jednej ręki można policzyć ile klientów wirtualizacji potrafi obsłużyć akcelerację 3D. Właśnie z tego powodu często zamiast tworzyć maszyny wirtualne do obsługi jednego programu, tworzy się jego odpowiednik portable. Spowodowane jest to tym, że Programy Portable posiadają dostęp do całego sprzętu tak jak zainstalowane aplikacje w systemie macierzystym. Brzmi fajnie, ale dlaczego wtedy nie zainstalować po prostu oprogramowania normalnie? I tutaj zależy od naszych potrzeb, które wynikają z zalet stosowania programów portable.

Podsumowanie

W tym artykule nie opisałem co prawda procesu tworzenia programu portable, ale tylko dlatego, że jest to temat na osobny artykuł. Dzisiaj chciałem Ci wyjaśnić co to tak naprawdę jest i do czego to służy. Ja na co dzień mam do czynienia z programami portable. Stosuje je w głównej mierze z powodu akceleracji 3D, która nie jest w pełni dostępna na maszynach wirtualnych. Korzystam z wielu programów w różnych wersjach. Związku z tym instalacja ich wszystkich nie byłaby możliwa na pojedynczym systemie. Zapraszam oczywiście do komentowania tego wpisu i kontaktu. Jeśli macie jakieś pytania chętnie służę pomocą.