Komprese souborů do exe – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Komprese souborů do exe – C / C++ – Fórum – Programujte.comKomprese souborů do exe – C / C++ – Fórum – Programujte.com

 

Míra
~ Anonymní uživatel
54 příspěvků
11. 9. 2010   #1
-
0
-

Ahoj všem , mám dotaz.
Používám vývojové prostředí CODE::BLOCKS (vžy nejnovější verzy) a chtěl bych do mého "programu" zabalit i další soubory, abych je nemusel furt "vláčet" sebou.

Příklad:
Chtěl bych vytvořit program, který extrahuje soubor hudba.mp3 do C:\
a soubor neco.exe na plochu. Jak by se dalo udělat něco takového?

Prosím o detailní vysvětlení. Děkuji

Nahlásit jako SPAM
IP: 85.207.160.–
zdenda
~ Anonymní uživatel
257 příspěvků
12. 9. 2010   #2
-
0
-

Ve Windows můžeš použít "resources". Takže vytvoříš (a přidáš do projektu) třeba soubor resource.h:

#define IDR_SOUBOR1	1001

#define IDR_SOUBOR2 1002
A soubor resource.rc:
#include "resource.h"

IDR_SOUBOR1 BINARY "soubor1.txt"
IDR_SOUBOR2 BINARY "soubor2.txt"
Pokud už tam .rc máš, tak to můžeš zapsat do něj. Ten .h není nutný, ale je jednodušší používat IDR_SOUBORx než si pamatovat, co má jaké číslo.

Tím se ti při kompilaci ty soubory vloží do resources. Funkce pro jejich uložení na disk potom může vypadat třeba takhle:
BOOL	DumpResource(WORD id, char *filename)

{
HRSRC rsrc;
HGLOBAL load;
LPVOID data;
DWORD size;
BOOL status = FALSE;

if ((rsrc = FindResource(NULL, MAKEINTRESOURCE(id), "BINARY")) != NULL &&
(load = LoadResource(NULL, rsrc)) != NULL &&
(data = LockResource(load)) != NULL &&
(size = SizeofResource(NULL, rsrc)) != 0)
{
FILE *file;
if ((file = fopen(filename, "wb")) != NULL) {
if (fwrite(data, 1, size, file) == size)
status = TRUE;
fclose(file);
}
}

return status;
}
A finální použití potom takhle:
#include "resource.h"

...
DumpResource(IDR_SOUBOR1, "file1.xx");
DumpResource(IDR_SOUBOR2, "file2.yy");

Nahlásit jako SPAM
IP: 213.211.51.–
zdenda
~ Anonymní uživatel
257 příspěvků
12. 9. 2010   #3
-
0
-

Další možnost je třeba oldschoolový bin2c, což je program, který vytvoří soubor s céčkovskou definící pole, obsahujícího data toho souboru, takže ho pak stačí includnout a normálně pracovat s tím polem.

Nahlásit jako SPAM
IP: 213.211.51.–
Míra
~ Anonymní uživatel
54 příspěvků
13. 9. 2010   #4
-
0
-

Nikde jsem v CODE::BLOCKS nenašel že by se někde dal přidat soubor do projektu. Ani moc nerozumím tvému "návodu". Mohl by jsi mi udělat screenový návod? Třeba na tvé vývojové prostředí.

Nahlásit jako SPAM
IP: 85.207.160.–
zdenda
~ Anonymní uživatel
257 příspěvků
13. 9. 2010   #5
-
0
-

Překvapivě to jde přes menu Soubor nebo Projekt :)

Nahlásit jako SPAM
IP: 213.211.51.–
Míra
~ Anonymní uživatel
54 příspěvků
13. 9. 2010   #6
-
0
-

Aha, já mám CODE::BLOCKS v10 a u té to takhle jednoduše nejde. Stáhnu CODE::BLOCKS v8 a pak to zkusím znovu. Díky za screeny

Nahlásit jako SPAM
IP: 85.207.160.–
zdenda
~ Anonymní uživatel
257 příspěvků
13. 9. 2010   #7
-
0
-

V CB 10 je to úplně stejné.

Nahlásit jako SPAM
IP: 213.211.51.–
Míra
~ Anonymní uživatel
54 příspěvků
14. 9. 2010   #8
-
0
-

Nefunguje mi to. Uspěšně se buildne, ale po spuštění to ze sebe nic neexetrahuje. Nebude to tím že mám windows 7 64bit?

Nahlásit jako SPAM
IP: 85.207.160.–
Loli
~ Anonymní uživatel
33 příspěvků
11. 10. 2010   #9
-
0
-

Zdendo prosimtě, jsem asi úplný pako, ale měl bych dotaz. Lze nějakým způsobem nastavit cestu kam se má ten soubor extrahovat? Např. C:\Program Files\

Nahlásit jako SPAM
IP: 78.80.70.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 105 hostů

Podobná vlákna

Vytvoření *.EXE souboru — založil Jarda

Spousteni exe souboru — založil machis

Spojování exe souboru — založil lexy

Ikonka u exe souboru — založil matouch

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý