Uruchomienie programu z zasobów

0

Witam, mam problem, mam w zasobach program, który chcę uruchomić. Banalne?

Wiem, że to jest w artykułach, ale mi chodź o trochę inne uruchomienie.

A więc, bym chciał tak uruchomić aplikację z zasobów, żebym nie musiał jej wypakowywać, zapisywać na dysk. Po prostu, żeby się uruchomiła z zasobów, powiem jeszcze, że jest to plik, który wymaga bibliotek DLL, tekstur, i trzeba mu wmówić, że jest w takim i takim katalogu. Pozdrawiam, mgx8

0

Może to Ci coś pomoże: http://www.joachim-bauch.de/tutorials/load_dll_memory.html/en/view - chociaż z tego co piszesz, to chcesz zrobić prawie wirtualną maszynę...

0

Nie oto mi chodź, chcę, po prostu władować w pamięć grę, w pamięć aplikacji mojej!, tak żeby to było niby uruchamiane z tego i tego procesu. Ale i tak dzięki :D + Tam jest w C, a ja prosiłem w Delphi

0

tam jest i w delphi...

A więc, bym chciał tak uruchomić aplikację z zasobów, żebym nie musiał jej wypakowywać, zapisywać na dysk
jaki opis, taka odpowiedź ;)

0

wypakuj go do Temp'a jakiegoś

0

Słuchaj, każdy program chodzi w oddzielnej przestrzeni adresowej, aby zrobić to, co chcesz należy zaemulować > 100 funkcji systemowych... bez sporej wiedzy o zarządzaniu procesami i modułami w systemie lepiej nie podchodzić, szczegolnie, że chesz zaemulować też caly system plików. Takie rzeczy robią najlepsze bindery.

0

Może to nie fachowy pomysł jaki podsunę, ale widziałem kiedyś taki trick:
Gość nie chciał by uruchomiony program zapisywany był na dysk i po usunięciu zostawiał jakiś ślad.
Więc zrobił programik który miał za zadanie

  1. w pamięci RAM wykreować pewien mały obszar jako wirtualny dysk zainstalowany pod pod literą Z:
    (wielkość obszaru może odpowiadać wielkości Twojego exe)
  2. przekopiować z zasobów programu głównego, program (nazwijmy go Program2.exe) i uruchomić ze ścieżki Z:\Program2.exe
  3. Zaraz po uruchomieniu tego exeka usunąć z pamięci dysk wirtualny Z: - a program będzie istniał jako uruchomiony proces.

Na takiej samej zasadzie widziałem programik z przeglądarka Opera, tyle tylko że po zakończeniu pracy przeglądarki - pakowana była z ramu do pliku i dołączana jako zmieniony zasób (z zachowaniem ulubionych i innych ostawień) do głównego execa
Tyle tylko że główny program cały czas śledził czy przeglądarka jest uruchomiona, jeśli nastąpiło zakończenie to pakował ją jak wyżej opisałem.

Wiec cały Twój problem będzie polegał na stworzeniu kodu który zainstaluje Ci w RAM wirtualny dysk, oraz będzie potrafił go usunąć.

0

Nie musisz wypakowywać zasobów na fizyczny napęd.Napęd wirtualny jest w pamięci.
Po prostu ciekawostka, że tak tez można; zawsze pozostaje do zastosowania binder:

http://4programmers.net/Delphi/Gotowce/Prosty_binder

0

http://4programmers.net/Delphi/Gotowce/Prosty_binder</quote>
Pic na wodę fotomontaż - to nie działa

0

Witam, mam podobny probelm jak autor tego postu. Tylko w przeciwienstwie do niego program który znajdije sie w zasobach nie potrzebuje dodatkowych Bibliotek zapisuje tylko informacje do rejestru badz pliku ini ale to nie problem jezeli tylko uda sie go uruchomic. Chciałbym aby program zawarty w zasobach nie był wypakowywany na dysk tylko cały czas w pamięci. - powodem tego jest to ze plik będzie zaszyfrowany i nie chcę aby kiedykolwiek był gdzies w czystej postaci zapisany na dysku fizycznym(zeby nie mozna byół go odtorzyc) . Jego wielkosc nie bedzie wieksza niz 2MB. Czytałem gdzieś o czymś takim jak ramdrive i ze jest w kazdym sytemie i ma wielkosc 32mb plan jest taki zeby wypakowac program do tego ramdrive i z niego go uruchomic. A przy zamknieciu program nadrzedny go usunie. NIestety nie moge znalezc informacji na temat tego ramdrive i zadnych funkcji ktore by tym sterowały. Może ktoś coś wie na ten temat. Albo ma jakis inny pomysł. :D

P.S. No chya ze da sie ten moduł z basica przekonvertowac bo dokladnie o to mi chodzi
http://www.purebasic.fr/english/viewtopic.php?t=22382&postdays=0&postorder=asc&start=0

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