2013-05-29 21 views
5

Mam krótkie pytanie na temat, o którym mówię całkiem nieźle. Mam przygotowany program, który wysyła polecenie do innego .exe w folderze, który nazwałem "narzędziami". I wysłać go w tym formacie:C++ Osadź zewnętrzny plik .exe w moim skompilowanym pliku .exe

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

Wszystko działa świetnie, jednak, gdy buduję mój program do .exe będzie wymagało drugi wykonywalny będzie w drugim folderze, oczywiście. Czy istnieje sposób na włączenie zewnętrznego pliku .exe do mojego projektu, aby ostateczny produkt był tylko jednym .exe?

Używam Visual Studio 2008 (lol) i uruchamiam Windows 7 64bit.

Dzięki :)

Odpowiedz

4

Zazwyczaj zarządzanie zależnościami zewnętrznych byłyby obsługiwane przez instalatora. NSIS jest moim ulubionym rozwiązaniem dla platformy Windows.

Alternatywa: Konwertuj kod binarny na kodowanie base64 i umieść go jako plik nagłówkowy w projekcie. Po uruchomieniu aplikacji należy przekonwertować reprezentację base64 reprezentacji exe na sekwencję binarną, a następnie wypisać tę sekwencję bajtów do pliku w katalogu tymczasowym (np. C: \ windows \ temp lub% AppData% \ Local \ Temp). Następnie uruchom exe. Gdy skończysz, usuń exe.

+0

Czy muszę zrobić instalator? Czuję, że jest jakiś sposób na dodanie go jako zasobu lub czegoś. Chcę móc wysłać komuś pojedynczy plik .exe. Nie chcę również, aby użytkownik mógł uzyskać kopię zewnętrznego pliku .exe, dlatego chcę go osadzić. – mrg95

+0

Nie, nie trzeba, ale alternatywa jest o wiele bardziej złożona, NSIS produkuje pojedynczy exe, który jest szybki i skompresowany. –

+0

Czy musiałbym mieć użytkownika, który "zainstalował" mój program w swoim systemie? Jeśli tak, to po zainstalowaniu może uzyskać dostęp do zewnętrznego pliku .exe. Ponieważ jest to .exe, nie chcę, aby ktokolwiek dostawał ode mnie. – mrg95

1

Możesz dodać plik do zasobów. A zanim polecenie zostanie wykonane, możesz sprawdzić, czy istnieje drugi plik wykonywalny. Jeśli nie istnieje, musisz wyodrębnić dane z zasobu i zapisać do pliku ...

This thread zajmował się odczytywaniem html z zasobu. Jest bardzo podobny do pliku binarnego.