Вы можете добавить один исполняемый файл в конец другого и написать некоторый код, чтобы распаковать его во временную папку.
Я делал подобное раньше, но с файлом конфигурации и некоторыми растровыми изображениями, добавленными в EXE в Windows. Я сделал так, чтобы сначала добавить свои данные в конец EXE-файла, а затем написать небольшую структуру после того, что содержит смещение файла данных, которое в вашем случае будет смещением 2-го exe.
При запуске приложения ищите в конце файла минус размер структуры, извлеките смещение файла и скопируйте 2-й исполняемый файл во временную папку, а затем запустите его.
Хорошо, вот немного больше деталей по запросу. Это некоторый псевдокод для создания комбинированного EXE. Это небольшая утилита, которую вы запускаете после компиляции вашего основного EXE-файла:
Open destination file
Open main exe as a binary file
Copy main exe to destination file
offset = size of main exe
Open 2nd exe as a binary file
Copy 2nd exe to the output file
Write the offset to the output file
Теперь для процедуры извлечения. Это идет в вашем главном EXE:
Find the location of our own EXE file (GetModuleFileName() under Windows)
Open the file in binary mode
Seek to the end minus sizeof(offset) (typically 4 bytes)
Read the offset value
Seek to the offset position
Open a temporary file in binary mode
Read bytes from the main EXE and write to the temporary file
Launch the temporary file