Wypakowanie pliku w c++

0

Tworzę mini instalator. I mam pytanie czy jest możliwość umieszczenia jakiegoś pliku np:bat,vbs,jpg. I wypakowanie go (do folderu w którym znajduje się program) po uruchomieniu? Używam Code Blocks.

4

Oczywiście, to przecież zadanie instalatora. Ale zamiast tworzyć własny skorzystaj z jakichś gotowych narzędzi, np. NSIS.

0

Wiem że takowy istnieje ale chciałem napisać coś własnego a nie mogę znaleźć
kodu i nie wiem jak dodać np. jakiś obraz.

6

Mam wrażenie, że porywasz się z motyką na Słońce. Zacznij od napisania kodu, który będzie rozpakowywał zipa do wybranego katalogu. W dużej mierze do tego sprowadza się działanie wszelkiej maści instalatorów.

2

Mogą mnie za to zabić, bo kod jest zlepkiem kupy, ale jako tako może ci trochę pomoc.

#include <stdio.h>

extern const char _binary_file_exe_start[];
extern const char _binary_file_exe_end[];

int main() {
	FILE *f;
	size_t file_size = _binary_file_exe_end - _binary_file_exe_start;

	f = fopen("my_exe.exe", "wb");
	
	
	fwrite(_binary_file_exe_start, 1, file_size, f);
	fclose(f);

	puts("unpacked my_exe.exe!");

	return 0;
}

Parametry do zbudowania pliku
file.exe plik który ma się znaleźć w binarce, packer.c to kod powyżej.

ld -r -b binary -o file.o file.exe
gcc packer.c file.o -o unpacker.exe
0

@Szalony Programista:
wygląda ciekawie pytanie skąd się biorą wartości dla symboli: _binary_file_exe_start i _binary_file_exe_end?

0

linker tworzy dowiązania symboliczne do resources jako typ binarny + nazwa pliku + start początek sekcji i end koniec sekcji, a potem gcc łączy sobie te zewnętrzne referencje.

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