2013-05-29 18 views
5

Ho una breve domanda su un argomento di cui sono piuttosto un noob. Ho un programma che ho fatto che invia un comando a un altro .exe in una cartella che ho chiamato "strumenti". Mando in questo formato:C++ Incorpora file .exe esterni nel mio exe compilato.

system("tools\\program.exe -r -w file.dat file_new.dat"); 

Tutto grandi opere, tuttavia, quando ho costruire il mio programma in un exe che richiederà l'altro eseguibile di essere in una seconda cartella, ovviamente. C'è un modo per includere l'exe esterno nel mio progetto in modo che il prodotto finale sia solo un .exe?

Sto utilizzando Visual Studio 2008 (lol) ed eseguo Windows 7 a 64 bit.

Grazie :)

risposta

4

Tipicamente, la gestione delle dipendenze esterne sarà gestita dall'installatore. NSIS è la mia soluzione preferita per la piattaforma Windows.

L'alternativa: convertire il codice binario in una codifica base64 e incorporarlo come file di intestazione nel progetto. Quando si esegue l'applicazione, convertire la rappresentazione base64 dell'exe in una sequenza binaria e quindi esportare quella sequenza di byte in un file in una directory temporanea (come C: \ windows \ temp o% AppData% \ Local \ Temp). Quindi esegui l'exe. Una volta che hai finito, rimuovi l'exe.

+0

Quindi dovrei fare un installatore? Mi sento come se ci fosse un modo per aggiungerlo come risorsa o qualcosa del genere. Voglio poter inviare a qualcuno un singolo file .exe. Inoltre, non voglio che l'utente sia in grado di ottenere una copia del file .exe esterno, ecco perché lo voglio incorporato. – mrg95

+0

No, non è necessario, ma l'alternativa è molto più complessa, NSIS produce un singolo exe che è veloce e compresso –

+0

Dovrei avere l'utente "installa" il mio programma sul loro sistema? In tal caso, al momento dell'installazione, potrebbero accedere all'exe.exe esterno. Perché è un .exe che non voglio che qualcuno mi prenda. – mrg95

1

È possibile aggiungere il file alle risorse. E prima che il comando venga eseguito, è possibile controllare, se esiste il secondo eseguibile. Se non esiste, devi estrarre i dati dalla risorsa e archiviare nel file ...

This thread riguardava la lettura di html dalla risorsa. È molto simile con il file binario.