如何创建/编译包含其他两个文件的exe?

时间:2014-08-28 19:47:59

标签: c windows visual-studio

我有两个文件,它们都是exe文件。一个用于32位,一个用于64位。我想在C中创建一个包含这两个文件的小程序(第三个exe)。当我开始我的第三个exe时,它应该做一些工作,并执行其中一个。这有可能吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

在C

中自己动手

有很多方法可以用C / C ++来描述herehere。基本上你做了以下几点:

  1. 将32位和64位可执行文件作为二进制PE资源添加到32位引导程序可执行文件中。您可以使用任何PE资源编辑器(包括Visual Studio)执行此操作,如果这是您正在使用的内容。
  2. 引导程序使用IsWow64Process API来判断它是否在64位系统上运行。
  3. 引导程序使用resource APIs
  4. 从其资源中提取正确的可执行文件
  5. 引导程序将可执行文件写入临时文件并执行它。
  6. 这几乎是我为旧项目所做的事情,并为您提供最大的控制力和灵活性。但如果你只是想要快速而又肮脏......

    让AutoIT为您完成!

    我还发现this guide编译了一个AutoIT脚本,基本上可以为你完成以上所有操作!干净,嗯?

    如果链接消失,我将在此处重现AutoIT脚本:

    ; Check if we’re on 64-bit OS…
    If EnvGet(“PROCESSOR_ARCHITEW6432″)=”” Then
        ; No we’re not – run x86 version…
        FileInstall(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x86.exe”)
        RunWait(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x86.exe”)
        FileDelete(@TempDir & “\ETrustCheck_x86.exe”)
    Else
        ; Yes we are – run x64 version..
        FileInstall(“D:\Support\ETrustCheck_x64.exe”,@TempDir & “\ETrustCheck_x64.exe”)
        RunWait(“D:\Support\ETrustCheck_x86.exe”,@TempDir & “\ETrustCheck_x64.exe”)
        FileDelete(@TempDir & “\ETrustCheck_x64.exe”)
    EndIf
    
    ; The END
    

    这个脚本可以由AutoIT脚本编辑器包装到32位启动器中,并将两个可执行文件打包到其中。