void UninstallProcess::run() { if (m_szIPath == "" || m_szMCFPath == "") { gcException errPathNull(ERR_BADPATH, gcString("One of the paths for uninstall was nullptr [IP: {0} MCF: {1}].", m_szIPath, m_szMCFPath)); onErrorEvent(errPathNull); return; } MCFCore::MCFI *mcfHandle = mcfFactory(); m_pMcfHandle = mcfHandle; mcfHandle->getErrorEvent() += delegate(&onErrorEvent); mcfHandle->getProgEvent() += delegate(this, &UninstallProcess::onProgress); InstallScriptRunTime isrt(m_szInstallScript.c_str(), m_szIPath.c_str()); try { mcfHandle->setFile(m_szMCFPath.c_str()); mcfHandle->parseMCF(); isrt.run("PreUninstall"); mcfHandle->removeFiles(m_szIPath.c_str()); isrt.run("PostUninstall"); } catch (gcException &except) { onErrorEvent(except); } m_pMcfHandle=nullptr; mcfDelFactory(mcfHandle); onCompleteEvent(); }
void makeMCF(const char* path) { MCFCore::MCFI* mcfHandle = mcfFactory(); mcfHandle->getProgEvent() += delegate((UtilFunction*)this, &UtilFunction::printProgress); mcfHandle->getErrorEvent() += delegate((UtilFunction*)this, &UtilFunction::mcfError); mcfHandle->setFile("temp.mcf"); mcfHandle->parseFolder(path); mcfHandle->saveMCF(); mcfDelFactory(mcfHandle); }