Fix minor bugs.
MENUITEM "\96Ú\8e\9f(&C)\tF1", MENU_HELP\r
MENUITEM "Q&&A\8fW(\83C\83\93\83^\81[\83l\83b\83g\82É\90Ú\91±\82µ\82Ü\82·)(T)", MENU_HELP_TROUBLE\r
MENUITEM SEPARATOR\r
+ MENUITEM "\83\\83t\83g\83E\83F\83A\82Ì\8dX\90V\82ð\8am\94F(&U)...", MENU_UPDATES_CHECK\r
+ MENUITEM SEPARATOR\r
MENUITEM "FFFTP\82É\82Â\82¢\82Ä(&A)...", MENU_ABOUT\r
END\r
END\r
CONTROL "\8cÃ\82¢\8f\88\97\9d\93à\97e\82ð\95\\8e¦\82µ\82È\82¢(&L)",DISP2_REMOVE_OLD_LOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,35,196,10\r
END\r
\r
+opt_updates_dlg DIALOG 0, 0, 211, 155\r
+STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
+FONT 9, "MS Shell Dlg"\r
+BEGIN\r
+ CONTROL "\8e©\93®\93I\82É\83\\83t\83g\83E\83F\83A\82Ì\8dX\90V\82ð\8am\94F\82·\82é(&C)",UPDATES_AUTO_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,196,10\r
+ CONTROL "\8e©\93®\93I\82É\8dX\90V\82ð\93K\97p\82·\82é(&A)",UPDATES_AUTO_APPLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,21,196,10\r
+ LTEXT "\8dX\90V\82Ì\8am\94F\82Ì\8aÔ\8au(&I)",-1,7,35,196,8\r
+ EDITTEXT UPDATES_INTERVAL,7,45,26,14,ES_AUTOHSCROLL | ES_NUMBER\r
+ CONTROL "Spin1",UPDATES_INTERVAL_SPN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,33,45,9,14\r
+ LTEXT "\81i0\81`999\93ú; 0=\96\88\89ñ\8bN\93®\8e\9e\82É\8am\94F\81j",-1,45,49,168,8\r
+END\r
+\r
\r
/////////////////////////////////////////////////////////////////////////////\r
//\r
TOPMARGIN, 7\r
BOTTOMMARGIN, 148\r
END\r
+\r
+ opt_updates_dlg, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 204\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 148\r
+ END\r
END\r
#endif // APSTUDIO_INVOKED\r
\r
#define ini_from_reg_dlg 194\r
#define opt_trmode4_dlg 195\r
#define opt_disp2_dlg 196\r
+#define opt_updates_dlg 197\r
#define TRANS_TIME_BAR 1002\r
#define TRANS_TEXT 1003\r
#define TRANS_REMOTE 1003\r
#define TRMODE4_UTF8BOM_CNV 1219\r
#define HSET_ERROR_RECONNECT 1220\r
#define HSET_FN_UTF8HFSX_CNV 1221\r
+#define UPDATES_AUTO_CHECK 1222\r
+#define UPDATES_AUTO_APPLY 1223\r
+#define UPDATES_INTERVAL 1224\r
+#define UPDATES_INTERVAL_SPN 1225\r
#define MENU_END 40001\r
#define MENU_EXIT 40001\r
#define MENU_CONNECT 40003\r
#define MENU_FW_FTP_FILTER 40178\r
#define MENU_REMOTE_MOVE_UPDIR 40179\r
#define MENU_EXPORT_FILEZILLA_XML 40180\r
+#define MENU_UPDATES_CHECK 40181\r
#define FSNOTIFY_TITLE 65535\r
#define HOST_SIZEGRIP 65535\r
\r
#ifdef APSTUDIO_INVOKED\r
#ifndef APSTUDIO_READONLY_SYMBOLS\r
#define _APS_NEXT_RESOURCE_VALUE 197\r
-#define _APS_NEXT_COMMAND_VALUE 40181\r
-#define _APS_NEXT_CONTROL_VALUE 1221\r
+#define _APS_NEXT_COMMAND_VALUE 40182\r
+#define _APS_NEXT_CONTROL_VALUE 1226\r
#define _APS_NEXT_SYMED_VALUE 101\r
#endif\r
#endif\r
MENUITEM "&Contents\tF1", MENU_HELP\r
MENUITEM "&Q&&A (Connect to Internet)", MENU_HELP_TROUBLE\r
MENUITEM SEPARATOR\r
+ MENUITEM "Check for Software &Updates...", MENU_UPDATES_CHECK\r
+ MENUITEM SEPARATOR\r
MENUITEM "&About FFFTP...", MENU_ABOUT\r
END\r
END\r
BEGIN\r
POPUP "dummy"\r
BEGIN\r
- MENUITEM "Go up (host)", MENU_REMOTE_UPDIR\r
+ MENUITEM "Go up (remote)", MENU_REMOTE_UPDIR\r
MENUITEM "Go up (local)", MENU_LOCAL_UPDIR\r
MENUITEM "Go up (both)", MENU_UPDIR\r
MENUITEM "COMBO_LOCAL", COMBO_LOCAL\r
CONTROL "Do not show old &logs",DISP2_REMOVE_OLD_LOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,35,196,10\r
END\r
\r
+opt_updates_dlg DIALOG 0, 0, 211, 155\r
+STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION\r
+FONT 9, "MS Shell Dlg"\r
+BEGIN\r
+ CONTROL "&Check for software updates automatically",UPDATES_AUTO_CHECK,\r
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,196,10\r
+ CONTROL "&Apply updates automatically",UPDATES_AUTO_APPLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,21,196,10\r
+ LTEXT "&Interval of checking for updates",-1,7,35,196,8\r
+ EDITTEXT UPDATES_INTERVAL,7,45,26,14,ES_AUTOHSCROLL | ES_NUMBER\r
+ CONTROL "Spin1",UPDATES_INTERVAL_SPN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,33,45,9,14\r
+ LTEXT "\81i0\81`999days; 0=Every time at startup\81j",-1,45,49,168,8\r
+END\r
+\r
\r
/////////////////////////////////////////////////////////////////////////////\r
//\r
TOPMARGIN, 7\r
BOTTOMMARGIN, 148\r
END\r
+\r
+ opt_updates_dlg, DIALOG\r
+ BEGIN\r
+ LEFTMARGIN, 7\r
+ RIGHTMARGIN, 204\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 148\r
+ END\r
END\r
#endif // APSTUDIO_INVOKED\r
\r
#define ini_from_reg_dlg 194\r
#define opt_trmode4_dlg 195\r
#define opt_disp2_dlg 196\r
+#define opt_updates_dlg 197\r
#define TRANS_TIME_BAR 1002\r
#define TRANS_TEXT 1003\r
#define TRANS_REMOTE 1003\r
#define TRMODE4_UTF8BOM_CNV 1219\r
#define HSET_ERROR_RECONNECT 1220\r
#define HSET_FN_UTF8HFSX_CNV 1221\r
+#define UPDATES_AUTO_CHECK 1222\r
+#define UPDATES_AUTO_APPLY 1223\r
+#define UPDATES_INTERVAL 1224\r
+#define UPDATES_INTERVAL_SPN 1225\r
#define MENU_END 40001\r
#define MENU_EXIT 40001\r
#define MENU_CONNECT 40003\r
#define MENU_FW_FTP_FILTER 40178\r
#define MENU_REMOTE_MOVE_UPDIR 40179\r
#define MENU_EXPORT_FILEZILLA_XML 40180\r
+#define MENU_UPDATES_CHECK 40181\r
#define FSNOTIFY_TITLE 65535\r
#define HOST_SIZEGRIP 65535\r
\r
#ifdef APSTUDIO_INVOKED\r
#ifndef APSTUDIO_READONLY_SYMBOLS\r
#define _APS_NEXT_RESOURCE_VALUE 197\r
-#define _APS_NEXT_COMMAND_VALUE 40181\r
-#define _APS_NEXT_CONTROL_VALUE 1221\r
+#define _APS_NEXT_COMMAND_VALUE 40182\r
+#define _APS_NEXT_CONTROL_VALUE 1226\r
#define _APS_NEXT_SYMED_VALUE 101\r
#endif\r
#endif\r
void UpdateTaskbarProgress();\r
// 高DPI対応\r
int AskToolWinHeight(void);\r
+// ソフトウェア自動更新\r
+void UpdateSoftware(int NoError, int NoConfirm);\r
\r
/*===== filelist.c =====*/\r
\r
// タスクバー進捗表示\r
static ITaskbarList3* pTaskbarList3;\r
// 高DPI対応\r
-int ToolWinHeight;\r
+static int ToolWinHeight;\r
+// ソフトウェア自動更新\r
+static int ApplyUpdatesOnExit = NO;\r
\r
\r
/*===== グローバルなワーク =====*/\r
int RemoveOldLog = NO;\r
// バージョン確認\r
int ReadOnlySettings = NO;\r
+// ソフトウェア自動更新\r
+int AutoCheckForUpdates = YES;\r
+int AutoApplyUpdates = NO;\r
+int AutoCheckForUptatesInterval = 7;\r
+time_t LastAutoCheckForUpdates = 0;\r
\r
\r
\r
BOOL Sts;\r
// ソフトウェア自動更新\r
char UpdateDir[FMAX_PATH+1];\r
+ char Path[FMAX_PATH+1];\r
+ char Command[FMAX_PATH+1];\r
+ char* p;\r
\r
// プロセス保護\r
#ifdef ENABLE_PROCESS_PROTECTION\r
pCommand = lpszCmdLine;\r
while(pCommand = GetToken(pCommand, Option))\r
{\r
- if(strcmp(Option, "--protect") == 0)\r
- {\r
- ProtectLevel = PROCESS_PROTECTION_DEFAULT;\r
- break;\r
- }\r
- else if(strcmp(Option, "--protect-high") == 0)\r
- {\r
- ProtectLevel = PROCESS_PROTECTION_HIGH;\r
- break;\r
- }\r
- else if(strcmp(Option, "--protect-medium") == 0)\r
- {\r
- ProtectLevel = PROCESS_PROTECTION_MEDIUM;\r
- break;\r
- }\r
- else if(strcmp(Option, "--protect-low") == 0)\r
+ if(Option[0] == '-')\r
{\r
- ProtectLevel = PROCESS_PROTECTION_LOW;\r
- break;\r
+ if(strcmp(&Option[1], "-protect") == 0)\r
+ {\r
+ ProtectLevel = PROCESS_PROTECTION_DEFAULT;\r
+ break;\r
+ }\r
+ else if(strcmp(&Option[1], "-protect-high") == 0)\r
+ {\r
+ ProtectLevel = PROCESS_PROTECTION_HIGH;\r
+ break;\r
+ }\r
+ else if(strcmp(&Option[1], "-protect-medium") == 0)\r
+ {\r
+ ProtectLevel = PROCESS_PROTECTION_MEDIUM;\r
+ break;\r
+ }\r
+ else if(strcmp(&Option[1], "-protect-low") == 0)\r
+ {\r
+ ProtectLevel = PROCESS_PROTECTION_LOW;\r
+ break;\r
+ }\r
}\r
}\r
if(ProtectLevel != PROCESS_PROTECTION_NONE)\r
#endif\r
\r
// ソフトウェア自動更新\r
- if(GetTokenAfterOption(lpszCmdLine, UpdateDir, "--software-update", "--software-update"))\r
+ if(GetTokenAfterOption(lpszCmdLine, UpdateDir, "-software-update", "-software-update"))\r
{\r
- if(!StartUpdateProcessAsAdministrator(lpszCmdLine, " --restart"))\r
+ if(!RestartUpdateProcessAsAdministrator(lpszCmdLine, " --restart"))\r
{\r
- if(ApplyUpdates(UpdateDir))\r
+ Sleep(1000);\r
+ if(ApplyUpdates(UpdateDir, "updatebackup"))\r
MessageBox(NULL, MSGJPN359, "FFFTP", MB_OK);\r
else\r
- MessageBox(NULL, MSGJPN360, "FFFTP", MB_OK);\r
+ MessageBox(NULL, MSGJPN360, "FFFTP", MB_OK | MB_ICONERROR);\r
}\r
return 0;\r
}\r
- else if(GetTokenAfterOption(lpszCmdLine, UpdateDir, "--software-cleanup", "--software-cleanup"))\r
+ else if(GetTokenAfterOption(lpszCmdLine, UpdateDir, "-software-cleanup", "-software-cleanup"))\r
{\r
CleanupUpdates(UpdateDir);\r
}\r
FreeUPnP();\r
CoUninitialize();\r
OleUninitialize();\r
+ // ソフトウェア自動更新\r
+ if(ApplyUpdatesOnExit == YES)\r
+ {\r
+ Sts = FALSE;\r
+ if(GetModuleFileName(NULL, UpdateDir, FMAX_PATH) > 0)\r
+ {\r
+ if(p = strrchr(UpdateDir, '\\'))\r
+ {\r
+ *p = '\0';\r
+ strcpy(Path, TmpPath);\r
+ SetYenTail(Path);\r
+ strcat(Path, "update");\r
+ sprintf(Command, "-%s \"%s\"", "-software-update", UpdateDir);\r
+ if(StartUpdateProcess(Path, Command))\r
+ Sts = TRUE;\r
+ }\r
+ }\r
+ if(!Sts)\r
+ MessageBox(NULL, MSGJPN360, "FFFTP", MB_OK | MB_ICONERROR);\r
+ }\r
return(Ret);\r
}\r
\r
MakeButtonsFocus();\r
DispTransferFiles();\r
\r
+ // ソフトウェア自動更新\r
+ if(AutoCheckForUptatesInterval == 0)\r
+ UpdateSoftware(YES, AutoApplyUpdates);\r
+\r
StartupProc(lpszCmdLine);\r
sts = FFFTP_SUCCESS;\r
\r
{\r
// ローカル側自動更新\r
// タスクバー進捗表示\r
+ // ソフトウェア自動更新\r
case WM_CREATE :\r
SetTimer(hWnd, 1, 1000, NULL);\r
SetTimer(hWnd, 2, 100, NULL);\r
+ SetTimer(hWnd, 3, 60000, NULL);\r
break;\r
\r
// ローカル側自動更新\r
// 自動切断対策\r
// タスクバー進捗表示\r
+ // ソフトウェア自動更新\r
case WM_TIMER :\r
switch(wParam)\r
{\r
if(IsTaskbarList3Loaded() == YES)\r
UpdateTaskbarProgress();\r
break;\r
+ case 3:\r
+ if(AskUserOpeDisabled() == NO && AskTransferNow() == NO)\r
+ {\r
+ if(AutoCheckForUptatesInterval > 0 && time(NULL) - LastAutoCheckForUpdates >= AutoCheckForUptatesInterval * 86400)\r
+ UpdateSoftware(YES, AutoApplyUpdates);\r
+ }\r
+ break;\r
}\r
break;\r
\r
SetMasterPassword(NULL);\r
while(ValidateMasterPassword() == YES && GetMasterPasswordStatus() == PASSWORD_UNMATCH)\r
{\r
- if(EnterMasterPasswordAndSet(masterpasswd_dlg, NULL) == 0)\r
+ if(EnterMasterPasswordAndSet(masterpasswd_dlg, hWnd) == 0)\r
break;\r
}\r
if(GetMasterPasswordStatus() == PASSWORD_OK && EnterMasterPasswordAndSet(newmasterpasswd_dlg, hWnd) != 0)\r
SetMasterPassword(NULL);\r
while(ValidateMasterPassword() == YES && GetMasterPasswordStatus() == PASSWORD_UNMATCH)\r
{\r
- if(EnterMasterPasswordAndSet(masterpasswd_dlg, NULL) == 0)\r
+ if(EnterMasterPasswordAndSet(masterpasswd_dlg, hWnd) == 0)\r
break;\r
}\r
if(GetMasterPasswordStatus() == PASSWORD_OK)\r
}\r
break;\r
\r
+ // ソフトウェア自動更新\r
+ case MENU_UPDATES_CHECK :\r
+ UpdateSoftware(NO, NO);\r
+ break;\r
+\r
default :\r
if((LOWORD(wParam) >= MENU_BMARK_TOP) &&\r
(LOWORD(wParam) < MENU_BMARK_TOP+100))\r
FindCloseChangeNotification(ChangeNotification);\r
// タスクバー進捗表示\r
KillTimer(hWnd, 2);\r
+ // ソフトウェア自動更新\r
+ KillTimer(hWnd, 3);\r
// WSACleanup();\r
// DestroyWindow(hWndFtp);\r
PostQuitMessage(0);\r
}\r
// プロセス保護\r
#ifdef ENABLE_PROCESS_PROTECTION\r
- else if(strcmp(Tmp, "--restart") == 0)\r
+ else if(strcmp(&Tmp[1], "-restart") == 0)\r
{\r
}\r
- else if(strcmp(Tmp, "--protect") == 0)\r
+ else if(strcmp(&Tmp[1], "-protect") == 0)\r
{\r
}\r
- else if(strcmp(Tmp, "--protect-high") == 0)\r
+ else if(strcmp(&Tmp[1], "-protect-high") == 0)\r
{\r
}\r
- else if(strcmp(Tmp, "--protect-medium") == 0)\r
+ else if(strcmp(&Tmp[1], "-protect-medium") == 0)\r
{\r
}\r
- else if(strcmp(Tmp, "--protect-low") == 0)\r
+ else if(strcmp(&Tmp[1], "-protect-low") == 0)\r
{\r
}\r
#endif\r
else if((strcmp(&Tmp[1], "u8n") == 0) || (strcmp(&Tmp[1], "-utf8name") == 0))\r
*CmdOption |= OPT_UTF8N_NAME;\r
// ソフトウェア自動更新\r
- else if(strcmp(Tmp, "--software-update") == 0)\r
+ else if(strcmp(&Tmp[1], "-software-update") == 0)\r
{\r
if((Str = GetToken(Str, Tmp)) == NULL)\r
{\r
Ret = -1;\r
}\r
}\r
- else if(strcmp(Tmp, "--software-cleanup") == 0)\r
+ else if(strcmp(&Tmp[1], "-software-cleanup") == 0)\r
{\r
if((Str = GetToken(Str, Tmp)) == NULL)\r
{\r
InQuote = 0;\r
while(*Str != NUL)\r
{\r
- if(*Str == 0x22)\r
+ if(*Str == '\"')\r
InQuote = !InQuote;\r
else\r
{\r
return(ToolWinHeight);\r
}\r
\r
+// ソフトウェア自動更新\r
+void UpdateSoftware(int NoError, int NoConfirm)\r
+{\r
+ DWORD Version;\r
+ char VersionString[32];\r
+ char Tmp[FMAX_PATH+1];\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
+ if(Version > RELEASE_VERSION_NUM)\r
+ {\r
+ sprintf(Tmp, MSGJPN362, VER_STR, VersionString);\r
+ if(NoConfirm == YES || MessageBox(GetMainHwnd(), Tmp, "FFFTP", MB_YESNO) == IDYES)\r
+ {\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
+ }\r
+ else if(NoError == NO)\r
+ MessageBox(GetMainHwnd(), MSGJPN364, "FFFTP", MB_OK);\r
+ }\r
+ else if(NoError == NO)\r
+ MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);\r
+ }\r
+}\r
+\r
#define MSGJPN003 _Tu8("\r\nReconnect.\r\n", "\r\nReconnect.\r\n")\r
#define MSGJPN004 _Tu8("Disconnect.", "Disconnect.")\r
#define MSGJPN005 _Tu8("Connection was killed.", "Connection was killed.")\r
-#define MSGJPN006 _Tu8("Can't login to Firewall.", "Can't login to Firewall.")\r
-#define MSGJPN007 _Tu8("Can't connect to host %s.", "Can't connect to host %s.")\r
-#define MSGJPN008 _Tu8("Can't login.", "Can't login.")\r
-#define MSGJPN009 _Tu8("Can't connect.", "Can't connect.")\r
+#define MSGJPN006 _Tu8("Cannnot login to Firewall.", "Cannnot login to Firewall.")\r
+#define MSGJPN007 _Tu8("Cannnot connect to host %s.", "Cannnot connect to host %s.")\r
+#define MSGJPN008 _Tu8("Cannnot login.", "Cannnot login.")\r
+#define MSGJPN009 _Tu8("Cannnot connect.", "Cannnot connect.")\r
#define MSGJPN010 _Tu8("Firewall host not specified.", "Firewall host not specified.")\r
#define MSGJPN011 _Tu8("Host not specified.", "Host not specified.")\r
#define MSGJPN012 _Tu8("MD5 used.", "MD5 used.")\r
#define MSGJPN013 _Tu8("SHA-1 used.", "SHA-1 used.")\r
#define MSGJPN014 _Tu8("MD4(S/KEY) used.", "MD4(S/KEY) used.")\r
-#define MSGJPN015 _Tu8("Can't process One-time Password.", "Can't process One-time Password.")\r
+#define MSGJPN015 _Tu8("Cannnot process One-time Password.", "Cannnot process One-time Password.")\r
#define MSGJPN016 _Tu8("Searching host %s. (%s)", "Searching host %s. (%s)")\r
#define MSGJPN017 _Tu8("Connecting %sto host %s (%s (%d)). (%s)", "Connecting %sto host %s (%s (%d)). (%s)")\r
#define MSGJPN018 _Tu8("Connecting %sto host %s (%d). (%s)", "Connecting %sto host %s (%d). (%s)")\r
#define MSGJPN020 _Tu8("Connecting %sto host %s (%d). (%s)", "Connecting %sto host %s (%d). (%s)")\r
#define MSGJPN021 _Tu8("SOCKS server %s not found. (%s)", "SOCKS server %s not found. (%s)")\r
#define MSGJPN022 _Tu8("Connecting to SOCKS server %s (%d). (%s)", "Connecting to SOCKS server %s (%d). (%s)")\r
-#define MSGJPN023 _Tu8("Can't connect to SOCKS server. (Err=%d) (%s)", "Can't connect to SOCKS server. (Err=%d) (%s)")\r
-#define MSGJPN024 _Tu8("Can't connect to SOCKS server. (Err=%d) (%s)", "Can't connect to SOCKS server. (Err=%d) (%s)")\r
+#define MSGJPN023 _Tu8("Cannnot connect to SOCKS server. (Err=%d) (%s)", "Cannnot connect to SOCKS server. (Err=%d) (%s)")\r
+#define MSGJPN024 _Tu8("Cannnot connect to SOCKS server. (Err=%d) (%s)", "Cannnot connect to SOCKS server. (Err=%d) (%s)")\r
#define MSGJPN025 _Tu8("Connected. (%s)", "Connected. (%s)")\r
-#define MSGJPN026 _Tu8("Can't connected. (%s)", "Can't connected. (%s)")\r
-#define MSGJPN027 _Tu8("Can't create socket. (%s)", "Can't create socket. (%s)")\r
-#define MSGJPN028 _Tu8("Can't connect to SOCKS server. (Err=%d) (%s)", "Can't connect to SOCKS server. (Err=%d) (%s)")\r
-#define MSGJPN029 _Tu8("Can't connect to SOCKS server. (Err=%d) (%s)", "Can't connect to SOCKS server. (Err=%d) (%s)")\r
-#define MSGJPN030 _Tu8("Can't create listen socket. (%s)", "Can't create listen socket. (%s)")\r
+#define MSGJPN026 _Tu8("Cannnot connected. (%s)", "Cannnot connected. (%s)")\r
+#define MSGJPN027 _Tu8("Cannnot create socket. (%s)", "Cannnot create socket. (%s)")\r
+#define MSGJPN028 _Tu8("Cannnot connect to SOCKS server. (Err=%d) (%s)", "Cannnot connect to SOCKS server. (Err=%d) (%s)")\r
+#define MSGJPN029 _Tu8("Cannnot connect to SOCKS server. (Err=%d) (%s)", "Cannnot connect to SOCKS server. (Err=%d) (%s)")\r
+#define MSGJPN030 _Tu8("Cannnot create listen socket. (%s)", "Cannnot create listen socket. (%s)")\r
#define MSGJPN031 _Tu8("PORT command not accepted. (%s)", "PORT command not accepted. (%s)")\r
#define MSGJPN032 _Tu8("Connection is cancelled by user.", "Connection is cancelled by user.")\r
-#define MSGJPN033 _Tu8("Can't send SOCKS command. (Cmd = %04X)", "Can't send SOCKS command. (Cmd = %04X)")\r
-#define MSGJPN034 _Tu8("Can't receive SOCKS5 reply.", "Can't receive SOCKS5 reply.")\r
-#define MSGJPN035 _Tu8("Can't receive SOCKS4 reply.", "Can't receive SOCKS4 reply.")\r
+#define MSGJPN033 _Tu8("Cannnot send SOCKS command. (Cmd = %04X)", "Cannnot send SOCKS command. (Cmd = %04X)")\r
+#define MSGJPN034 _Tu8("Cannnot receive SOCKS5 reply.", "Cannnot receive SOCKS5 reply.")\r
+#define MSGJPN035 _Tu8("Cannnot receive SOCKS4 reply.", "Cannnot receive SOCKS4 reply.")\r
#define MSGJPN036 _Tu8("SOCKS certification method not match.", "SOCKS certification method not match.")\r
#define MSGJPN037 _Tu8("Certification failed by SOCKS server.", "Certification failed by SOCKS server.")\r
#define MSGJPN038 _Tu8("Name", "Name")\r
#define MSGJPN045 _Tu8("Ext", "Ext")\r
#define MSGJPN046 _Tu8("Permissions", "Permissions")\r
#define MSGJPN047 _Tu8("Owner", "Owner")\r
-#define MSGJPN048 _Tu8("Can't read temporary file.", "Can't read temporary file.")\r
+#define MSGJPN048 _Tu8("Cannnot read temporary file.", "Cannnot read temporary file.")\r
#define MSGJPN049 _Tu8("Failed to getting file list.", "Failed to getting file list.")\r
#define MSGJPN050 _Tu8("Find (Local)", "Find (Local)")\r
#define MSGJPN051 _Tu8("Find (Host)", "Find (Host)")\r
#define MSGJPN082 _Tu8("New Folder", "New Folder")\r
#define MSGJPN083 _Tu8("Delete Folder", "Delete Folder")\r
#define MSGJPN084 _Tu8("Delete File", "Delete File")\r
-#define MSGJPN085 _Tu8("Can't download named %s.", "Can't download named %s.")\r
+#define MSGJPN085 _Tu8("Cannnot download named %s.", "Cannnot download named %s.")\r
#define MSGJPN086 _Tu8("Download", "Download")\r
#define MSGJPN087 _Tu8("File List", "File List")\r
#define MSGJPN088 _Tu8("Skip", "Skip")\r
#define MSGJPN090 _Tu8("Command not accepted.", "Command not accepted.")\r
#define MSGJPN091 _Tu8("for download ", "for download ")\r
#define MSGJPN092 _Tu8("Command not accepted.", "Command not accepted.")\r
-#define MSGJPN093 _Tu8("Can't get address.", "Can't get address.")\r
+#define MSGJPN093 _Tu8("Cannnot get address.", "Cannnot get address.")\r
#define MSGJPN094 _Tu8("Time out error.", "Time out error.")\r
-#define MSGJPN095 _Tu8("Can't create file %s.", "Can't create file %s.")\r
+#define MSGJPN095 _Tu8("Cannnot create file %s.", "Cannnot create file %s.")\r
#define MSGJPN096 _Tu8("Disk full", "Disk full")\r
#define MSGJPN097 _Tu8("Cancel to getting file list", "Cancel to getting file list")\r
#define MSGJPN098 _Tu8("File List", "File List")\r
#define MSGJPN102 _Tu8("Download successful. (%d Sec. %d B/S).", "Download successful. (%d Sec. %d B/S).")\r
#define MSGJPN103 _Tu8("Download successful. (%d Bytes)", "Download successful. (%d Bytes)")\r
#define MSGJPN104 _Tu8("Upload", "Upload")\r
-#define MSGJPN105 _Tu8("Can't read file %s.", "Can't read file %s.")\r
+#define MSGJPN105 _Tu8("Cannnot read file %s.", "Cannnot read file %s.")\r
#define MSGJPN106 _Tu8("Skip", "Skip")\r
#define MSGJPN107 _Tu8("File %s is skipped.", "File %s is skipped.")\r
#define MSGJPN108 _Tu8("Command not accepted.", "Command not accepted.")\r
#define MSGJPN109 _Tu8("for upload ", "for upload ")\r
#define MSGJPN110 _Tu8("Command not accepted.", "Command not accepted.")\r
-#define MSGJPN111 _Tu8("Can't get address.", "Can't get address.")\r
-#define MSGJPN112 _Tu8("Can't open file %s.", "Can't open file %s.")\r
+#define MSGJPN111 _Tu8("Cannnot get address.", "Cannnot get address.")\r
+#define MSGJPN112 _Tu8("Cannnot open file %s.", "Cannnot open file %s.")\r
#define MSGJPN113 _Tu8("Upload cancelled. (%d Sec. %d B/S).", "Upload cancelled. (%d Sec. %d B/S).")\r
#define MSGJPN114 _Tu8("Upload cancelled.", "Upload cancelled.")\r
#define MSGJPN115 _Tu8("Upload successful. (%d Sec. %d B/S).", "Upload successful. (%d Sec. %d B/S).")\r
#define MSGJPN142 _Tu8("IRMX", "IRMX")\r
#define MSGJPN143 _Tu8("ACOS-4", "ACOS-4")\r
#define MSGJPN144 _Tu8("Stratus", "Stratus")\r
-#define MSGJPN145 _Tu8("Can't change folder.", "Can't change folder.")\r
-#define MSGJPN146 _Tu8("Can't create folder.", "Can't create folder.")\r
-#define MSGJPN147 _Tu8("Can't delete folder.", "Can't delete folder.")\r
-#define MSGJPN148 _Tu8("Can't delete folder.", "Can't delete folder.")\r
-#define MSGJPN149 _Tu8("Can't delete file.", "Can't delete file.")\r
-#define MSGJPN150 _Tu8("Can't delete file.", "Can't delete file.")\r
-#define MSGJPN151 _Tu8("Can't rename file.", "Can't rename file.")\r
+#define MSGJPN145 _Tu8("Cannnot change folder.", "Cannnot change folder.")\r
+#define MSGJPN146 _Tu8("Cannnot create folder.", "Cannnot create folder.")\r
+#define MSGJPN147 _Tu8("Cannnot delete folder.", "Cannnot delete folder.")\r
+#define MSGJPN148 _Tu8("Cannnot delete folder.", "Cannnot delete folder.")\r
+#define MSGJPN149 _Tu8("Cannnot delete file.", "Cannnot delete file.")\r
+#define MSGJPN150 _Tu8("Cannnot delete file.", "Cannnot delete file.")\r
+#define MSGJPN151 _Tu8("Cannnot rename file.", "Cannnot rename file.")\r
#define MSGJPN152 _Tu8("Temporary folder '%s' not found.", "Temporary folder '%s' not found.")\r
#define MSGJPN153 _Tu8("Folder '%s' is used.", "Folder '%s' is used.")\r
#define MSGJPN154 _Tu8("Connect", "Connect")\r
#define MSGJPN219 _Tu8("Wave file", "Wave file")\r
#define MSGJPN220 _Tu8("Disconencting dialup.", "Disconencting dialup.")\r
#define MSGJPN221 _Tu8("Connecting dialup.", "Connecting dialup.")\r
-#define MSGJPN222 _Tu8("Can't use dialup. (RasDialDlg)", "Can't use dialup. (RasDialDlg)")\r
+#define MSGJPN222 _Tu8("Cannnot use dialup. (RasDialDlg)", "Cannnot use dialup. (RasDialDlg)")\r
#define MSGJPN223 _Tu8("Connecting to %s...", "Connecting to %s...")\r
#define MSGJPN224 _Tu8("Unknown error", "Unknown error")\r
#define MSGJPN225 _Tu8("Dialup connection", "Dialup connection")\r
#define MSGJPN237 _Tu8("Connecting...", "Connecting...")\r
#define MSGJPN238 _Tu8("Connecting to %s", "Connecting to %s")\r
#define MSGJPN239 _Tu8("# Do not edit this file.\n", "# Do not edit this file.\n")\r
-#define MSGJPN240 _Tu8("Can't save to INI file", "Can't save to INI file")\r
+#define MSGJPN240 _Tu8("Cannnot save to INI file", "Cannnot save to INI file")\r
#define MSGJPN241 _Tu8("Failed transmit cause of timeout", "Failed transmit cause of timeout")\r
#define MSGJPN242 _Tu8("Failed receive cause of timeout", "Failed receive cause of timeout")\r
#define MSGJPN243 _Tu8("Failed receive cause of timeout", "Failed receive cause of timeout")\r
#define MSGJPN276 _Tu8("WS_FTP.INI\0ws_ftp.ini\0All file(*.*)\0*\0", "WS_FTP.INI\0ws_ftp.ini\0All file(*.*)\0*\0")\r
#define MSGJPN277 _Tu8("Wave file\0*.wav\0All file\0*\0", "Wave file\0*.wav\0All file\0*\0")\r
#define MSGJPN278 _Tu8("Reason: %s", "Reason: %s")\r
-#define MSGJPN279 _Tu8("Can't get Listen Socket", "Can't get Listen Socket")\r
-#define MSGJPN280 _Tu8("Can't get Data Socket", "Can't get Data Socket")\r
-#define MSGJPN281 _Tu8("Can't connect with PASV mode", "Can't connect with PASV mode")\r
+#define MSGJPN279 _Tu8("Cannnot get Listen Socket", "Cannnot get Listen Socket")\r
+#define MSGJPN280 _Tu8("Cannnot get Data Socket", "Cannnot get Data Socket")\r
+#define MSGJPN281 _Tu8("Cannnot connect with PASV mode", "Cannnot connect with PASV mode")\r
#define MSGJPN282 _Tu8("INI filename is not specified", "INI filename is not specified")\r
#define MSGJPN283 _Tu8("INI file: ", "INI file: ")\r
#define MSGJPN284 _Tu8("http://sourceforge.jp/projects/ffftp/", "http://sourceforge.jp/projects/ffftp/")\r
#define MSGJPN358 _Tu8("Failed to export the settings.\nPlease change saving path or format.", "Failed to export the settings.\nPlease change saving path or format.")\r
#define MSGJPN359 _Tu8("Software update has been completed.", "Software update has been completed.")\r
#define MSGJPN360 _Tu8("Failed to update the software.\nPlease get the latest version from our web site and update it manually.", "Failed to update the software.\nPlease get the latest version from our web site and update it manually.")\r
+#define MSGJPN361 _Tu8("Updates", "Updates")\r
+#define MSGJPN362 _Tu8("There is a new version.\n\nCurrent version: %s\nNew version: %s\n\nIt takes a few minutes to download the updates.\nDo you want to update now?\n", "There is a new version.\n\nCurrent version: %s\nNew version: %s\n\nIt takes a few minutes to download the updates.\nDo you want to update now?\n")\r
+#define MSGJPN363 _Tu8("Failed to update the software.\nCannot connect to the server or the data is corrupted.", "Failed to update the software.\nCannot connect to the server or the data is corrupted.")\r
+#define MSGJPN364 _Tu8("Your version is already up-to-date.", "Your version is already up-to-date.")\r
+#define MSGJPN365 _Tu8("Preparing for the software update has been completed.\nIt will be applied on exit.", "Preparing for the software update has been completed.\nIt will be applied on exit.")\r
#if defined(HAVE_TANDEM)\r
#define MSGJPN2000 _Tu8("NonStop Server", "NonStop Server")\r
#define MSGJPN2001 _Tu8("OSS<->GUARDIAN Switch(&O)", "OSS<->GUARDIAN Switch(&O)")\r
#define MSGJPN297 _Tu8("%s は不正なファイル名です.\r\nこのファイルはダウンロードされません.", "%s \xE3\x81\xAF\xE4\xB8\x8D\xE6\xAD\xA3\xE3\x81\xAA\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8D\xE3\x81\xA7\xE3\x81\x99.\r\n\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xAF\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93.")\r
#define MSGJPN298 _Tu8("OLEの初期化に失敗しました.", "OLE\xE3\x81\xAE\xE5\x88\x9D\xE6\x9C\x9F\xE5\x8C\x96\xE3\x81\xAB\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.")\r
#define MSGJPN299 _Tu8("コマンドラインにマスターパスワードが指定されていません", "\xE3\x82\xB3\xE3\x83\x9E\xE3\x83\xB3\xE3\x83\x89\xE3\x83\xA9\xE3\x82\xA4\xE3\x83\xB3\xE3\x81\xAB\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x8C\xE6\x8C\x87\xE5\xAE\x9A\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93")\r
-#define MSGJPN300 _Tu8("デフォルトのマスターパスワードが使われます.\r\nマルウェアの攻撃を防ぐため,固有のマスターパスワードを設定することをおすすめします", "\xE3\x83\x87\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x88\xE3\x81\xAE\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x8C\xE4\xBD\xBF\xE3\x82\x8F\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x99.\r\n\xE3\x83\x9E\xE3\x83\xAB\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x94\xBB\xE6\x92\x83\xE3\x82\x92\xE9\x98\xB2\xE3\x81\x90\xE3\x81\x9F\xE3\x82\x81\xEF\xBC\x8C\xE5\x9B\xBA\xE6\x9C\x89\xE3\x81\xAE\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x99\xE3\x82\x8B\xE3\x81\x93\xE3\x81\xA8\xE3\x82\x92\xE3\x81\x8A\xE3\x81\x99\xE3\x81\x99\xE3\x82\x81\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99")\r
+#define MSGJPN300 _Tu8("デフォルトのマスターパスワードが使われます.\r\nマルウェアの攻撃を防ぐため,固有のマスターパスワードを設定することをおすすめします", "\xE3\x83\x87\xE3\x83\x95\xE3\x82\xA9\xE3\x83\xAB\xE3\x83\x88\xE3\x81\xAE\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x8C\xE4\xBD\xBF\xE3\x82\x8F\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x99.\r\n\xE3\x83\x9E\xE3\x83\xAB\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x94\xBB\xE6\x92\x83\xE3\x82\x92\xE9\x98\xB2\xE3\x81\x90\xE3\x81\x9F\xE3\x82\x81,\xE5\x9B\xBA\xE6\x9C\x89\xE3\x81\xAE\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x99\xE3\x82\x8B\xE3\x81\x93\xE3\x81\xA8\xE3\x82\x92\xE3\x81\x8A\xE3\x81\x99\xE3\x81\x99\xE3\x82\x81\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99")\r
#define MSGJPN301 _Tu8("マスターパスワードが設定と一致しません.安全のため設定の保存を行いません.", "\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x8C\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\xA8\xE4\xB8\x80\xE8\x87\xB4\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93.\xE5\xAE\x89\xE5\x85\xA8\xE3\x81\xAE\xE3\x81\x9F\xE3\x82\x81\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\xAE\xE4\xBF\x9D\xE5\xAD\x98\xE3\x82\x92\xE8\xA1\x8C\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93.")\r
-#define MSGJPN302 _Tu8("確認用データが壊れているため,マスターパスワードの正当性を確認できませんでした.", "\xE7\xA2\xBA\xE8\xAA\x8D\xE7\x94\xA8\xE3\x83\x87\xE3\x83\xBC\xE3\x82\xBF\xE3\x81\x8C\xE5\xA3\x8A\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x82\x8B\xE3\x81\x9F\xE3\x82\x81\xEF\xBC\x8C\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAE\xE6\xAD\xA3\xE5\xBD\x93\xE6\x80\xA7\xE3\x82\x92\xE7\xA2\xBA\xE8\xAA\x8D\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F.")\r
+#define MSGJPN302 _Tu8("確認用データが壊れているため,マスターパスワードの正当性を確認できませんでした.", "\xE7\xA2\xBA\xE8\xAA\x8D\xE7\x94\xA8\xE3\x83\x87\xE3\x83\xBC\xE3\x82\xBF\xE3\x81\x8C\xE5\xA3\x8A\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x82\x8B\xE3\x81\x9F\xE3\x82\x81,\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAE\xE6\xAD\xA3\xE5\xBD\x93\xE6\x80\xA7\xE3\x82\x92\xE7\xA2\xBA\xE8\xAA\x8D\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93\xE3\x81\xA7\xE3\x81\x97\xE3\x81\x9F.")\r
#define MSGJPN303 _Tu8("マスターパスワードを変更しました", "\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x82\x92\xE5\xA4\x89\xE6\x9B\xB4\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F")\r
#define MSGJPN304 _Tu8("指定されたマスターパスワードが登録されたものと一致しません.\r\n再度入力しますか?\r\n「いいえ」を選ぶと記憶されたFTPパスワードは利用できません.", "\xE6\x8C\x87\xE5\xAE\x9A\xE3\x81\x95\xE3\x82\x8C\xE3\x81\x9F\xE3\x83\x9E\xE3\x82\xB9\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\x8C\xE7\x99\xBB\xE9\x8C\xB2\xE3\x81\x95\xE3\x82\x8C\xE3\x81\x9F\xE3\x82\x82\xE3\x81\xAE\xE3\x81\xA8\xE4\xB8\x80\xE8\x87\xB4\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93.\r\n\xE5\x86\x8D\xE5\xBA\xA6\xE5\x85\xA5\xE5\x8A\x9B\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99\xE3\x81\x8B\xEF\xBC\x9F\r\n\xE3\x80\x8C\xE3\x81\x84\xE3\x81\x84\xE3\x81\x88\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE3\x81\xB6\xE3\x81\xA8\xE8\xA8\x98\xE6\x86\xB6\xE3\x81\x95\xE3\x82\x8C\xE3\x81\x9F\x46TP\xE3\x83\x91\xE3\x82\xB9\xE3\x83\xAF\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAF\xE5\x88\xA9\xE7\x94\xA8\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93.")\r
#define MSGJPN305 _Tu8("Shift_JIS", "Shift_JIS")\r
#define MSGJPN348 _Tu8("EUC", "EUC")\r
#define MSGJPN349 _Tu8("UTF-8", "UTF-8")\r
#define MSGJPN350 _Tu8("UTF-8 HFS+", "UTF-8 HFS+")\r
-#define MSGJPN351 _Tu8("新しいバージョンの設定が検出されました.\nこのバージョンでは一部の設定が正しく読み込まれない、またはこのバージョンで設定を上書きすると設定が変化する可能性があります.\nこのバージョン用に設定を上書きして保存するには「はい」を選択してください.\n設定をレジストリではなくINIファイルに保存するには「いいえ」を選択してください.\n読み取り専用で設定を読み込むには「キャンセル」を選択してください.", "\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xAE\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x8C\xE6\xA4\x9C\xE5\x87\xBA\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\n\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xA7\xE3\x81\xAF\xE4\xB8\x80\xE9\x83\xA8\xE3\x81\xAE\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x8C\xE6\xAD\xA3\xE3\x81\x97\xE3\x81\x8F\xE8\xAA\xAD\xE3\x81\xBF\xE8\xBE\xBC\xE3\x81\xBE\xE3\x82\x8C\xE3\x81\xAA\xE3\x81\x84\xE3\x80\x81\xE3\x81\xBE\xE3\x81\x9F\xE3\x81\xAF\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xA7\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE4\xB8\x8A\xE6\x9B\xB8\xE3\x81\x8D\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xA8\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x8C\xE5\xA4\x89\xE5\x8C\x96\xE3\x81\x99\xE3\x82\x8B\xE5\x8F\xAF\xE8\x83\xBD\xE6\x80\xA7\xE3\x81\x8C\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x99.\n\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE7\x94\xA8\xE3\x81\xAB\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE4\xB8\x8A\xE6\x9B\xB8\xE3\x81\x8D\xE3\x81\x97\xE3\x81\xA6\xE4\xBF\x9D\xE5\xAD\x98\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x81\xAF\xE3\x81\x84\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.\n\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE3\x83\xAC\xE3\x82\xB8\xE3\x82\xB9\xE3\x83\x88\xE3\x83\xAA\xE3\x81\xA7\xE3\x81\xAF\xE3\x81\xAA\xE3\x81\x8FINI\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xAB\xE4\xBF\x9D\xE5\xAD\x98\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x81\x84\xE3\x81\x84\xE3\x81\x88\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.\n\xE8\xAA\xAD\xE3\x81\xBF\xE5\x8F\x96\xE3\x82\x8A\xE5\xB0\x82\xE7\x94\xA8\xE3\x81\xA7\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE8\xAA\xAD\xE3\x81\xBF\xE8\xBE\xBC\xE3\x82\x80\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x82\xAD\xE3\x83\xA3\xE3\x83\xB3\xE3\x82\xBB\xE3\x83\xAB\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.")\r
+#define MSGJPN351 _Tu8("新しいバージョンの設定が検出されました.\nこのバージョンでは一部の設定が正しく読み込まれない,またはこのバージョンで設定を上書きすると設定が変化する可能性があります.\nこのバージョン用に設定を上書きして保存するには「はい」を選択してください.\n設定をレジストリではなくINIファイルに保存するには「いいえ」を選択してください.\n読み取り専用で設定を読み込むには「キャンセル」を選択してください.", "\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xAE\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x8C\xE6\xA4\x9C\xE5\x87\xBA\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\n\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xA7\xE3\x81\xAF\xE4\xB8\x80\xE9\x83\xA8\xE3\x81\xAE\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x8C\xE6\xAD\xA3\xE3\x81\x97\xE3\x81\x8F\xE8\xAA\xAD\xE3\x81\xBF\xE8\xBE\xBC\xE3\x81\xBE\xE3\x82\x8C\xE3\x81\xAA\xE3\x81\x84,\xE3\x81\xBE\xE3\x81\x9F\xE3\x81\xAF\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xA7\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE4\xB8\x8A\xE6\x9B\xB8\xE3\x81\x8D\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xA8\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\x8C\xE5\xA4\x89\xE5\x8C\x96\xE3\x81\x99\xE3\x82\x8B\xE5\x8F\xAF\xE8\x83\xBD\xE6\x80\xA7\xE3\x81\x8C\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x99.\n\xE3\x81\x93\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE7\x94\xA8\xE3\x81\xAB\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE4\xB8\x8A\xE6\x9B\xB8\xE3\x81\x8D\xE3\x81\x97\xE3\x81\xA6\xE4\xBF\x9D\xE5\xAD\x98\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x81\xAF\xE3\x81\x84\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.\n\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE3\x83\xAC\xE3\x82\xB8\xE3\x82\xB9\xE3\x83\x88\xE3\x83\xAA\xE3\x81\xA7\xE3\x81\xAF\xE3\x81\xAA\xE3\x81\x8FINI\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE3\x81\xAB\xE4\xBF\x9D\xE5\xAD\x98\xE3\x81\x99\xE3\x82\x8B\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x81\x84\xE3\x81\x84\xE3\x81\x88\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.\n\xE8\xAA\xAD\xE3\x81\xBF\xE5\x8F\x96\xE3\x82\x8A\xE5\xB0\x82\xE7\x94\xA8\xE3\x81\xA7\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x82\x92\xE8\xAA\xAD\xE3\x81\xBF\xE8\xBE\xBC\xE3\x82\x80\xE3\x81\xAB\xE3\x81\xAF\xE3\x80\x8C\xE3\x82\xAD\xE3\x83\xA3\xE3\x83\xB3\xE3\x82\xBB\xE3\x83\xAB\xE3\x80\x8D\xE3\x82\x92\xE9\x81\xB8\xE6\x8A\x9E\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.")\r
#define MSGJPN352 _Tu8("警告: 暗号化されていません", "\xE8\xAD\xA6\xE5\x91\x8A: \xE6\x9A\x97\xE5\x8F\xB7\xE5\x8C\x96\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x9B\xE3\x82\x93")\r
#define MSGJPN353 _Tu8("暗号化されています: FTPES", "\xE6\x9A\x97\xE5\x8F\xB7\xE5\x8C\x96\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99: FTPES")\r
#define MSGJPN354 _Tu8("暗号化されています: FTPIS", "\xE6\x9A\x97\xE5\x8F\xB7\xE5\x8C\x96\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99: FTPIS")\r
#define MSGJPN358 _Tu8("設定のエクスポートに失敗しました.\n保存する場所や形式を変更してください.", "\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\xAE\xE3\x82\xA8\xE3\x82\xAF\xE3\x82\xB9\xE3\x83\x9D\xE3\x83\xBC\xE3\x83\x88\xE3\x81\xAB\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\n\xE4\xBF\x9D\xE5\xAD\x98\xE3\x81\x99\xE3\x82\x8B\xE5\xA0\xB4\xE6\x89\x80\xE3\x82\x84\xE5\xBD\xA2\xE5\xBC\x8F\xE3\x82\x92\xE5\xA4\x89\xE6\x9B\xB4\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.")\r
#define MSGJPN359 _Tu8("ソフトウェアの更新が完了しました.", "\xE3\x82\xBD\xE3\x83\x95\xE3\x83\x88\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\x8C\xE5\xAE\x8C\xE4\xBA\x86\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.")\r
#define MSGJPN360 _Tu8("ソフトウェアの更新に失敗しました.\nWebサイトから最新版を入手して手動で更新してください.", "\xE3\x82\xBD\xE3\x83\x95\xE3\x83\x88\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\xAB\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\nWeb\xE3\x82\xB5\xE3\x82\xA4\xE3\x83\x88\xE3\x81\x8B\xE3\x82\x89\xE6\x9C\x80\xE6\x96\xB0\xE7\x89\x88\xE3\x82\x92\xE5\x85\xA5\xE6\x89\x8B\xE3\x81\x97\xE3\x81\xA6\xE6\x89\x8B\xE5\x8B\x95\xE3\x81\xA7\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x8F\xE3\x81\xA0\xE3\x81\x95\xE3\x81\x84.")\r
+#define MSGJPN361 _Tu8("更新", "\xE6\x9B\xB4\xE6\x96\xB0")\r
+#define MSGJPN362 _Tu8("新しいバージョンがあります.\n\n現在のバージョン: %s\n新しいバージョン: %s\n\n更新のダウンロードには数分間かかります.\n今すぐ更新しますか.", "\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\x8C\xE3\x81\x82\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x99.\n\n\xE7\x8F\xBE\xE5\x9C\xA8\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3: %s\n\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3: %s\n\n\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\xAE\xE3\x83\x80\xE3\x82\xA6\xE3\x83\xB3\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x89\xE3\x81\xAB\xE3\x81\xAF\xE6\x95\xB0\xE5\x88\x86\xE9\x96\x93\xE3\x81\x8B\xE3\x81\x8B\xE3\x82\x8A\xE3\x81\xBE\xE3\x81\x99.\n\xE4\xBB\x8A\xE3\x81\x99\xE3\x81\x90\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x99\xE3\x81\x8B.")\r
+#define MSGJPN363 _Tu8("ソフトウェアの更新に失敗しました.\nサーバーに接続できないかデータが破損しています.", "\xE3\x82\xBD\xE3\x83\x95\xE3\x83\x88\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\xAB\xE5\xA4\xB1\xE6\x95\x97\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\n\xE3\x82\xB5\xE3\x83\xBC\xE3\x83\x90\xE3\x83\xBC\xE3\x81\xAB\xE6\x8E\xA5\xE7\xB6\x9A\xE3\x81\xA7\xE3\x81\x8D\xE3\x81\xAA\xE3\x81\x84\xE3\x81\x8B\xE3\x83\x87\xE3\x83\xBC\xE3\x82\xBF\xE3\x81\x8C\xE7\xA0\xB4\xE6\x90\x8D\xE3\x81\x97\xE3\x81\xA6\xE3\x81\x84\xE3\x81\xBE\xE3\x81\x99.")\r
+#define MSGJPN364 _Tu8("お使いのバージョンはすでに最新です.", "\xE3\x81\x8A\xE4\xBD\xBF\xE3\x81\x84\xE3\x81\xAE\xE3\x83\x90\xE3\x83\xBC\xE3\x82\xB8\xE3\x83\xA7\xE3\x83\xB3\xE3\x81\xAF\xE3\x81\x99\xE3\x81\xA7\xE3\x81\xAB\xE6\x9C\x80\xE6\x96\xB0\xE3\x81\xA7\xE3\x81\x99.")\r
+#define MSGJPN365 _Tu8("ソフトウェアの更新の準備が完了しました.\nFFFTPの終了時に更新が適用されます.", "\xE3\x82\xBD\xE3\x83\x95\xE3\x83\x88\xE3\x82\xA6\xE3\x82\xA7\xE3\x82\xA2\xE3\x81\xAE\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\xAE\xE6\xBA\x96\xE5\x82\x99\xE3\x81\x8C\xE5\xAE\x8C\xE4\xBA\x86\xE3\x81\x97\xE3\x81\xBE\xE3\x81\x97\xE3\x81\x9F.\nFFFTP\xE3\x81\xAE\xE7\xB5\x82\xE4\xBA\x86\xE6\x99\x82\xE3\x81\xAB\xE6\x9B\xB4\xE6\x96\xB0\xE3\x81\x8C\xE9\x81\xA9\xE7\x94\xA8\xE3\x81\x95\xE3\x82\x8C\xE3\x81\xBE\xE3\x81\x99.")\r
#if defined(HAVE_TANDEM)\r
#define MSGJPN2000 _Tu8("NonStop Server", "NonStop Server")\r
#define MSGJPN2001 _Tu8("OSS<->GUARDIAN 切り替え(&O)", "OSS<->GUARDIAN \xE5\x88\x87\xE3\x82\x8A\xE6\x9B\xBF\xE3\x81\x88(&O)")\r
\r
while(*Str != NUL)\r
{\r
- if((*Str != 0x22) && (*Str != '\n'))\r
+ if((*Str != '\"') && (*Str != '\n'))\r
*Put++ = *Str;\r
Str++;\r
}\r
static INT_PTR CALLBACK SoundSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
static INT_PTR CALLBACK MiscSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
static INT_PTR CALLBACK SortSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+// ソフトウェア自動更新\r
+static INT_PTR CALLBACK UpdatesSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
// hostman.cで使用\r
//static int GetDecimalText(HWND hDlg, int Ctrl);\r
//static void SetDecimalText(HWND hDlg, int Ctrl, int Num);\r
extern int AutoRefreshFileList;\r
// 古い処理内容を消去\r
extern int RemoveOldLog;\r
+// ソフトウェア自動更新\r
+extern int AutoCheckForUpdates;\r
+extern int AutoApplyUpdates;\r
+extern int AutoCheckForUptatesInterval;\r
\r
\r
/*----- オプションのプロパティシート ------------------------------------------\r
{\r
// UTF-8対応\r
// PROPSHEETPAGE psp[12];\r
- PROPSHEETPAGE psp[14];\r
+ PROPSHEETPAGE psp[15];\r
PROPSHEETHEADER psh;\r
\r
// 変数が未初期化のバグ修正\r
psp[13].dwSize = sizeof(PROPSHEETPAGE);\r
psp[13].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
psp[13].hInstance = GetFtpInst();\r
- psp[13].pszTemplate = MAKEINTRESOURCE(opt_misc_dlg);\r
+ psp[13].pszTemplate = MAKEINTRESOURCE(opt_updates_dlg);\r
psp[13].pszIcon = NULL;\r
- psp[13].pfnDlgProc = MiscSettingProc;\r
- psp[13].pszTitle = MSGJPN197;\r
+ psp[13].pfnDlgProc = UpdatesSettingProc;\r
+ psp[13].pszTitle = MSGJPN361;\r
psp[13].lParam = 0;\r
psp[13].pfnCallback = NULL;\r
\r
+ psp[14].dwSize = sizeof(PROPSHEETPAGE);\r
+ psp[14].dwFlags = PSP_USETITLE | PSP_HASHELP;\r
+ psp[14].hInstance = GetFtpInst();\r
+ psp[14].pszTemplate = MAKEINTRESOURCE(opt_misc_dlg);\r
+ psp[14].pszIcon = NULL;\r
+ psp[14].pfnDlgProc = MiscSettingProc;\r
+ psp[14].pszTitle = MSGJPN197;\r
+ psp[14].lParam = 0;\r
+ psp[14].pfnCallback = NULL;\r
+\r
psh.dwSize = sizeof(PROPSHEETHEADER);\r
psh.dwFlags = PSH_HASHELP | PSH_NOAPPLYNOW | PSH_PROPSHEETPAGE;\r
psh.hwndParent = GetMainHwnd();\r
}\r
\r
\r
+// ソフトウェア自動更新\r
+static INT_PTR CALLBACK UpdatesSettingProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+{\r
+ NMHDR *pnmhdr;\r
+\r
+ switch (message)\r
+ {\r
+ case WM_INITDIALOG :\r
+ SendDlgItemMessage(hDlg, UPDATES_AUTO_CHECK, BM_SETCHECK, AutoCheckForUpdates, 0);\r
+ SendDlgItemMessage(hDlg, UPDATES_AUTO_APPLY, BM_SETCHECK, AutoApplyUpdates, 0);\r
+ SendDlgItemMessage(hDlg, UPDATES_INTERVAL, EM_LIMITTEXT, (WPARAM)3, 0);\r
+ SetDecimalText(hDlg, UPDATES_INTERVAL, AutoCheckForUptatesInterval);\r
+ SendDlgItemMessage(hDlg, UPDATES_INTERVAL_SPN, UDM_SETRANGE, 0, (LPARAM)MAKELONG(999, 0));\r
+ if(AutoCheckForUpdates == YES)\r
+ {\r
+ EnableWindow(GetDlgItem(hDlg, UPDATES_AUTO_APPLY), TRUE);\r
+ EnableWindow(GetDlgItem(hDlg, UPDATES_INTERVAL), TRUE);\r
+ EnableWindow(GetDlgItem(hDlg, UPDATES_INTERVAL_SPN), TRUE);\r
+ }\r
+ else\r
+ {\r
+ EnableWindow(GetDlgItem(hDlg, UPDATES_AUTO_APPLY), FALSE);\r
+ EnableWindow(GetDlgItem(hDlg, UPDATES_INTERVAL), FALSE);\r
+ EnableWindow(GetDlgItem(hDlg, UPDATES_INTERVAL_SPN), FALSE);\r
+ }\r
+ return(TRUE);\r
+\r
+ case WM_NOTIFY:\r
+ pnmhdr = (NMHDR FAR *)lParam;\r
+ switch(pnmhdr->code)\r
+ {\r
+ case PSN_APPLY :\r
+ AutoCheckForUpdates = SendDlgItemMessage(hDlg, UPDATES_AUTO_CHECK, BM_GETCHECK, 0, 0);\r
+ AutoApplyUpdates = SendDlgItemMessage(hDlg, UPDATES_AUTO_APPLY, BM_GETCHECK, 0, 0);\r
+ AutoCheckForUptatesInterval = GetDecimalText(hDlg, UPDATES_INTERVAL);\r
+ CheckRange2(&AutoCheckForUptatesInterval, 999, 0);\r
+ break;\r
+\r
+ case PSN_RESET :\r
+ break;\r
+\r
+ case PSN_HELP :\r
+// hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000069);\r
+ break;\r
+ }\r
+ break;\r
+\r
+ case WM_COMMAND :\r
+ switch(GET_WM_COMMAND_ID(wParam, lParam))\r
+ {\r
+ case UPDATES_AUTO_CHECK :\r
+ if(SendDlgItemMessage(hDlg, UPDATES_AUTO_CHECK, BM_GETCHECK, 0, 0) == 1)\r
+ {\r
+ EnableWindow(GetDlgItem(hDlg, UPDATES_AUTO_APPLY), TRUE);\r
+ EnableWindow(GetDlgItem(hDlg, UPDATES_INTERVAL), TRUE);\r
+ EnableWindow(GetDlgItem(hDlg, UPDATES_INTERVAL_SPN), TRUE);\r
+ }\r
+ else\r
+ {\r
+ EnableWindow(GetDlgItem(hDlg, UPDATES_AUTO_APPLY), FALSE);\r
+ EnableWindow(GetDlgItem(hDlg, UPDATES_INTERVAL), FALSE);\r
+ EnableWindow(GetDlgItem(hDlg, UPDATES_INTERVAL_SPN), FALSE);\r
+ }\r
+ break;\r
+ }\r
+ return(TRUE);\r
+ }\r
+ return(FALSE);\r
+}\r
+\r
/*----- ダイアログのコントロールから10進数を取得 ----------------------------\r
*\r
* Parameter\r
SFTP_InitializeIOBuffer(&p->DataInBuffer, 1048576);\r
SFTP_InitializeIOBuffer(&p->DataOutBuffer, 1048576);\r
memset(&p->FilePosition, 0, sizeof(LARGE_INTEGER));\r
- CreateThread(NULL, 0, SFTP_ThreadProc, NULL, 0, &p->ThreadId);\r
+ CloseHandle(CreateThread(NULL, 0, SFTP_ThreadProc, NULL, 0, &p->ThreadId));\r
}\r
return p;\r
}\r
extern int RemoveOldLog;\r
// バージョン確認\r
extern int ReadOnlySettings;\r
+// ソフトウェア自動更新\r
+extern int AutoCheckForUpdates;\r
+extern int AutoApplyUpdates;\r
+extern int AutoCheckForUptatesInterval;\r
+extern time_t LastAutoCheckForUpdates;\r
\r
/*----- マスタパスワードの設定 ----------------------------------------------\r
*\r
WriteIntValueToReg(hKey4, "ListRefresh", AutoRefreshFileList);\r
// 古い処理内容を消去\r
WriteIntValueToReg(hKey4, "OldLog", RemoveOldLog);\r
+ // ソフトウェア自動更新\r
+ WriteIntValueToReg(hKey4, "UpdCheck", AutoCheckForUpdates);\r
+ WriteIntValueToReg(hKey4, "UpdApply", AutoApplyUpdates);\r
+ WriteIntValueToReg(hKey4, "UpdInterval", AutoCheckForUptatesInterval);\r
+ WriteBinaryToReg(hKey4, "UpdLastCheck", &LastAutoCheckForUpdates, sizeof(LastAutoCheckForUpdates));\r
}\r
CloseSubKey(hKey4);\r
}\r
ReadIntValueFromReg(hKey4, "ListRefresh", &AutoRefreshFileList);\r
// 古い処理内容を消去\r
ReadIntValueFromReg(hKey4, "OldLog", &RemoveOldLog);\r
+ // ソフトウェア自動更新\r
+ ReadIntValueFromReg(hKey4, "UpdCheck", &AutoCheckForUpdates);\r
+ ReadIntValueFromReg(hKey4, "UpdApply", &AutoApplyUpdates);\r
+ ReadIntValueFromReg(hKey4, "UpdInterval", &AutoCheckForUptatesInterval);\r
+ ReadBinaryFromReg(hKey4, "UpdLastCheck", &LastAutoCheckForUpdates, sizeof(LastAutoCheckForUpdates));\r
\r
CloseSubKey(hKey4);\r
}\r
{\r
if(ShellExecute(NULL, "open", "regedit", Tmp, NULL, SW_SHOW) <= (HINSTANCE)32)\r
{\r
- MessageBox(NULL, MSGJPN285, "FFFTP", MB_OK);\r
+ MessageBox(GetMainHwnd(), MSGJPN285, "FFFTP", MB_OK | MB_ICONERROR);\r
}\r
SetCurrentDirectory(CurDir);\r
}\r
{\r
if(ShellExecute(NULL, "open", "regedit", Tmp, NULL, SW_SHOW) <= (HINSTANCE)32)\r
{\r
- MessageBox(NULL, MSGJPN285, "FFFTP", MB_OK);\r
+ MessageBox(GetMainHwnd(), MSGJPN285, "FFFTP", MB_OK | MB_ICONERROR);\r
}\r
else\r
{\r
Ret = YES;\r
}\r
else\r
- MessageBox(NULL, MSGJPN293, "FFFTP", MB_OK);\r
+ // バグ修正\r
+// MessageBox(NULL, MSGJPN293, "FFFTP", MB_OK);\r
+ MessageBox(GetMainHwnd(), MSGJPN293, "FFFTP", MB_OK | MB_ICONERROR);\r
}\r
return(Ret);\r
}\r
Ret = TRUE;\r
}\r
else\r
- MessageBox(NULL, MSGJPN240, "FFFTP", MB_OK);\r
+ // バグ修正\r
+// MessageBox(NULL, MSGJPN240, "FFFTP", MB_OK);\r
+ MessageBox(GetMainHwnd(), MSGJPN240, "FFFTP", MB_OK | MB_ICONERROR);\r
\r
return(Ret);\r
}\r
fclose(f);\r
}\r
else\r
- MessageBox(NULL, MSGJPN358, "FFFTP", MB_OK);\r
+ MessageBox(GetMainHwnd(), MSGJPN358, "FFFTP", MB_OK | MB_ICONERROR);\r
}\r
}\r
\r
{\r
if(ShellExecute(NULL, "runas", "netsh", ID == IDYES ? "advfirewall set global statefulftp enable" : "advfirewall set global statefulftp disable", NULL, SW_SHOW) <= (HINSTANCE)32)\r
{\r
- MessageBox(NULL, MSGJPN342, "FFFTP", MB_OK);\r
+ MessageBox(GetMainHwnd(), MSGJPN342, "FFFTP", MB_OK | MB_ICONERROR);\r
}\r
SetCurrentDirectory(CurDir);\r
}\r
}\r
\r
// FFFTPを更新\r
-BOOL ApplyUpdates(LPCTSTR DestinationDir)\r
+BOOL ApplyUpdates(LPCTSTR DestinationDir, LPCTSTR BackupDirName)\r
{\r
BOOL bResult;\r
TCHAR Source[MAX_PATH];\r
TCHAR Backup[MAX_PATH];\r
+ TCHAR DestinationBackup[MAX_PATH];\r
TCHAR* p;\r
bResult = FALSE;\r
if(GetModuleFileName(NULL, Source, MAX_PATH) > 0)\r
if(p = _tcsrchr(Source, _T('\\')))\r
*p = _T('\0');\r
_tcscpy(Backup, Source);\r
- _tcscat(Backup, _T("\\updatebackup"));\r
+ _tcscat(Backup, _T("\\"));\r
+ _tcscat(Backup, BackupDirName);\r
DeleteDirectoryAndContents(Backup);\r
if(CopyAllFilesInDirectory(DestinationDir, Backup))\r
{\r
+ _tcscpy(DestinationBackup, DestinationDir);\r
+ _tcscat(DestinationBackup, _T("\\"));\r
+ _tcscat(DestinationBackup, BackupDirName);\r
if(CopyAllFilesInDirectory(Source, DestinationDir))\r
{\r
+ DeleteDirectoryAndContents(DestinationBackup);\r
bResult = TRUE;\r
- _tcscpy(Backup, DestinationDir);\r
- _tcscat(Backup, _T("\\updatebackup"));\r
- DeleteDirectoryAndContents(Backup);\r
}\r
else\r
+ {\r
+ DeleteDirectoryAndContents(DestinationBackup);\r
CopyAllFilesInDirectory(Backup, DestinationDir);\r
+ }\r
}\r
}\r
return bResult;\r
}\r
\r
// 更新用のプロセスを起動\r
-BOOL StartUpdateProcess(LPCTSTR Path, LPCTSTR CommandLine)\r
+BOOL StartUpdateProcess(LPCTSTR DownloadDir, LPCTSTR CommandLine)\r
{\r
BOOL bResult;\r
+ TCHAR Name[MAX_PATH];\r
+ TCHAR* p;\r
+ TCHAR Path[MAX_PATH];\r
bResult = FALSE;\r
- if(ShellExecute(NULL, "open", Path, CommandLine, NULL, SW_SHOW) > (HINSTANCE)32)\r
- bResult = TRUE;\r
+ if(GetModuleFileName(NULL, Name, MAX_PATH) > 0)\r
+ {\r
+ if(p = _tcsrchr(Name, _T('\\')))\r
+ p++;\r
+ else\r
+ p = Name;\r
+ _tcscpy(Path, DownloadDir);\r
+ _tcscat(Path, _T("\\"));\r
+ _tcscat(Path, p);\r
+ if(ShellExecute(NULL, _T("open"), Path, CommandLine, NULL, SW_SHOW) > (HINSTANCE)32)\r
+ bResult = TRUE;\r
+ }\r
return bResult;\r
}\r
\r
// 更新用のプロセスを管理者権限で起動\r
// Windows XP以前など起動できない場合は現在のプロセスで処理を続行\r
-BOOL StartUpdateProcessAsAdministrator(LPCTSTR CommandLine, LPCTSTR Keyword)\r
+BOOL RestartUpdateProcessAsAdministrator(LPCTSTR CommandLine, LPCTSTR Keyword)\r
{\r
BOOL bResult;\r
TCHAR* NewCommandLine;\r
{\r
_tcscpy(NewCommandLine, CommandLine);\r
_tcscat(NewCommandLine, Keyword);\r
- GetModuleFileName(NULL, Path, MAX_PATH);\r
- memset(&Info, 0, sizeof(SHELLEXECUTEINFO));\r
- Info.cbSize = sizeof(SHELLEXECUTEINFO);\r
- Info.fMask = SEE_MASK_NOCLOSEPROCESS;\r
- Info.lpVerb = "runas";\r
- Info.lpFile = Path;\r
- Info.lpParameters = NewCommandLine;\r
- Info.nShow = SW_SHOW;\r
- if(ShellExecuteEx(&Info))\r
+ if(GetModuleFileName(NULL, Path, MAX_PATH) > 0)\r
{\r
- WaitForSingleObject(Info.hProcess, INFINITE);\r
- CloseHandle(Info.hProcess);\r
- bResult = TRUE;\r
+ memset(&Info, 0, sizeof(SHELLEXECUTEINFO));\r
+ Info.cbSize = sizeof(SHELLEXECUTEINFO);\r
+ Info.fMask = SEE_MASK_NOCLOSEPROCESS;\r
+ Info.lpVerb = _T("runas");\r
+ Info.lpFile = Path;\r
+ Info.lpParameters = NewCommandLine;\r
+ Info.nShow = SW_SHOW;\r
+ if(ShellExecuteEx(&Info))\r
+ {\r
+ WaitForSingleObject(Info.hProcess, INFINITE);\r
+ CloseHandle(Info.hProcess);\r
+ bResult = TRUE;\r
+ }\r
}\r
free(NewCommandLine);\r
}\r
\r
BOOL CheckForUpdates(BOOL bDownload, LPCTSTR DownloadDir, DWORD* pVersion, LPTSTR pVersionString);\r
BOOL PrepareUpdates(void* pList, DWORD ListLength, LPCTSTR DownloadDir);\r
-BOOL ApplyUpdates(LPCTSTR DestinationDir);\r
+BOOL ApplyUpdates(LPCTSTR DestinationDir, LPCTSTR BackupDirName);\r
BOOL CleanupUpdates(LPCTSTR DownloadDir);\r
-BOOL StartUpdateProcess(LPCTSTR CommandLine, LPCTSTR Keyword);\r
-BOOL StartUpdateProcessAsAdministrator(LPCTSTR CommandLine, LPCTSTR Keyword);\r
+BOOL StartUpdateProcess(LPCTSTR DownloadDir, LPCTSTR CommandLine);\r
+BOOL RestartUpdateProcessAsAdministrator(LPCTSTR CommandLine, LPCTSTR Keyword);\r
\r
#endif\r
\r