void TeX2img::ReadSetting(){ m_filedir = g_Setting.ToAbsolutePath(g_Setting.ReadSysINI(_T("TeX2img"),_T("FileDir"))); if(m_filedir == _T(""))m_filedir = g_Setting.ToAbsolutePath(g_Setting.ReadSysINI(_T("abtlinst"),_T("DownloadDir"))); if(m_filedir != _T("") && m_filedir[m_filedir.length() - 1] != '\\')m_filedir += _T("\\"); m_filereg = g_Setting.ReadSysINI(_T("TeX2img"),_T("Reg")); if(g_Setting.ReadINI(_T("TeX2img"),_T("install")) != _T("0"))m_doinst = true; else m_doinst = false; #ifndef INSTALL_FROM_LOCAL m_url = g_Setting.ReadINI(_T("TeX2img"),_T("URL")); #endif }
bool Ghostscript::Download(HWND hwnd,MSGFUNC &msgfunc){ m_abort = false; m_downloadresult = false; msgfunc.msg(_T("Ghostscriptのインストールの準備中……\n")); std::vector<Network::FileData> fds; #ifndef INSTALL_FROM_LOCAL if(!m_doinst)return true; if(!g_Network.GetFileData(fds,m_url,msgfunc))return false; #else ablib::system::FindFile ff; ff.Begin(g_Setting.GetDownloadDir() + _T("*.*")); WIN32_FIND_DATA wfd; while(ff.Next(&wfd)){ Network::FileData fd; fd.file = wfd.cFileName; fd.time = ablib::system::Time(wfd.ftLastWriteTime); fd.size = wfd.nFileSizeLow; fds.push_back(fd); } #endif std::wregex reg(g_Setting.ReadSysINI(_T("GS"),_T("Reg"))); std::vector<Network::FileData> gsfds; for(auto &i : fds){ // ::OutputDebugString((i.file + _T("\n")).c_str()); if(std::regex_match(i.file,reg))gsfds.push_back(i); } if(gsfds.empty()){ msgfunc.detail(_T("Ghostscript のインストーラが見つかりませんでした.\n")); g_Setting.Log(_T("Ghostscript のインストーラがみつかりませんでした.")); return false; } reg.assign(_T("[0-9]+")); std::wsmatch reg_results; std::vector<unsigned int> version; for(auto &i : gsfds){ if(std::regex_search(i.file,reg_results,reg))version.push_back(boost::lexical_cast<int>(reg_results.str())); else version.push_back(0); } std::vector<unsigned int>::iterator max = std::max_element(version.begin(),version.end()); if(max == version.end()){ m_file = gsfds[0]; if(!version.empty())m_version = version[0]; else m_version = 0; }else{ m_file = gsfds[max - version.begin()]; m_version = *max; } #ifndef INSTALL_FROM_LOCAL ablib::system::Time local = ablib::system::File::GetLastWriteTime(g_Setting.GetDownloadDir() + m_file.file); if(local + ablib::system::Time(0,0,1) > m_file.time){ msgfunc.detail(_T("ローカルの Ghostscript のインストーラが最新のようです.ダウンロードしません.\n")); }else{ DownloadFileData dfd; dfd.url = m_url + _T("/") + m_file.file; dfd.size = m_file.size; dfd.localdir = g_Setting.GetDownloadDir(); std::vector<DownloadFileData> dfds; dfds.push_back(dfd); ::CreateDirectoryReflex(g_Setting.GetDownloadDir().c_str()); if(m_download.Download(dfds,msgfunc) != DownloadDlg::success){ msgfunc.detail(_T("Ghostscript のインストーラのダウンロードに失敗\n")); return false; } } #endif // INSTALL_FROM_LOCAL m_downloadresult = true; return true; }