在Qt安装程序框架(QtIFW)安装程序中安装VC++ Redistributables?

Bri*_*ill 5 installer qt qt-installer

我正在使用Qt Installer Framework(v2.0.1)为我的应用程序构建安装程序.我正在为Windows上的x86和x64构建我的应用程序,因此我正在为每个体系结构构建一个安装程序,每个体系结构中都包含不同的VC++ Redistributables(来自MSVC++ 2013的vcredist_x86.exe和vcredist_x64.exe).QtIFW文档令人沮丧地缺乏详细信息,但我发现我可以在installscript.qs中添加一个操作,以便在解压缩文件后以静默方式运行vcredist安装程序:

component.addOperation("Execute", "@TargetDir@/vcredist_x64.exe", "/quiet", "/norestart");
Run Code Online (Sandbox Code Playgroud)

但后来我遇到了确定我的安装程序是x86还是x64版本的问题.有没有办法从installscript确定这个?也许是一种查看要提取的文件列表的方法?或者是否有更简单的方法来完成安装VCRedists这个看似常见的任务?

文档只是说明了这一点:

要在最终用户的系统上安装运行时库,您需要在应用程序中包含相应的Visual C++ Redistributable Package(VCRedist)可执行文件,并确保在用户安装应用程序时执行该可执行文件.

但它没有提供有关如何"确保它被执行"的任何细节.

Fel*_*lix 3

我有类似的问题。您可以使用systeminfo.currentCpuArchitecture获取系统架构。为了查明给定的架构是否是 x64,我所做的是:

if(systemInfo.currentCpuArchitecture.search("64") < 0) {
    //x86
} else {
    //x64
}
Run Code Online (Sandbox Code Playgroud)

注意:这将返回操作系统架构,因此 x64 CPU 上的 x86 操作系统将被视为 x86。

编辑:看看:https ://github.com/Skycoder42/QtIFW-Advanced-Setup 。这是我创建的一个示例项目,它做了很多额外的事情来改进 QtIFW 的使用,例如修复安装路径或正确处理离线/在线安装程序。