Jak umieścić plik zip w pliku exe i wypakować go przy uruchomieniu programu?

0

Chciałem zrobić program który wypakuje mi zdjęcia z pliku zip po uruchomieniu programu.

7

No można, ale… popularne archiwizatory mają taką opcję, nazywa się to "self-extracting archive".

6

Możesz wszystkie bajty pliku *.zip skonwertować do pliku nagłówkowego.
W swoim programie z takiej tablicy wypakowujesz zipa trzymanego w pamięci: https://stackoverflow.com/questions/10781693/how-to-unzip-a-zip-file-already-loaded-in-memory-in-c

1

Ja zrobiłem to w ten sposób, że ściągnąłem sobie hexedytor, który cały program przerabia na wartości szesnastkowe. Skopiowałem całą zawartość z hexa i wkleiłem do pliku z programem pod nazwę jakiejś zmiennej - dalej już tylko użyłem klasy która konwertuje do pliku binarnego, nie mam pod ręką kodu - napisany jest w Qt

2

Użyj odpowiedniej biblioteki, na przykład pierwsze z googla:

Same dane zapisz jako bajty w jakiejś globalnej tablicy.

0

@Spine: sorki za pytanie ale nie jak tego użyć w praktyce bo jakoś bardzo nie ogarniam cpp?

1

@{༺꧁ঔৣ༒ [SEXY NAJMAN] ༒ঔৣ꧂༻}: kiedy masz dane pliku zip zapisane w tablicy, w kodzie Twojego programu, to przekazujesz je do funkcji, która wypakuje pliki z tego zipa na dysk.

Plik zip zamieniasz w tablicę jednym z wymienionych w tym wątku sposobów.

Rozpakowujesz plik zip z tablicy jedną z wymienionych w tym wątku bibliotek.

1

Format exe czyta się od góry na dół, a np. archiwum rar od dołu do góry.

I można zrobić plik schizofreniczny gdzie normalnie jak go otworzysz to będziesz miał program.exe, a jak za pomocą archiwizatora to archiwum.
Dodatkowo możesz, wyciąć tę część pliku za pomocą programu i zapisać oddzielnie na dysku, lub od razu podać cały plik jako archiwum.

Dla przykładu

cat program.exe archiwum.rar > prog_arch.exe

a jeśli zmienisz rozszerzenie na .rar to będziesz miał archiwum :>
Nagłówek na dole się znajduje, to możesz ten sam plik podawać do archiwum.

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