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.
Oczywiście, to przecież zadanie instalatora. Ale zamiast tworzyć własny skorzystaj z jakichś gotowych narzędzi, np. NSIS.
Wiem że takowy istnieje ale chciałem napisać coś własnego a nie mogę znaleźć
kodu i nie wiem jak dodać np. jakiś obraz.
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.
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
@Szalony Programista:
wygląda ciekawie pytanie skąd się biorą wartości dla symboli: _binary_file_exe_start
i _binary_file_exe_end
?
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.