Subversion Repositories spk

Rev

Rev 173 | Rev 177 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 173 Rev 175
Line 1061... Line 1061...
1061
		return;
1061
		return;
1062
 
1062
 
1063
	CSpkFile *package = (CSpkFile *)p;
1063
	CSpkFile *package = (CSpkFile *)p;
1064
 
1064
 
1065
	// update the signed status
1065
	// update the signed status
1066
	package->UpdateSigned(true);
1066
	package->updateSigned(true);
1067
 
1067
 
1068
	// check for another mod
1068
	// check for another mod
1069
	if ( !package->IsAnotherMod() )
1069
	if ( !package->IsAnotherMod() )
1070
		return;
1070
		return;
1071
 
1071
 
Line 1131... Line 1131...
1131
		return -1;
1131
		return -1;
1132
	}
1132
	}
1133
 
1133
 
1134
	// open the spk file
1134
	// open the spk file
1135
	float fVersion = 0.0f;
1135
	float fVersion = 0.0f;
1136
	int check = CBaseFile::CheckFile(file, &fVersion);
1136
	int check = CBaseFile::CheckFile(file.ToString(), &fVersion);
1137
 
1137
 
1138
	// wrong version
1138
	// wrong version
1139
	if ( fVersion > (float)FILEVERSION )
1139
	if ( fVersion > (float)FILEVERSION )
1140
	{
1140
	{
1141
		*error = INSTALLERR_VERSION;
1141
		*error = INSTALLERR_VERSION;
Line 1452... Line 1452...
1452
 
1452
 
1453
bool CPackages::InstallPackage ( CBaseFile *package, CyStringList *errors, CProgressInfo *progress, bool disabled )
1453
bool CPackages::InstallPackage ( CBaseFile *package, CyStringList *errors, CProgressInfo *progress, bool disabled )
1454
{
1454
{
1455
	CLog::logf(CLog::Log_Install, 1, "Starting to install new package, %s by %s (Version: %s)", package->name().c_str(), package->author().c_str(), package->version().c_str());
1455
	CLog::logf(CLog::Log_Install, 1, "Starting to install new package, %s by %s (Version: %s)", package->name().c_str(), package->author().c_str(), package->version().c_str());
1456
	
1456
	
-
 
1457
	Utils::CStringList lErrors;
-
 
1458
 
1457
	CBaseFile *oldPackage = FindPackage(package);
1459
	CBaseFile *oldPackage = FindPackage(package);
1458
	disabled = _checkForDisable(package, disabled, oldPackage);
1460
	disabled = _checkForDisable(package, disabled, oldPackage);
1459
 
1461
 
1460
	// update packages must have an old package installed already (should have been checked for already)
1462
	// update packages must have an old package installed already (should have been checked for already)
1461
	if ( package->GetType() == TYPE_SPK )
1463
	if ( package->GetType() == TYPE_SPK )
Line 1507... Line 1509...
1507
 
1509
 
1508
	CLog::log(CLog::Log_Install, 3, "Reading all files into memory");
1510
	CLog::log(CLog::Log_Install, 3, "Reading all files into memory");
1509
	package->ReadAllFilesToMemory();
1511
	package->ReadAllFilesToMemory();
1510
 
1512
 
1511
	CLog::log(CLog::Log_Install, 3, "Starting to install files");
1513
	CLog::log(CLog::Log_Install, 3, "Starting to install files");
1512
	if ( !package->InstallFiles (m_sCurrentDir, progress, &m_lFiles, errors, !disabled, this) )
1514
	if ( !package->installFiles (m_sCurrentDir, progress, &m_lFiles, &lErrors, !disabled, this) )
1513
	{
1515
	{
1514
		CLog::log(CLog::Log_Install, 2, "There was an error installing files!!");
1516
		CLog::log(CLog::Log_Install, 2, "There was an error installing files!!");
1515
 
1517
 
1516
		// TODO: clear up installed files
1518
		// TODO: clear up installed files
1517
		return false;
1519
		return false;
Line 2848... Line 2850...
2848
			continue;
2850
			continue;
2849
 
2851
 
2850
		if ( !package->filename().empty() )
2852
		if ( !package->filename().empty() )
2851
			lines.pushBack("Installspk: " + package->filename());
2853
			lines.pushBack("Installspk: " + package->filename());
2852
 
2854
 
2853
		Utils::String valuesline = package->CreateValuesLine();
2855
		Utils::String valuesline = package->createValuesLine();
2854
		if ( valuesline.back() == '\n')
2856
		if ( valuesline.back() == '\n')
2855
			valuesline.truncate((int)valuesline.length() - 1);
2857
			valuesline.truncate((int)valuesline.length() - 1);
2856
		lines.pushBack(valuesline);
2858
		lines.pushBack(valuesline);
2857
 
2859
 
2858
		if ( !package->IsEnabled() )
2860
		if ( !package->IsEnabled() )
Line 3641... Line 3643...
3641
		CBaseFile *p = node->Data();
3643
		CBaseFile *p = node->Data();
3642
 
3644
 
3643
		if ( p->GetType() != TYPE_SPK )
3645
		if ( p->GetType() != TYPE_SPK )
3644
			continue;
3646
			continue;
3645
 
3647
 
3646
		((CSpkFile *)p)->UpdateSigned(false);
3648
		((CSpkFile *)p)->updateSigned(false);
3647
	}
3649
	}
3648
}
3650
}
3649
 
3651
 
3650
/**
3652
/**
3651
 * Check validity of package file
3653
 * Check validity of package file
Line 8932... Line 8934...
8932
		C_File *f = fNode->Data();
8934
		C_File *f = fNode->Data();
8933
		if ( f->GetFileType() != FILETYPE_MOD ) continue;
8935
		if ( f->GetFileType() != FILETYPE_MOD ) continue;
8934
		if ( !f->IsFakePatch() ) continue;
8936
		if ( !f->IsFakePatch() ) continue;
8935
		if ( !f->CheckFileExt("cat") ) continue;
8937
		if ( !f->CheckFileExt("cat") ) continue;
8936
 
8938
 
8937
		if ( newFile->ExtractFile(f, m_sTempDir) )
8939
		if (newFile->extractFile(f, m_sTempDir) )
8938
			f->SetFullDir(m_sTempDir);
8940
			f->setFullDir(m_sTempDir);
8939
	}
8941
	}
8940
 
8942
 
8941
	// compare mod files against all installed packages
8943
	// compare mod files against all installed packages
8942
	int count = 0;
8944
	int count = 0;
8943
	for ( CListNode<CBaseFile> *node = m_lPackages.Front(); node; node = node->next() )
8945
	for ( CListNode<CBaseFile> *node = m_lPackages.Front(); node; node = node->next() )
Line 9711... Line 9713...
9711
		saveto += ".spk";
9713
		saveto += ".spk";
9712
	else if ( !saveto.right(4).Compare(".xsp") && package->GetType() == TYPE_XSP )
9714
	else if ( !saveto.right(4).Compare(".xsp") && package->GetType() == TYPE_XSP )
9713
		saveto += ".xsp";
9715
		saveto += ".xsp";
9714
 
9716
 
9715
	// write script
9717
	// write script
9716
	if ( package->WriteFile(saveto) )
9718
	if ( package->writeFile(saveto) )
9717
	{
9719
	{
9718
		if ( package->AutoGenerateUpdateFile() )
9720
		if ( package->AutoGenerateUpdateFile() )
9719
			package->createUpdateFile(CFileIO(saveto).dir());
9721
			package->createUpdateFile(CFileIO(saveto).dir());
9720
		return saveto;
9722
		return saveto;
9721
	}
9723
	}