OSDN Git Service

Add routines for asynchronous software update.
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Sat, 14 Jun 2014 14:24:03 +0000 (23:24 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Sat, 14 Jun 2014 14:24:03 +0000 (23:24 +0900)
FFFTP_Eng_Release/FFFTP.exe
Release/FFFTP.exe
common.h
main.c

index 6ba3e78..2d216c0 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index f93b7ae..8c0ef6a 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index 829c4fe..76f7225 100644 (file)
--- a/common.h
+++ b/common.h
@@ -1392,7 +1392,7 @@ void UpdateTaskbarProgress();
 // 高DPI対応\r
 int AskToolWinHeight(void);\r
 // ソフトウェア自動更新\r
-void UpdateSoftware(int NoError, int NoConfirm);\r
+void UpdateSoftware(int Async, int NoError, int NoConfirm);\r
 \r
 /*===== filelist.c =====*/\r
 \r
diff --git a/main.c b/main.c
index 7228645..d8e95d3 100644 (file)
--- a/main.c
+++ b/main.c
@@ -738,7 +738,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
 \r
                                        // ソフトウェア自動更新\r
                                        if(AutoCheckForUptatesInterval == 0)\r
-                                               UpdateSoftware(YES, AutoApplyUpdates);\r
+                                               UpdateSoftware(YES, YES, AutoApplyUpdates);\r
 \r
                                        StartupProc(lpszCmdLine);\r
                                        sts = FFFTP_SUCCESS;\r
@@ -1115,7 +1115,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                if(AskUserOpeDisabled() == NO && AskTransferNow() == NO)\r
                                {\r
                                        if(AutoCheckForUptatesInterval > 0 && time(NULL) - LastAutoCheckForUpdates >= AutoCheckForUptatesInterval * 86400)\r
-                                               UpdateSoftware(YES, AutoApplyUpdates);\r
+                                               UpdateSoftware(YES, YES, AutoApplyUpdates);\r
                                }\r
                                break;\r
                        }\r
@@ -1758,7 +1758,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
 \r
                                // ソフトウェア自動更新\r
                                case MENU_UPDATES_CHECK :\r
-                                       UpdateSoftware(NO, NO);\r
+                                       UpdateSoftware(NO, NO, NO);\r
                                        break;\r
 \r
                                default :\r
@@ -3630,41 +3630,69 @@ int AskToolWinHeight(void)
 }\r
 \r
 // ソフトウェア自動更新\r
-void UpdateSoftware(int NoError, int NoConfirm)\r
+typedef struct\r
 {\r
+       int NoError;\r
+       int NoConfirm;\r
+} UPDATESOFTWAREDATA;\r
+\r
+DWORD WINAPI UpdateSoftwareThreadProc(LPVOID lpParameter)\r
+{\r
+       UPDATESOFTWAREDATA* pData;\r
+       pData = (UPDATESOFTWAREDATA*)lpParameter;\r
+       UpdateSoftware(NO, pData->NoError, pData->NoConfirm);\r
+       free(pData);\r
+       return 0;\r
+}\r
+\r
+void UpdateSoftware(int Async, int NoError, int NoConfirm)\r
+{\r
+       UPDATESOFTWAREDATA* pData;\r
        DWORD Version;\r
        char VersionString[32];\r
        char Tmp[FMAX_PATH+1];\r
-       // 念のためマスターパスワードの一致を確認\r
-       if(GetMasterPasswordStatus() == PASSWORD_OK)\r
+       if(Async == YES)\r
        {\r
-               Version = RELEASE_VERSION_NUM;\r
-               LastAutoCheckForUpdates = time(NULL);\r
-               if(CheckForUpdates(FALSE, NULL, &Version, VersionString))\r
+               if(pData = malloc(sizeof(UPDATESOFTWAREDATA)))\r
                {\r
-                       if(Version > RELEASE_VERSION_NUM)\r
+                       pData->NoError = NoError;\r
+                       pData->NoConfirm = NoConfirm;\r
+                       CloseHandle(CreateThread(NULL, 0, UpdateSoftwareThreadProc, pData, 0, NULL));\r
+               }\r
+       }\r
+       else\r
+       {\r
+               // 念のためマスターパスワードの一致を確認\r
+               if(GetMasterPasswordStatus() == PASSWORD_OK)\r
+               {\r
+                       Version = RELEASE_VERSION_NUM;\r
+                       LastAutoCheckForUpdates = time(NULL);\r
+                       if(CheckForUpdates(FALSE, NULL, &Version, VersionString))\r
                        {\r
-                               sprintf(Tmp, MSGJPN362, VER_STR, VersionString);\r
-                               if(NoConfirm == YES || MessageBox(GetMainHwnd(), Tmp, "FFFTP", MB_YESNO) == IDYES)\r
+                               if(Version > RELEASE_VERSION_NUM)\r
                                {\r
-                                       strcpy(Tmp, TmpPath);\r
-                                       SetYenTail(Tmp);\r
-                                       strcat(Tmp, "update");\r
-                                       _mkdir(Tmp);\r
-                                       if(CheckForUpdates(TRUE, Tmp, &Version, VersionString))\r
+                                       sprintf(Tmp, MSGJPN362, VER_STR, VersionString);\r
+                                       if(NoConfirm == YES || MessageBox(GetMainHwnd(), Tmp, "FFFTP", MB_YESNO) == IDYES)\r
                                        {\r
-                                               MessageBox(GetMainHwnd(), MSGJPN365, "FFFTP", MB_OK);\r
-                                               ApplyUpdatesOnExit = YES;\r
+                                               strcpy(Tmp, TmpPath);\r
+                                               SetYenTail(Tmp);\r
+                                               strcat(Tmp, "update");\r
+                                               _mkdir(Tmp);\r
+                                               if(CheckForUpdates(TRUE, Tmp, &Version, VersionString))\r
+                                               {\r
+                                                       MessageBox(GetMainHwnd(), MSGJPN365, "FFFTP", MB_OK);\r
+                                                       ApplyUpdatesOnExit = YES;\r
+                                               }\r
+                                               else if(NoError == NO)\r
+                                                       MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);\r
                                        }\r
-                                       else if(NoError == NO)\r
-                                               MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);\r
                                }\r
+                               else if(NoError == NO)\r
+                                       MessageBox(GetMainHwnd(), MSGJPN364, "FFFTP", MB_OK);\r
                        }\r
                        else if(NoError == NO)\r
-                               MessageBox(GetMainHwnd(), MSGJPN364, "FFFTP", MB_OK);\r
+                               MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);\r
                }\r
-               else if(NoError == NO)\r
-                       MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);\r
        }\r
 }\r
 \r