• R/O
  • HTTP
  • SSH
  • HTTPS

提交

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Loweynet


Commit MetaInfo

修订版5776d8f65154a19acf65269793a07ca4ba113666 (tree)
时间2014-06-14 23:24:03
作者s_kawamoto <s_kawamoto@user...>
Commiters_kawamoto

Log Message

Add routines for asynchronous software update.

更改概述

差异

Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
--- a/common.h
+++ b/common.h
@@ -1392,7 +1392,7 @@ void UpdateTaskbarProgress();
13921392 // 高DPI対応
13931393 int AskToolWinHeight(void);
13941394 // ソフトウェア自動更新
1395-void UpdateSoftware(int NoError, int NoConfirm);
1395+void UpdateSoftware(int Async, int NoError, int NoConfirm);
13961396
13971397 /*===== filelist.c =====*/
13981398
--- a/main.c
+++ b/main.c
@@ -738,7 +738,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
738738
739739 // ソフトウェア自動更新
740740 if(AutoCheckForUptatesInterval == 0)
741- UpdateSoftware(YES, AutoApplyUpdates);
741+ UpdateSoftware(YES, YES, AutoApplyUpdates);
742742
743743 StartupProc(lpszCmdLine);
744744 sts = FFFTP_SUCCESS;
@@ -1115,7 +1115,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
11151115 if(AskUserOpeDisabled() == NO && AskTransferNow() == NO)
11161116 {
11171117 if(AutoCheckForUptatesInterval > 0 && time(NULL) - LastAutoCheckForUpdates >= AutoCheckForUptatesInterval * 86400)
1118- UpdateSoftware(YES, AutoApplyUpdates);
1118+ UpdateSoftware(YES, YES, AutoApplyUpdates);
11191119 }
11201120 break;
11211121 }
@@ -1758,7 +1758,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
17581758
17591759 // ソフトウェア自動更新
17601760 case MENU_UPDATES_CHECK :
1761- UpdateSoftware(NO, NO);
1761+ UpdateSoftware(NO, NO, NO);
17621762 break;
17631763
17641764 default :
@@ -3630,41 +3630,69 @@ int AskToolWinHeight(void)
36303630 }
36313631
36323632 // ソフトウェア自動更新
3633-void UpdateSoftware(int NoError, int NoConfirm)
3633+typedef struct
36343634 {
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;
36353651 DWORD Version;
36363652 char VersionString[32];
36373653 char Tmp[FMAX_PATH+1];
3638- // 念のためマスターパスワードの一致を確認
3639- if(GetMasterPasswordStatus() == PASSWORD_OK)
3654+ if(Async == YES)
36403655 {
3641- Version = RELEASE_VERSION_NUM;
3642- LastAutoCheckForUpdates = time(NULL);
3643- if(CheckForUpdates(FALSE, NULL, &Version, VersionString))
3656+ if(pData = malloc(sizeof(UPDATESOFTWAREDATA)))
36443657 {
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))
36463671 {
3647- sprintf(Tmp, MSGJPN362, VER_STR, VersionString);
3648- if(NoConfirm == YES || MessageBox(GetMainHwnd(), Tmp, "FFFTP", MB_YESNO) == IDYES)
3672+ if(Version > RELEASE_VERSION_NUM)
36493673 {
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)
36553676 {
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);
36583688 }
3659- else if(NoError == NO)
3660- MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);
36613689 }
3690+ else if(NoError == NO)
3691+ MessageBox(GetMainHwnd(), MSGJPN364, "FFFTP", MB_OK);
36623692 }
36633693 else if(NoError == NO)
3664- MessageBox(GetMainHwnd(), MSGJPN364, "FFFTP", MB_OK);
3694+ MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);
36653695 }
3666- else if(NoError == NO)
3667- MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);
36683696 }
36693697 }
36703698