如何在C ++中检查程序是否与Qt一起安装

时间:2016-03-03 08:21:51

标签: c++ qt

我想检查是否在用户的计算机上使用Qt在C ++中安装了Matlab。这可能吗?我读了一些关于QProcess的事情,但似乎没有人确定它,如果它是一个跨平台的解决方案。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我和其他软件有类似的问题,例如:

QString qstr_ext = ".ext_data";
LPCWSTR wstr_ext = (const wchar_t*)qstr_ext.utf16();

// Create and reset buffer
TCHAR buff[1024];
DWORD size = sizeof(buff);
memset(&buff, '\0', sizeof(buff));

// Read application path for extension
HRESULT err = AssocQueryString(ASSOCF_INIT_IGNOREUNKNOWN, ASSOCSTR_EXECUTABLE, wstr_ext, NULL, buff, &size);

if(S_OK == err)
{
    // Convert to wstring
    std::wstring wstring_data(&buff[0]);
    // To QString
    QString appPath = QString::fromStdWString(wstring_data);

    qDebug() << appPath;
}

正在做的是从注册表中获取'文件扩展名'(对于Matlab file extensions),然后使用安装了matlab的Windows API读取。

要在跨平台中使用它,会更复杂,因为在Windows上你可以读取注册表,例如你可以使用'find'命令行找出它在哪里(如果存在那么命令会返回位置)

类似的方法可以在Linux上完成 - 使用'find'命令。

所以QProcess是一种方法,但在* nix平台上相当慢,因为没有安装应用程序的'注册表'(AFIK没有注册表,你可以使用debian中的apt-get来查找是安装与否,但不是跨Linux解决方案)