From a7d62ddc856e55582e5cd86070abde7d045455c3 Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@4f64403b-2f21-0410-a795-97e2b3489a10> Date: Mon, 22 Nov 2010 01:51:38 +0000 Subject: Added ability to update in directories protected by UAC git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@577 4f64403b-2f21-0410-a795-97e2b3489a10 --- updater/conf_dialog.cpp | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) (limited to 'updater/conf_dialog.cpp') diff --git a/updater/conf_dialog.cpp b/updater/conf_dialog.cpp index 8ccaedf..d436ac2 100644 --- a/updater/conf_dialog.cpp +++ b/updater/conf_dialog.cpp @@ -1,6 +1,10 @@ #include "common.h" #include "conf_dialog.h" +#ifndef BCM_SETSHIELD +#define BCM_SETSHIELD (0x1600 + 0x000C) +#endif + INT_PTR CALLBACK DlgProcConfirm(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { HWND hwndList = GetDlgItem(hwndDlg, IDC_LIST_UPDATES); @@ -110,7 +114,7 @@ INT_PTR CALLBACK DlgProcConfirm(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lP mir_snprintf(stored_setting, 256, "DisabledVer%s", todo[i].update.szComponentName); DBVARIANT dbv; bool check = todo[i].update_options.enabled; - if(!DBGetContactSettingString(0, "Updater", stored_setting, &dbv)) { + if (!DBGetContactSettingString(0, "Updater", stored_setting, &dbv)) { if(dbv.pszVal && strcmp(dbv.pszVal, ((UpdateInternal *)lvI.lParam)->newVersion) == 0) check = false; else @@ -122,12 +126,14 @@ INT_PTR CALLBACK DlgProcConfirm(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lP } HWND hwOk = GetDlgItem(hwndDlg, IDOK); - EnableWindow(hwOk, one_enabled ? TRUE : FALSE); + EnableWindow(hwOk, one_enabled); } // do this after filling list - enables 'ITEMCHANGED' below SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - Utils_RestoreWindowPositionNoSize(hwndDlg,0,MODULE,"ConfirmWindow"); + Utils_RestoreWindowPositionNoSize(hwndDlg, NULL, MODULE, "ConfirmWindow"); + if (IsAdminRequired()) + SendDlgItemMessage(hwndDlg, IDOK, BCM_SETSHIELD, 0, TRUE); return TRUE; @@ -207,9 +213,12 @@ INT_PTR CALLBACK DlgProcConfirm(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lP } break; + case WM_COMMAND: - if ( HIWORD( wParam ) == BN_CLICKED ) { - switch( LOWORD( wParam )) { + if (HIWORD( wParam ) == BN_CLICKED) + { + switch(LOWORD(wParam)) + { case IDC_BTN_CHANGELOG: { char url[256]; @@ -225,17 +234,19 @@ INT_PTR CALLBACK DlgProcConfirm(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lP sprintf(url, MIM_CHANGELOG_URL_PREFIX "%d", ((UpdateInternal *)lvI.lParam)->file_id); CallService(MS_UTILS_OPENURL, (WPARAM)TRUE, (LPARAM)url); } else if(((UpdateInternal *)lvI.lParam)->update_options.use_beta && ((UpdateInternal *)lvI.lParam)->update.szBetaChangelogURL) { - CallService(MS_UTILS_OPENURL, (WPARAM)TRUE, (LPARAM)((UpdateInternal *)lvI.lParam)->update.szBetaChangelogURL); + CallService(MS_UTILS_OPENURL, TRUE, (LPARAM)((UpdateInternal *)lvI.lParam)->update.szBetaChangelogURL); } } return TRUE; + case IDC_CHK_CONFALL: { HWND hw = GetDlgItem(hwndDlg, IDC_CHK_NOINSTALL); EnableWindow(hw, !IsDlgButtonChecked(hwndDlg, IDC_CHK_CONFALL)); } return TRUE; + case IDC_CHK_NOINSTALL: { HWND hw = GetDlgItem(hwndDlg, IDC_CHK_CONFALL); @@ -247,11 +258,13 @@ INT_PTR CALLBACK DlgProcConfirm(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lP SetWindowText(GetDlgItem(hwndDlg, IDOK), TranslateT("Update")); } return TRUE; + case IDOK: SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); - Utils_SaveWindowPosition(hwndDlg,0,MODULE,"ConfirmWindow"); - DBWriteContactSettingByte(0, "Updater", "DefaultConfAll", IsDlgButtonChecked(hwndDlg, IDC_CHK_CONFALL) ? 1 : 0); - DBWriteContactSettingByte(0, "Updater", "NoInstall", IsDlgButtonChecked(hwndDlg, IDC_CHK_NOINSTALL) ? 1 : 0); + Utils_SaveWindowPosition(hwndDlg, NULL, MODULE, "ConfirmWindow"); + DBWriteContactSettingByte(NULL, "Updater", "DefaultConfAll", IsDlgButtonChecked(hwndDlg, IDC_CHK_CONFALL) ? 1 : 0); + DBWriteContactSettingByte(NULL, "Updater", "NoInstall", IsDlgButtonChecked(hwndDlg, IDC_CHK_NOINSTALL) ? 1 : 0); + if(IsDlgButtonChecked(hwndDlg, IDC_CHK_CONFALL)) EndDialog(hwndDlg, CD_CONFALL); else if(IsDlgButtonChecked(hwndDlg, IDC_CHK_NOINSTALL)) @@ -259,9 +272,10 @@ INT_PTR CALLBACK DlgProcConfirm(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lP else EndDialog(hwndDlg, CD_OK); return TRUE; + case IDCANCEL: SetWindowLongPtr(hwndDlg, GWLP_USERDATA, 0); - Utils_SaveWindowPosition(hwndDlg,0,MODULE,"ConfirmWindow"); + Utils_SaveWindowPosition(hwndDlg, NULL, MODULE, "ConfirmWindow"); EndDialog(hwndDlg, CD_CANCEL); return TRUE; } -- cgit v1.2.3