簡體   English   中英

如何檢查程序是否在C ++中與Qt一起安裝

[英]How to check if program is installed with Qt in C++

我想檢查是否在C ++中使用Qt在用戶計算機上安裝了Matlab。 這可能嗎? 我讀了一些有關QProcess的內容,但似乎沒人能確定它是否是跨平台解決方案。 任何幫助將非常感激。

我對其他軟件有類似的問題,這里是示例:

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 文件擴展名 ),然后使用Windows API讀取安裝了matlab的位置。

要在跨平台中使用它會更加復雜,因為在Windows上您可以讀取注冊表,例如在OSX上,您可以使用“ find”命令行找出位置(如果存在,則命令將返回位置)

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

所以QProcess是一種方法,但是在* nix平台上速度很慢,因為沒有安裝應用程序的“注冊表”(AFIK沒有注冊表,您可以在debian中使用apt-get查找是否已安裝)。 ,但不是跨Linux解決方案)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM