Example #1
0
static NTSTATUS SilentUpdateCheckThreadStart(
    __in PVOID Parameter
    )
{
    if (ConnectionAvailable())
    {
        if (QueryXmlData())
        {
            ULONG majorVersion = 0;
            ULONG minorVersion = 0;

            // Get the current Process Hacker version
            PhGetPhVersionNumbers(&majorVersion, &minorVersion, NULL, NULL);

            // Compare the current version against the latest available version
            if (CompareVersions(UpdateData.MajorVersion, UpdateData.MinorVersion, majorVersion, minorVersion) > 0)
            {
                // Don't spam the user the second they open PH, delay dialog creation for 3 seconds.
                Sleep(3 * 1000);

                // Show the dialog asynchronously on a new thread.
                ShowUpdateDialog();
            }
        }

        FreeXmlData();
    }

    return STATUS_SUCCESS;
}
static PPH_STRING UpdateVersionString(
    VOID
    )
{
    ULONG majorVersion;
    ULONG minorVersion;
    ULONG revisionVersion;
    PPH_STRING currentVersion = NULL;
    PPH_STRING versionHeader = NULL;

    PhGetPhVersionNumbers(
        &majorVersion,
        &minorVersion,
        NULL,
        &revisionVersion
        );

    currentVersion = PhFormatString(
        L"%lu.%lu.%lu",
        majorVersion,
        minorVersion,
        revisionVersion
        );

    if (currentVersion)
    {
        versionHeader = PhConcatStrings2(L"ProcessHacker-Build: ", currentVersion->Buffer);
        PhDereferenceObject(currentVersion);
    }

    return versionHeader;
}
Example #3
0
static NTSTATUS CheckUpdateThreadStart(
    __in PVOID Parameter
    )
{
    HWND hwndDlg = (HWND)Parameter;

    if (ConnectionAvailable())
    {
        if (QueryXmlData())
        {
            INT result = 0;

            PhGetPhVersionNumbers(
                &UpdateData.PhMajorVersion, 
                &UpdateData.PhMinorVersion, 
                NULL, 
                &UpdateData.PhRevisionVersion
                );

            result = 1;/*CompareVersions(
                UpdateData.MajorVersion, 
                UpdateData.MinorVersion, 
                UpdateData.PhMajorVersion, 
                UpdateData.PhMinorVersion
                );*/

            if (result > 0)
            {
                PPH_STRING summaryText = PhFormatString(
                    L"Process Hacker %u.%u",
                    UpdateData.MajorVersion,
                    UpdateData.MinorVersion
                    );

                PPH_STRING releaseDateText = PhFormatString(
                    L"Released: %s",
                    UpdateData.RelDate->Buffer
                    );

                PPH_STRING releaseSizeText = PhFormatString(
                    L"Size: %s",
                    UpdateData.Size->Buffer
                    );

                SetDlgItemText(hwndDlg, IDC_MESSAGE, summaryText->Buffer);
                SetDlgItemText(hwndDlg, IDC_RELDATE, releaseDateText->Buffer);
                SetDlgItemText(hwndDlg, IDC_STATUS, releaseSizeText->Buffer);

                // Set the state for the button to know it can preform the download action.
                PhUpdaterState = Download;

                // Enable the download button.
                Button_Enable(GetDlgItem(hwndDlg, IDC_DOWNLOAD), TRUE);
                // Use the Scrollbar macro to enable the other controls.
                ScrollBar_Show(GetDlgItem(hwndDlg, IDC_PROGRESS), TRUE);
                ScrollBar_Show(GetDlgItem(hwndDlg, IDC_RELDATE), TRUE);
                ScrollBar_Show(GetDlgItem(hwndDlg, IDC_STATUS), TRUE);

                PhDereferenceObject(releaseSizeText);
                PhDereferenceObject(releaseDateText);
                PhDereferenceObject(summaryText);
            }
            else if (result == 0)
            {
                PPH_STRING summaryText = PhCreateString(
                    L"No updates available"
                    );

                PPH_STRING versionText = PhFormatString(
                    L"You're running the latest stable version: v%u.%u",
                    UpdateData.MajorVersion,
                    UpdateData.MinorVersion
                    );

                SetDlgItemText(hwndDlg, IDC_MESSAGE, summaryText->Buffer);
                SetDlgItemText(hwndDlg, IDC_RELDATE, versionText->Buffer);
  
                PhDereferenceObject(versionText);
                PhDereferenceObject(summaryText);
            }
            else if (result < 0)
            {
                PPH_STRING summaryText = PhCreateString(
                    L"No updates available"
                    );

                PPH_STRING versionText = PhFormatString(
                    L"You're running SVN build: v%u.%u (r%u)",
                    UpdateData.PhMajorVersion,
                    UpdateData.PhMinorVersion,
                    UpdateData.PhRevisionVersion
                    );

                //swprintf_s(
                // szReleaseText,
                // _countof(szReleaseText),
                // L"Released: %s",
                // xmlData.RelDate
                // );

                SetDlgItemText(hwndDlg, IDC_RELDATE, versionText->Buffer);
                SetDlgItemText(hwndDlg, IDC_MESSAGE, summaryText->Buffer);
       
                PhDereferenceObject(versionText);
                PhDereferenceObject(summaryText);
            }
        }
    }

    return STATUS_SUCCESS;
}