Loweynet
修订版 | 5776d8f65154a19acf65269793a07ca4ba113666 (tree) |
---|---|
时间 | 2014-06-14 23:24:03 |
作者 | s_kawamoto <s_kawamoto@user...> |
Commiter | s_kawamoto |
Add routines for asynchronous software update.
@@ -1392,7 +1392,7 @@ void UpdateTaskbarProgress(); | ||
1392 | 1392 | // 高DPI対応 |
1393 | 1393 | int AskToolWinHeight(void); |
1394 | 1394 | // ソフトウェア自動更新 |
1395 | -void UpdateSoftware(int NoError, int NoConfirm); | |
1395 | +void UpdateSoftware(int Async, int NoError, int NoConfirm); | |
1396 | 1396 | |
1397 | 1397 | /*===== filelist.c =====*/ |
1398 | 1398 |
@@ -738,7 +738,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow) | ||
738 | 738 | |
739 | 739 | // ソフトウェア自動更新 |
740 | 740 | if(AutoCheckForUptatesInterval == 0) |
741 | - UpdateSoftware(YES, AutoApplyUpdates); | |
741 | + UpdateSoftware(YES, YES, AutoApplyUpdates); | |
742 | 742 | |
743 | 743 | StartupProc(lpszCmdLine); |
744 | 744 | sts = FFFTP_SUCCESS; |
@@ -1115,7 +1115,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA | ||
1115 | 1115 | if(AskUserOpeDisabled() == NO && AskTransferNow() == NO) |
1116 | 1116 | { |
1117 | 1117 | if(AutoCheckForUptatesInterval > 0 && time(NULL) - LastAutoCheckForUpdates >= AutoCheckForUptatesInterval * 86400) |
1118 | - UpdateSoftware(YES, AutoApplyUpdates); | |
1118 | + UpdateSoftware(YES, YES, AutoApplyUpdates); | |
1119 | 1119 | } |
1120 | 1120 | break; |
1121 | 1121 | } |
@@ -1758,7 +1758,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA | ||
1758 | 1758 | |
1759 | 1759 | // ソフトウェア自動更新 |
1760 | 1760 | case MENU_UPDATES_CHECK : |
1761 | - UpdateSoftware(NO, NO); | |
1761 | + UpdateSoftware(NO, NO, NO); | |
1762 | 1762 | break; |
1763 | 1763 | |
1764 | 1764 | default : |
@@ -3630,41 +3630,69 @@ int AskToolWinHeight(void) | ||
3630 | 3630 | } |
3631 | 3631 | |
3632 | 3632 | // ソフトウェア自動更新 |
3633 | -void UpdateSoftware(int NoError, int NoConfirm) | |
3633 | +typedef struct | |
3634 | 3634 | { |
3635 | + int NoError; | |
3636 | + int NoConfirm; | |
3637 | +} UPDATESOFTWAREDATA; | |
3638 | + | |
3639 | +DWORD WINAPI UpdateSoftwareThreadProc(LPVOID lpParameter) | |
3640 | +{ | |
3641 | + UPDATESOFTWAREDATA* pData; | |
3642 | + pData = (UPDATESOFTWAREDATA*)lpParameter; | |
3643 | + UpdateSoftware(NO, pData->NoError, pData->NoConfirm); | |
3644 | + free(pData); | |
3645 | + return 0; | |
3646 | +} | |
3647 | + | |
3648 | +void UpdateSoftware(int Async, int NoError, int NoConfirm) | |
3649 | +{ | |
3650 | + UPDATESOFTWAREDATA* pData; | |
3635 | 3651 | DWORD Version; |
3636 | 3652 | char VersionString[32]; |
3637 | 3653 | char Tmp[FMAX_PATH+1]; |
3638 | - // 念のためマスターパスワードの一致を確認 | |
3639 | - if(GetMasterPasswordStatus() == PASSWORD_OK) | |
3654 | + if(Async == YES) | |
3640 | 3655 | { |
3641 | - Version = RELEASE_VERSION_NUM; | |
3642 | - LastAutoCheckForUpdates = time(NULL); | |
3643 | - if(CheckForUpdates(FALSE, NULL, &Version, VersionString)) | |
3656 | + if(pData = malloc(sizeof(UPDATESOFTWAREDATA))) | |
3644 | 3657 | { |
3645 | - if(Version > RELEASE_VERSION_NUM) | |
3658 | + pData->NoError = NoError; | |
3659 | + pData->NoConfirm = NoConfirm; | |
3660 | + CloseHandle(CreateThread(NULL, 0, UpdateSoftwareThreadProc, pData, 0, NULL)); | |
3661 | + } | |
3662 | + } | |
3663 | + else | |
3664 | + { | |
3665 | + // 念のためマスターパスワードの一致を確認 | |
3666 | + if(GetMasterPasswordStatus() == PASSWORD_OK) | |
3667 | + { | |
3668 | + Version = RELEASE_VERSION_NUM; | |
3669 | + LastAutoCheckForUpdates = time(NULL); | |
3670 | + if(CheckForUpdates(FALSE, NULL, &Version, VersionString)) | |
3646 | 3671 | { |
3647 | - sprintf(Tmp, MSGJPN362, VER_STR, VersionString); | |
3648 | - if(NoConfirm == YES || MessageBox(GetMainHwnd(), Tmp, "FFFTP", MB_YESNO) == IDYES) | |
3672 | + if(Version > RELEASE_VERSION_NUM) | |
3649 | 3673 | { |
3650 | - strcpy(Tmp, TmpPath); | |
3651 | - SetYenTail(Tmp); | |
3652 | - strcat(Tmp, "update"); | |
3653 | - _mkdir(Tmp); | |
3654 | - if(CheckForUpdates(TRUE, Tmp, &Version, VersionString)) | |
3674 | + sprintf(Tmp, MSGJPN362, VER_STR, VersionString); | |
3675 | + if(NoConfirm == YES || MessageBox(GetMainHwnd(), Tmp, "FFFTP", MB_YESNO) == IDYES) | |
3655 | 3676 | { |
3656 | - MessageBox(GetMainHwnd(), MSGJPN365, "FFFTP", MB_OK); | |
3657 | - ApplyUpdatesOnExit = YES; | |
3677 | + strcpy(Tmp, TmpPath); | |
3678 | + SetYenTail(Tmp); | |
3679 | + strcat(Tmp, "update"); | |
3680 | + _mkdir(Tmp); | |
3681 | + if(CheckForUpdates(TRUE, Tmp, &Version, VersionString)) | |
3682 | + { | |
3683 | + MessageBox(GetMainHwnd(), MSGJPN365, "FFFTP", MB_OK); | |
3684 | + ApplyUpdatesOnExit = YES; | |
3685 | + } | |
3686 | + else if(NoError == NO) | |
3687 | + MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR); | |
3658 | 3688 | } |
3659 | - else if(NoError == NO) | |
3660 | - MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR); | |
3661 | 3689 | } |
3690 | + else if(NoError == NO) | |
3691 | + MessageBox(GetMainHwnd(), MSGJPN364, "FFFTP", MB_OK); | |
3662 | 3692 | } |
3663 | 3693 | else if(NoError == NO) |
3664 | - MessageBox(GetMainHwnd(), MSGJPN364, "FFFTP", MB_OK); | |
3694 | + MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR); | |
3665 | 3695 | } |
3666 | - else if(NoError == NO) | |
3667 | - MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR); | |
3668 | 3696 | } |
3669 | 3697 | } |
3670 | 3698 |