Subversion Repositories spk

Rev

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

Rev 42 Rev 43
Line 117... Line 117...
117
void CPackages::LoadVirtualFileSystem()
117
void CPackages::LoadVirtualFileSystem()
118
{
118
{
119
	if ( !m_bLoadVFS )
119
	if ( !m_bLoadVFS )
120
		return;
120
		return;
121
 
121
 
-
 
122
	m_pGameVFS.SetAddon(this->GetAddonDir().ToString());
122
	if ( m_pEnabledMod )
123
	if ( m_pEnabledMod )
123
	{
124
	{
124
		C_File *f;
125
		C_File *f;
125
		for ( f = m_pEnabledMod->GetFirstFile(FILETYPE_MOD); f; f = m_pEnabledMod->GetNextFile(f) )
126
		for ( f = m_pEnabledMod->GetFirstFile(FILETYPE_MOD); f; f = m_pEnabledMod->GetNextFile(f) )
126
		{
127
		{
Line 4398... Line 4399...
4398
 *
4399
 *
4399
 * Searching for the next gap in automatic text files, start with 0003-LXXX or XX0003
4400
 * Searching for the next gap in automatic text files, start with 0003-LXXX or XX0003
4400
 */
4401
 */
4401
int CPackages::FindNextTextFile(int start, CyString dir)
4402
int CPackages::FindNextTextFile(int start, CyString dir)
4402
{
4403
{
4403
	CDirIO Dir((dir.Empty()) ? m_sCurrentDir : dir);
-
 
4404
	Dir.cd("t");
-
 
4405
 
-
 
4406
	int check = start;
4404
	int check = start;
4407
	if ( check < 2 ) check = 2;
4405
	if ( check < 2 ) check = 2;
4408
	while ( check < 9999 )
4406
	while ( check < 9999 )
4409
	{
4407
	{
4410
		++check;
4408
		++check;
4411
		CyString newFilename = SPK::FormatTextName(check, m_iLanguage, (m_iGameFlags & EXEFLAG_TCTEXT));
4409
		Utils::String newFilename = SPK::FormatTextName(check, m_iLanguage, (m_iGameFlags & EXEFLAG_TCTEXT)).ToString();
4412
 
4410
 
4413
		// check if a packed file exists
4411
		// check the vfs
4414
		if ( !Dir.Exists(newFilename + ".pck") )
4412
		if ( m_pGameVFS.isFileAvailable("t/" + newFilename + ".pck") ) continue;
4415
		{
-
 
4416
			// it doen't, check if theres an unpacked file
-
 
4417
			if ( !Dir.Exists(newFilename + ".xml") )
4413
		if ( m_pGameVFS.isFileAvailable("t/" + newFilename + ".xml") ) continue;
-
 
4414
 
4418
				break;
4415
		break;
4419
		}
-
 
4420
	}
4416
	}
4421
 
4417
 
4422
	return check;
4418
	return check;
4423
}
4419
}
4424
 
4420
 
Line 7738... Line 7734...
7738
	if ( File.CheckFileExtension("cat") || File.CheckFileExtension("dat") )
7734
	if ( File.CheckFileExtension("cat") || File.CheckFileExtension("dat") )
7739
		return FILETYPE_MOD;
7735
		return FILETYPE_MOD;
7740
	// check for text files
7736
	// check for text files
7741
	if ( File.GetFilename().IsIn("-L") && File.GetFilename().Left(4).ToInt() )
7737
	if ( File.GetFilename().IsIn("-L") && File.GetFilename().Left(4).ToInt() )
7742
		return FILETYPE_TEXT;
7738
		return FILETYPE_TEXT;
-
 
7739
	if ( File.GetBaseName().Compare("conversations") )
-
 
7740
		return FILETYPE_TEXT;
7743
	if ( basename.Length() <= 4 && basename.IsNumber() && (File.CheckFileExtension("xml") || File.CheckFileExtension("pck")) )
7741
	if ( basename.Length() <= 4 && basename.IsNumber() && (File.CheckFileExtension("xml") || File.CheckFileExtension("pck")) )
7744
		return FILETYPE_TEXT;
7742
		return FILETYPE_TEXT;
7745
	// X2/X3 text file
7743
	// X2/X3 text file
7746
	if ( basename.Length() >= 5 && basename.Length() <= 8 && File.GetBaseName().ToInt() )
7744
	if ( basename.Length() >= 5 && basename.Length() <= 8 && File.GetBaseName().ToInt() )
7747
		return FILETYPE_TEXT;
7745
		return FILETYPE_TEXT;
Line 8353... Line 8351...
8353
	}
8351
	}
8354
 
8352
 
8355
	CLEANSPLIT(str, max)
8353
	CLEANSPLIT(str, max)
8356
}
8354
}
8357
 
8355
 
8358
CBaseFile *CPackages::CreateFromArchive(CyString filename, bool toInstall )
8356
CBaseFile *CPackages::_archive_fromRar(CyString filename, bool toInstall )
8359
{
8357
{
8360
	// make sure we can open the zip file
8358
	// make sure we can open the zip file
8361
	CBaseFile *archive = NULL;
8359
	CBaseFile *archive = NULL;
8362
	if ( CFileIO(filename).CheckFileExtension("rar") )
-
 
8363
	{
-
 
8364
#ifdef _RAR
8360
#ifdef _RAR
8365
		HANDLE hArcData;
8361
	HANDLE hArcData;
8366
		int RHCode,PFCode;
8362
	int RHCode,PFCode;
8367
		char CmtBuf[16384];
8363
	char CmtBuf[16384];
8368
		struct RARHeaderDataEx HeaderData;
8364
	struct RARHeaderDataEx HeaderData;
8369
		struct RAROpenArchiveDataEx OpenArchiveData;
8365
	struct RAROpenArchiveDataEx OpenArchiveData;
8370
 
-
 
8371
		if ( toInstall )
-
 
8372
		{
-
 
8373
			memset(&OpenArchiveData,0,sizeof(OpenArchiveData));
-
 
8374
			OpenArchiveData.ArcName=(char *)filename.c_str();
-
 
8375
			OpenArchiveData.CmtBuf=CmtBuf;
-
 
8376
			OpenArchiveData.CmtBufSize=sizeof(CmtBuf);
-
 
8377
			OpenArchiveData.OpenMode=RAR_OM_LIST;
-
 
8378
	//		OpenArchiveData.UserData=LIST;
-
 
8379
			hArcData=RAROpenArchiveEx(&OpenArchiveData);
-
 
8380
 
-
 
8381
			if (OpenArchiveData.OpenResult!=0)
-
 
8382
				return NULL;
-
 
8383
 
-
 
8384
			HeaderData.CmtBuf=NULL;
-
 
8385
			memset(&OpenArchiveData.Reserved,0,sizeof(OpenArchiveData.Reserved));
-
 
8386
 
-
 
8387
			while ((RHCode=RARReadHeaderEx(hArcData,&HeaderData))==0)
-
 
8388
			{
-
 
8389
				if ( CyString(HeaderData.FileName).Compare("pluginmanager.txt") )
-
 
8390
				{
-
 
8391
					toInstall = false;
-
 
8392
					break;
-
 
8393
				}
-
 
8394
			}
-
 
8395
			RARCloseArchive(hArcData);
-
 
8396
		}
-
 
8397
 
-
 
8398
		if ( toInstall )
-
 
8399
			archive = new CArchiveFile(); // just installing an archive file
-
 
8400
		else
-
 
8401
			archive = new CSpkFile(); // converting to a spk file
-
 
8402
 
8366
 
-
 
8367
	// find the pluginmanager text to covnert to spkfile
-
 
8368
	if ( toInstall ) {
8403
		memset(&OpenArchiveData,0,sizeof(OpenArchiveData));
8369
		memset(&OpenArchiveData,0,sizeof(OpenArchiveData));
8404
		OpenArchiveData.ArcName=(char *)filename.c_str();
8370
		OpenArchiveData.ArcName=(char *)filename.c_str();
8405
		OpenArchiveData.CmtBuf=CmtBuf;
8371
		OpenArchiveData.CmtBuf=CmtBuf;
8406
		OpenArchiveData.CmtBufSize=sizeof(CmtBuf);
8372
		OpenArchiveData.CmtBufSize=sizeof(CmtBuf);
8407
		OpenArchiveData.OpenMode=RAR_OM_EXTRACT;
8373
		OpenArchiveData.OpenMode=RAR_OM_LIST;
8408
		OpenArchiveData.UserData=EXTRACT;
-
 
8409
		hArcData=RAROpenArchiveEx(&OpenArchiveData);
8374
		hArcData=RAROpenArchiveEx(&OpenArchiveData);
8410
 
8375
 
8411
		if (OpenArchiveData.OpenResult!=0)
8376
		if (OpenArchiveData.OpenResult!=0) return NULL;
8412
			return NULL;
-
 
8413
 
8377
 
8414
		HeaderData.CmtBuf=NULL;
8378
		HeaderData.CmtBuf=NULL;
8415
		memset(&OpenArchiveData.Reserved,0,sizeof(OpenArchiveData.Reserved));
8379
		memset(&OpenArchiveData.Reserved,0,sizeof(OpenArchiveData.Reserved));
8416
 
8380
 
8417
		bool error = false;
-
 
8418
		CyString extractedFile = CDirIO(m_sTempDir).File("extracted.tst").findreplace("/", "\\").findreplace("\\\\", "\\");
-
 
8419
		while ((RHCode=RARReadHeaderEx(hArcData,&HeaderData))==0)
8381
		while ((RHCode=RARReadHeaderEx(hArcData,&HeaderData))==0) {
8420
		{
-
 
8421
			CyString fileName = HeaderData.FileName;
8382
			if ( CyString(HeaderData.FileName).Compare("pluginmanager.txt") ) {
8422
 
-
 
8423
			if ( HeaderData.FileAttr == 16 )
-
 
8424
				continue;
-
 
8425
			wchar_t wText[200];
-
 
8426
			::MultiByteToWideChar(CP_ACP, NULL, (char *)extractedFile.c_str(), -1, wText, extractedFile.Length() + 1);
-
 
8427
			PFCode=RARProcessFileW(hArcData, RAR_EXTRACT, NULL, NULL);
-
 
8428
			if (PFCode!=0)
-
 
8429
			{
-
 
8430
				error = true;
8383
				toInstall = false;
8431
				break;
8384
				break;
8432
			}
8385
			}
8433
 
-
 
8434
			CFileIO File(fileName);
-
 
8435
			if ( File.Exists() )
-
 
8436
			{
-
 
8437
				if ( fileName.Compare("pluginmanager.txt") )
-
 
8438
					this->ReadArchiveData(File.GetFullFilename(), archive);
-
 
8439
				else
-
 
8440
				{
-
 
8441
					CyString extradir;
-
 
8442
					int type = SPK::GetAutomaticFiletype(fileName, &extradir, true);
-
 
8443
					// check for special file types
-
 
8444
					C_File *f = NULL;
-
 
8445
 
-
 
8446
					if ( type == FILETYPE_SCRIPT_UNINSTALL ) {
-
 
8447
						f = archive->AddFile(CFileIO(fileName).GetFilename(), CFileIO(fileName).GetDir(), FILETYPE_SCRIPT);
-
 
8448
						if ( f ) {
-
 
8449
							f->ReadFromFile(File.GetFullFilename());
-
 
8450
						}
-
 
8451
						type = FILETYPE_UNINSTALL;
-
 
8452
					}
-
 
8453
 
-
 
8454
					if ( type == -1 )
-
 
8455
						f = archive->AddFile(CFileIO(fileName).GetFilename(), CFileIO(fileName).GetDir(), FILETYPE_EXTRA);
-
 
8456
					else
-
 
8457
						f = archive->AddFile(CFileIO(fileName).GetFilename(), extradir, type);
-
 
8458
					f->ReadFromFile(File.GetFullFilename());
-
 
8459
				}
-
 
8460
 
-
 
8461
				File.Remove();
-
 
8462
			}
-
 
8463
		}
8386
		}
8464
 
-
 
8465
		RARCloseArchive(hArcData);
8387
		RARCloseArchive(hArcData);
8466
 
-
 
8467
		if ( error )
-
 
8468
		{
-
 
8469
			delete archive;
-
 
8470
			archive = NULL;
-
 
8471
		}
-
 
8472
#endif
-
 
8473
	}
8388
	}
8474
	else if ( CFileIO(filename).CheckFileExtension("zip") )
-
 
8475
	{
-
 
8476
		TCHAR buf[5000];
-
 
8477
		wsprintf(buf, L"%hs", filename.c_str());
-
 
8478
		HZIP hz = OpenZip(buf, 0);
-
 
8479
		if ( !hz ) 
-
 
8480
			return NULL;
-
 
8481
 
-
 
8482
		int index;
-
 
8483
		// move the files from the zip to the package
-
 
8484
		ZIPENTRY ze;
-
 
8485
		if ( FindZipItem(hz, L"pluginmanager.txt", true, &index, &ze) == Z_OK )
-
 
8486
			toInstall = false;
-
 
8487
		CloseZip(hz);
-
 
8488
 
-
 
8489
		hz = OpenZip(buf, 0);
-
 
8490
		if ( !hz ) 
-
 
8491
			return NULL;
-
 
8492
 
8389
 
8493
		// create the correct package
-
 
8494
		if ( toInstall )
8390
	if ( toInstall )
8495
			archive = new CArchiveFile(); // just installing an archive file
8391
		archive = new CArchiveFile(); // just installing an archive file
8496
		else
8392
	else
8497
			archive = new CSpkFile(); // converting to a spk file
8393
		archive = new CSpkFile(); // converting to a spk file
8498
 
-
 
8499
		GetZipItem(hz, -1, &ze);
-
 
8500
		int numitems = ze.index;
-
 
8501
 
8394
 
8502
		bool error = false;
8395
	memset(&OpenArchiveData,0,sizeof(OpenArchiveData));
8503
		for ( int zi = 0; zi < numitems; zi++ )
8396
	OpenArchiveData.ArcName=(char *)filename.c_str();
8504
		{
-
 
8505
			ZIPENTRY ze;
8397
	OpenArchiveData.CmtBuf=CmtBuf;
8506
			if ( GetZipItem(hz, zi, &ze) != Z_OK )
8398
	OpenArchiveData.CmtBufSize=sizeof(CmtBuf);
8507
			{
-
 
8508
				error = true;
8399
	OpenArchiveData.OpenMode=RAR_OM_EXTRACT;
8509
				break;
8400
	OpenArchiveData.UserData=EXTRACT;
8510
			}
-
 
-
 
8401
	hArcData=RAROpenArchiveEx(&OpenArchiveData);
8511
 
8402
 
8512
			if ( ze.attr & FILE_ATTRIBUTE_DIRECTORY )
8403
	if (OpenArchiveData.OpenResult!=0) return NULL;
8513
				continue; // dont do directories
-
 
8514
 
8404
 
-
 
8405
	HeaderData.CmtBuf=NULL;
-
 
8406
	memset(&OpenArchiveData.Reserved,0,sizeof(OpenArchiveData.Reserved));
8515
 
8407
 
8516
			char *iBuf = new char[ze.unc_size];
8408
	bool error = false;
-
 
8409
	CyString extractedFile = CDirIO(m_sTempDir).File("extracted.tst").findreplace("/", "\\").findreplace("\\\\", "\\");
-
 
8410
	while ((RHCode=RARReadHeaderEx(hArcData,&HeaderData))==0)
-
 
8411
	{
8517
			UnzipItem(hz, zi, iBuf, ze.unc_size);
8412
		CyString fileName = HeaderData.FileName;
8518
 
8413
 
-
 
8414
		if ( HeaderData.FileAttr == 16 )
-
 
8415
			continue;
8519
			CyString Name(ze.name);
8416
		wchar_t wText[200];
-
 
8417
		::MultiByteToWideChar(CP_ACP, NULL, (char *)extractedFile.c_str(), -1, wText, extractedFile.Length() + 1);
-
 
8418
		PFCode=RARProcessFileW(hArcData, RAR_EXTRACT, NULL, NULL);
-
 
8419
		if (PFCode!=0)
-
 
8420
		{
-
 
8421
			error = true;
-
 
8422
			break;
-
 
8423
		}
8520
 
8424
 
8521
			// if its the data file, dont add it, but extract to get settings from
8425
		CFileIO File(fileName);
8522
			if ( Name.Compare("pluginmanager.txt") )
8426
		if ( File.Exists() )
8523
			{
8427
		{
-
 
8428
			if ( fileName.Compare("pluginmanager.txt") )
8524
				this->ReadArchiveData(iBuf, ze.unc_size, archive);
8429
				this->ReadArchiveData(File.GetFullFilename(), archive);
8525
				delete[] iBuf;
-
 
8526
			}
-
 
8527
			else
8430
			else
8528
			{
8431
			{
8529
				CyString extradir;
8432
				CyString extradir;
8530
				int type = SPK::GetAutomaticFiletype(Name, &extradir, true);
8433
				int type = SPK::GetAutomaticFiletype(fileName, &extradir, true);
8531
 
-
 
-
 
8434
				// check for special file types
8532
				C_File *f = NULL;
8435
				C_File *f = NULL;
8533
 
8436
 
8534
				// check for special file types
-
 
8535
				if ( type == FILETYPE_SCRIPT_UNINSTALL ) {
8437
				if ( type == FILETYPE_SCRIPT_UNINSTALL ) {
8536
					f = archive->AddFile(CFileIO(Name).GetFilename(), CFileIO(Name).GetDir(), FILETYPE_SCRIPT);
8438
					f = archive->AddFile(CFileIO(fileName).GetFilename(), CFileIO(fileName).GetDir(), FILETYPE_SCRIPT);
8537
					if ( f ) {
8439
					if ( f ) {
8538
						f->SetData((const unsigned char *)iBuf, ze.unc_size);
8440
						f->ReadFromFile(File.GetFullFilename());
8539
					}
8441
					}
8540
					type = FILETYPE_UNINSTALL;
8442
					type = FILETYPE_UNINSTALL;
8541
				}
8443
				}
8542
 
8444
 
8543
				if ( type == -1 )
8445
				if ( type == -1 )
8544
					f = archive->AddFile(CFileIO(Name).GetFilename(), CFileIO(Name).GetDir(), FILETYPE_EXTRA);
8446
					f = archive->AddFile(CFileIO(fileName).GetFilename(), CFileIO(fileName).GetDir(), FILETYPE_EXTRA);
8545
				else
8447
				else
8546
					f = archive->AddFile(CFileIO(Name).GetFilename(), extradir, type);
8448
					f = archive->AddFile(CFileIO(fileName).GetFilename(), extradir, type);
8547
 
-
 
8548
				if ( f )
-
 
8549
					f->SetData((const unsigned char *)iBuf, ze.unc_size);
8449
				f->ReadFromFile(File.GetFullFilename());
8550
				else
-
 
8551
					delete[] iBuf;
-
 
8552
			}
8450
			}
-
 
8451
 
-
 
8452
			File.Remove();
-
 
8453
		}
-
 
8454
	}
-
 
8455
 
-
 
8456
	RARCloseArchive(hArcData);
-
 
8457
 
-
 
8458
	if ( error )
-
 
8459
	{
-
 
8460
		delete archive;
-
 
8461
		archive = NULL;
-
 
8462
	}
-
 
8463
#endif
-
 
8464
 
-
 
8465
	return archive;
-
 
8466
}
-
 
8467
 
-
 
8468
CBaseFile *CPackages::_archive_fromZip(CyString filename, bool toInstall)
-
 
8469
{
-
 
8470
	CBaseFile *archive = NULL;
-
 
8471
 
-
 
8472
	TCHAR buf[5000];
-
 
8473
	wsprintf(buf, L"%hs", filename.c_str());
-
 
8474
	HZIP hz = OpenZip(buf, 0);
-
 
8475
	if ( !hz ) 
-
 
8476
		return NULL;
-
 
8477
 
-
 
8478
	int index;
-
 
8479
	// move the files from the zip to the package
-
 
8480
	ZIPENTRY ze;
-
 
8481
	if ( FindZipItem(hz, L"pluginmanager.txt", true, &index, &ze) == Z_OK )
-
 
8482
		toInstall = false;
-
 
8483
	CloseZip(hz);
-
 
8484
 
-
 
8485
	hz = OpenZip(buf, 0);
-
 
8486
	if ( !hz ) 
-
 
8487
		return NULL;
-
 
8488
 
-
 
8489
	// create the correct package
-
 
8490
	if ( toInstall )
-
 
8491
		archive = new CArchiveFile(); // just installing an archive file
-
 
8492
	else
-
 
8493
		archive = new CSpkFile(); // converting to a spk file
-
 
8494
 
-
 
8495
	GetZipItem(hz, -1, &ze);
-
 
8496
	int numitems = ze.index;
-
 
8497
 
-
 
8498
	bool error = false;
-
 
8499
	for ( int zi = 0; zi < numitems; zi++ )
-
 
8500
	{
-
 
8501
		ZIPENTRY ze;
-
 
8502
		if ( GetZipItem(hz, zi, &ze) != Z_OK )
-
 
8503
		{
-
 
8504
			error = true;
-
 
8505
			break;
8553
		}
8506
		}
8554
 
8507
 
-
 
8508
		if ( ze.attr & FILE_ATTRIBUTE_DIRECTORY )
8555
		CloseZip(hz);
8509
			continue; // dont do directories
-
 
8510
 
8556
 
8511
 
-
 
8512
		char *iBuf = new char[ze.unc_size];
-
 
8513
		UnzipItem(hz, zi, iBuf, ze.unc_size);
-
 
8514
 
-
 
8515
		CyString Name(ze.name);
-
 
8516
 
-
 
8517
		// if its the data file, dont add it, but extract to get settings from
-
 
8518
		if ( Name.Compare("pluginmanager.txt") )
-
 
8519
		{
-
 
8520
			this->ReadArchiveData(iBuf, ze.unc_size, archive);
8557
		if ( error )
8521
			delete[] iBuf;
-
 
8522
		}
-
 
8523
		else
8558
		{
8524
		{
8559
			delete archive;
8525
			CyString extradir;
-
 
8526
			int type = SPK::GetAutomaticFiletype(Name, &extradir, true);
-
 
8527
 
8560
			archive = NULL;
8528
			C_File *f = NULL;
-
 
8529
 
-
 
8530
			// check for special file types
-
 
8531
			if ( type == FILETYPE_SCRIPT_UNINSTALL ) {
-
 
8532
				f = archive->AddFile(CFileIO(Name).GetFilename(), CFileIO(Name).GetDir(), FILETYPE_SCRIPT);
-
 
8533
				if ( f ) {
-
 
8534
					f->copyData((const unsigned char *)iBuf, ze.unc_size);
-
 
8535
				}
-
 
8536
				type = FILETYPE_UNINSTALL;
-
 
8537
			}
-
 
8538
 
-
 
8539
			if ( type == -1 )
-
 
8540
				f = archive->AddFile(CFileIO(Name).GetFilename(), CFileIO(Name).GetDir(), FILETYPE_EXTRA);
-
 
8541
			else
-
 
8542
				f = archive->AddFile(CFileIO(Name).GetFilename(), extradir, type);
-
 
8543
 
-
 
8544
			if ( f )
-
 
8545
				f->SetData((const unsigned char *)iBuf, ze.unc_size);
-
 
8546
			else
-
 
8547
				delete[] iBuf;
8561
		}
8548
		}
8562
	}
8549
	}
8563
 
8550
 
-
 
8551
	CloseZip(hz);
-
 
8552
 
8564
	if ( archive )
8553
	if ( error )
8565
	{
8554
	{
-
 
8555
		delete archive;
-
 
8556
		archive = NULL;
-
 
8557
	}
-
 
8558
	return archive;
-
 
8559
}
-
 
8560
 
-
 
8561
CBaseFile *CPackages::CreateFromArchive(CyString filename, bool toInstall )
-
 
8562
{
-
 
8563
	// make sure we can open the zip file
-
 
8564
	CBaseFile *archive = NULL;
-
 
8565
	if ( CFileIO(filename).CheckFileExtension("rar") )
-
 
8566
		archive = this->_archive_fromRar(filename, toInstall);
-
 
8567
	else if ( CFileIO(filename).CheckFileExtension("zip") )
-
 
8568
		archive = this->_archive_fromZip(filename, toInstall);
-
 
8569
 
-
 
8570
	if ( archive ) {
8566
		archive->SetFilename(CFileIO(filename).ChangeFileExtension("spk"));
8571
		archive->SetFilename(CFileIO(filename).ChangeFileExtension("spk"));
8567
		if ( toInstall )
8572
		if ( toInstall )
8568
			archive->SetName(CFileIO(filename).GetFilename());
8573
			archive->SetName(CFileIO(filename).GetFilename());
8569
		else
8574
		else
8570
			archive->SetName(CFileIO(filename).GetBaseName());
8575
			archive->SetName(CFileIO(filename).GetBaseName());