Exemple #1
0
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
}
Exemple #2
0
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;
}