Subversion Repositories spk

Rev

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

Rev 171 Rev 182
Line 212... Line 212...
212
 
212
 
213
	// open the package file
213
	// open the package file
214
	printf ( "  - Opening Package                \n" );
214
	printf ( "  - Opening Package                \n" );
215
	for ( SStringList *node = lArguments->Head(); node; node = node->next )
215
	for ( SStringList *node = lArguments->Head(); node; node = node->next )
216
	{
216
	{
217
		CyString spkFilename = node->str;
217
		Utils::String spkFilename = node->str.ToString();
218
 
218
 
219
		if ( spkFilename.Length() > 30 )
219
		if ( spkFilename.length() > 30 )
220
			printf ( "    ..%28s ", spkFilename.Right(28).c_str() );
220
			printf ( "    ..%28s ", spkFilename.right(28).c_str() );
221
		else
221
		else
222
			printf ( "    %30s ", spkFilename.Right(30).c_str() );
222
			printf ( "    %30s ", spkFilename.right(30).c_str() );
223
 
223
 
224
		CLinkList<CBaseFile> lPackageList;
224
		CLinkList<CBaseFile> lPackageList;
225
		CBaseFile *package = packages->OpenPackage(spkFilename, &error, &progress);
225
		CBaseFile *package = packages->openPackage(spkFilename, &error, &progress);
226
 
226
 
227
		// multi packages
227
		// multi packages
228
		if ( !package && error == INSTALLERR_NOMULTI )
228
		if ( !package && error == INSTALLERR_NOMULTI )
229
		{
229
		{
230
			if ( !packages->OpenMultiPackage(spkFilename, &lPackageList, &error, &progress) )
230
			if ( !packages->openMultiPackage(spkFilename, &lPackageList, &error, &progress) )
231
			{
231
			{
232
				printf ( "Error!\n");
232
				printf ( "Error!\n");
233
				continue;
233
				continue;
234
			}
234
			}
235
			progress.Finish();
235
			progress.Finish();
Line 307... Line 307...
307
						continue;
307
						continue;
308
					}
308
					}
309
					break;
309
					break;
310
 
310
 
311
				case INSTALLCHECK_WRONGVERSION:
311
				case INSTALLCHECK_WRONGVERSION:
312
					printf ( "ERROR! \"%s\" Wrong Game Version (Requires: %s)\n", packageName.c_str(), packages->GetGameVersionString(package).c_str() );
312
					printf ( "ERROR! \"%s\" Wrong Game Version (Requires: %s)\n", packageName.c_str(), packages->getGameVersionString(package).c_str() );
313
					if ( g_force )
313
					if ( g_force )
314
					{
314
					{
315
						printf ( " [FORCED]\n" );
315
						printf ( " [FORCED]\n" );
316
						if ( packages->PrepareInstallPackage(package, disabled, true) != INSTALLCHECK_OK )
316
						if ( packages->PrepareInstallPackage(package, disabled, true) != INSTALLCHECK_OK )
317
							continue;
317
							continue;
Line 324... Line 324...
324
					break;
324
					break;
325
			}
325
			}
326
 
326
 
327
			if ( package->installText()->any() )
327
			if ( package->installText()->any() )
328
			{
328
			{
329
				CyString installtext = packages->GetInstallBeforeText(package);
329
				Utils::String installtext = packages->getInstallBeforeText(package);
330
				if ( !installtext.Empty() )
330
				if ( !installtext.empty() )
331
				{
331
				{
332
					installtext.StripHTML();
332
					installtext = installtext.stripHtml();
333
					printf ( "Installing %s: %s\n", packageName.c_str(), installtext.c_str() );
333
					printf ( "Installing %s: %s\n", packageName.c_str(), installtext.c_str() );
334
					printf ( "Do you want to continue with the install? " );
334
					printf ( "Do you want to continue with the install? " );
335
 
335
 
336
					if ( g_force )
336
					if ( g_force )
337
						printf ( "(FORCED)\n" );
337
						printf ( "(FORCED)\n" );
338
					else
338
					else
339
					{
339
					{
340
						CyString input = GetInput().ToLower();
340
						Utils::String input = GetInput().ToLower().ToString();
341
 
341
 
342
						if ( input != "y" && input != "yes" )
342
						if ( input != "y" && input != "yes" )
343
						{
343
						{
344
							printf ( "\nInstallion aborted!!\n\n" );
344
							printf ( "\nInstallion aborted!!\n\n" );
345
							packages->RemovePreparedInstall(package);
345
							packages->RemovePreparedInstall(package);
Line 395... Line 395...
395
 
395
 
396
		retStr += "  <> ";
396
		retStr += "  <> ";
397
		retStr += package->getFullPackageName(packages->GetLanguage());
397
		retStr += package->getFullPackageName(packages->GetLanguage());
398
		retStr += "\n";
398
		retStr += "\n";
399
 
399
 
400
		if ( !packages->GetInstallAfterText(package).Empty() )
400
		if ( !packages->getInstallAfterText(package).empty() )
401
		{
401
		{
402
			CyString afterText = packages->GetInstallAfterText(package).StripHTML();
402
			Utils::String afterText = packages->getInstallAfterText(package).stripHtml();
403
			afterText = afterText.FindReplace("\n", "\n\t");
403
			afterText = afterText.findReplace("\n", "\n\t");
404
			retStr += "\t";
404
			retStr += "\t";
405
			retStr += afterText;
405
			retStr += afterText;
406
			retStr += "\n";
406
			retStr += "\n";
407
		}
407
		}
408
	}
408
	}
Line 419... Line 419...
419
	}
419
	}
420
 
420
 
421
	return 0;
421
	return 0;
422
}
422
}
423
 
423
 
424
bool UninstallPackage(int uninstallNum, CyStringList *errors, CPackages *packages, CyString *endMessage)
424
bool UninstallPackage(int uninstallNum, CyStringList *errors, CPackages *packages, Utils::String &endMessage)
425
{
425
{
426
	CBaseFile *p = FindPackage(uninstallNum, packages);
426
	CBaseFile *p = FindPackage(uninstallNum, packages);
427
	if ( !p )
427
	if ( !p )
428
		return false;
428
		return false;
429
 
429
 
430
	// lets check for the uninstall text
430
	// lets check for the uninstall text
431
	CyString uText = packages->GetUninstallBeforeText(p).StripHTML();
431
	Utils::String uText = packages->getUninstallBeforeText(p).stripHtml();
432
	if ( !uText.Empty() )
432
	if (!uText.empty())
433
	{
433
	{
434
		printf ( "Uninstalling: %s\n", uText.c_str() );
434
		printf ( "Uninstalling: %s\n", uText.c_str() );
435
		printf ( "Do you wish to continue with the uninstall? " );
435
		printf ( "Do you wish to continue with the uninstall? " );
436
		if ( g_force )
436
		if ( g_force )
437
			printf ( "(FORCED)\n" );
437
			printf ( "(FORCED)\n" );
Line 446... Line 446...
446
		}
446
		}
447
	}
447
	}
448
 
448
 
449
	CProgressConsole progress;
449
	CProgressConsole progress;
450
 
450
 
451
	(*endMessage) = CyString("Uninstalled: ") + p->getFullPackageName(packages->GetLanguage());
451
	endMessage = "Uninstalled: " + p->getFullPackageName(packages->GetLanguage());
452
	// add the uninstall after text
452
	// add the uninstall after text
453
	uText = packages->GetUninstallAfterText(p).StripHTML();
453
	uText = packages->getUninstallAfterText(p).stripHtml();
454
	if ( !uText.Empty() )
454
	if (!uText.empty())
455
	{
455
	{
456
		(*endMessage) += "\n\n";
456
		endMessage += "\n\n";
457
		(*endMessage) += uText;
457
		endMessage += uText;
458
		(*endMessage) += "\n";
458
		endMessage += "\n";
459
	}
459
	}
460
 
460
 
461
	printf ( "  - Unistalling                    " );
461
	printf ( "  - Unistalling                    " );
462
	packages->PrepareUninstallPackage(p);
462
	packages->PrepareUninstallPackage(p);
463
	if ( packages->UninstallPreparedPackages(errors, &progress) )
463
	if ( packages->UninstallPreparedPackages(errors, &progress) )
464
	{
464
	{
465
		progress.Finish();
465
		progress.Finish();
466
	}
466
	}
467
	else
467
	else
468
	{
468
	{
469
		(*endMessage) = "";
469
		endMessage = "";
470
		printf ( "ERROR!\n" );
470
		printf ( "ERROR!\n" );
471
		return false;
471
		return false;
472
	}
472
	}
473
 
473
 
474
 
474
 
475
	return true;
475
	return true;
476
}
476
}
477
 
477
 
478
bool EnablePackage(int uninstallNum, CyStringList *errors, CPackages *packages, CyString *endMessage)
478
bool EnablePackage(int uninstallNum, CyStringList *errors, CPackages *packages, Utils::String &endMessage)
479
{
479
{
480
	CBaseFile *p = FindPackage(uninstallNum, packages);
480
	CBaseFile *p = FindPackage(uninstallNum, packages);
481
	if ( !p )
481
	if ( !p )
482
		return false;
482
		return false;
483
 
483
 
484
	CProgressConsole progress;
484
	CProgressConsole progress;
485
 
485
 
486
	(*endMessage) = CyString("Enabled: ") + p->getFullPackageName(packages->GetLanguage());
486
	endMessage = "Enabled: " + p->getFullPackageName(packages->GetLanguage());
487
 
487
 
488
	printf ( "  - Enabling                       " );
488
	printf ( "  - Enabling                       " );
489
	if ( packages->EnablePackage(p, errors, &progress) )
489
	if ( packages->EnablePackage(p, errors, &progress) )
490
	{
490
	{
491
		progress.Finish();
491
		progress.Finish();
492
	}
492
	}
493
	else
493
	else
494
	{
494
	{
495
		int error = packages->GetError();
495
		int error = packages->GetError();
496
		(*endMessage) = "";
496
		endMessage = "";
497
		printf ( "ERROR! " );
497
		printf ( "ERROR! " );
498
		if ( error == PKERR_NOPARENT )
498
		if ( error == PKERR_NOPARENT )
499
			printf ( "Parent package is disabled" );
499
			printf ( "Parent package is disabled" );
500
		printf ( "\n" );
500
		printf ( "\n" );
501
		return false;
501
		return false;
502
	}
502
	}
503
	return true;
503
	return true;
504
}
504
}
505
 
505
 
506
bool DisablePackage(int uninstallNum, CyStringList *errors, CPackages *packages, CyString *endMessage)
506
bool DisablePackage(int uninstallNum, CyStringList *errors, CPackages *packages, Utils::String &endMessage)
507
{
507
{
508
	CBaseFile *p = FindPackage(uninstallNum, packages);
508
	CBaseFile *p = FindPackage(uninstallNum, packages);
509
	if ( !p )
509
	if ( !p )
510
		return false;
510
		return false;
511
 
511
 
512
	CProgressConsole progress;
512
	CProgressConsole progress;
513
 
513
 
514
	(*endMessage) = CyString("Disabled: ") + p->getFullPackageName(packages->GetLanguage());
514
	endMessage = "Disabled: " + p->getFullPackageName(packages->GetLanguage());
515
 
515
 
516
	printf ( "  - Disabling                      " );
516
	printf ( "  - Disabling                      " );
517
	if ( packages->DisablePackage(p, errors, &progress) )
517
	if ( packages->DisablePackage(p, errors, &progress) )
518
	{
518
	{
519
		progress.Finish();
519
		progress.Finish();
520
	}
520
	}
521
	else
521
	else
522
	{
522
	{
523
		(*endMessage) = "";
523
		endMessage = "";
524
		printf ( "ERROR!\n" );
524
		printf ( "ERROR!\n" );
525
		return false;
525
		return false;
526
	}
526
	}
527
	return true;
527
	return true;
528
}
528
}
Line 575... Line 575...
575
	scanf ( "%s", &pause );
575
	scanf ( "%s", &pause );
576
#endif
576
#endif
577
}
577
}
578
 
578
 
579
 
579
 
580
int ParseCommandSwitchs(char c, CyString *destination, CPackages *packages, int start, int *arg, char **argv)
580
int ParseCommandSwitchs(char c, Utils::String &destination, CPackages *packages, int start, int *arg, char **argv)
581
{
581
{
582
	switch ( c )
582
	switch ( c )
583
	{
583
	{
584
		case 'o':
584
		case 'o':
585
			g_force = true;
585
			g_force = true;
586
			break;
586
			break;
587
		case 'v':
587
		case 'v':
588
			g_debug = true;
588
			g_debug = true;
589
			break;
589
			break;
590
		case 'd':
590
		case 'd':
591
			*destination = argv[*arg];
591
			destination = argv[*arg];
592
			*destination = destination->FindReplace("\\", "/");
592
			destination = destination.findReplace("\\", "/");
593
			++(*arg);
593
			++(*arg);
594
			++start;
594
			++start;
595
			break;
595
			break;
596
		case 't':
596
		case 't':
597
			packages->SetRenameText(true);
597
			packages->SetRenameText(true);
Line 651... Line 651...
651
		PrintSyntax(cmd);
651
		PrintSyntax(cmd);
652
		Pause();
652
		Pause();
653
		exit ( 1 );
653
		exit ( 1 );
654
	}
654
	}
655
 
655
 
656
	CyString destination = g_dir;
656
	Utils::String destination = g_dir.ToString();
657
	CyStringList errors;
657
	CyStringList errors;
658
 
658
 
659
	// get the command flag
659
	// get the command flag
660
	CyString command(argv[1]);
660
	CyString command(argv[1]);
661
	command = command.lower();
661
	command = command.lower();
Line 703... Line 703...
703
				c = 'l';
703
				c = 'l';
704
			else if ( cmd == "forcemod" )
704
			else if ( cmd == "forcemod" )
705
				c = 'm';
705
				c = 'm';
706
 
706
 
707
			if ( c )
707
			if ( c )
708
				start = ParseCommandSwitchs(c, &destination, &packages, start, &arg, argv);
708
				start = ParseCommandSwitchs(c, destination, &packages, start, &arg, argv);
709
		}
709
		}
710
		else
710
		else
711
		{
711
		{
712
			// now parse arguments
712
			// now parse arguments
713
			for ( int i = 1; i < (int)command.Length(); i++ )
713
			for ( int i = 1; i < (int)command.Length(); i++ )
714
				start = ParseCommandSwitchs(command[i], &destination, &packages, start, &arg, argv);
714
				start = ParseCommandSwitchs(command[i], destination, &packages, start, &arg, argv);
715
		}
715
		}
716
 
716
 
717
		if ( argc < start )
717
		if ( argc < start )
718
		{
718
		{
719
			PrintSyntax(cmd);
719
			PrintSyntax(cmd);
Line 749... Line 749...
749
		else if ( checkCmd == "/removeunisntall" )
749
		else if ( checkCmd == "/removeunisntall" )
750
			c = 'r';
750
			c = 'r';
751
 
751
 
752
		if ( c == 'i' || c == 'l' || c == 'u' || c == 'e' || c == 'd' || c == 'r' || c == 's' )
752
		if ( c == 'i' || c == 'l' || c == 'u' || c == 'e' || c == 'd' || c == 'r' || c == 's' )
753
		{
753
		{
754
			CyString endMessage;
754
			Utils::String endMessage;
755
 
755
 
756
			printf ( "                                   |0              100|\n\n");
756
			printf ( "                                   |0              100|\n\n");
757
			printf ( "  - Reading game directory         " );
757
			printf ( "  - Reading game directory         " );
758
 
758
 
759
			CProgressConsole progress;
759
			CProgressConsole progress;
760
 
760
 
761
			if ( packages.Read(destination, &progress) )
761
			if ( packages.read(destination, &progress) )
762
			{
762
			{
763
				packages.UpdatePackages();
763
				packages.UpdatePackages();
764
				packages.ReadGameLanguage(false);
764
				packages.ReadGameLanguage(false);
765
				progress.Finish(false);
765
				progress.Finish(false);
766
 
766
 
767
				CyString gameName = packages.GetGameName();
767
				Utils::String gameName = packages.getGameName();
768
				if ( packages.GetLanguage() || !gameName.Empty())
768
				if ( packages.GetLanguage() || !gameName.empty())
769
				{
769
				{
770
					printf ( "\n\t" );
770
					printf ( "\n\t" );
771
					if ( !gameName.Empty() )
771
					if ( !gameName.empty() )
772
						printf ( "Game: %s ", gameName.c_str());
772
						printf ( "Game: %s ", gameName.c_str());
773
					if ( packages.GetLanguage() )
773
					if ( packages.GetLanguage() )
774
						printf ( "(Language: %d)", packages.GetLanguage() );
774
						printf ( "(Language: %d)", packages.GetLanguage() );
775
				}
775
				}
776
				printf ( "\n" );
776
				printf ( "\n" );
Line 793... Line 793...
793
				case 'i':
793
				case 'i':
794
					if ( argc <= start )
794
					if ( argc <= start )
795
						printf ( "Syntax: %s [flags] /i <file>\n\tInstalls a package to the destination\n", cmd.c_str() );
795
						printf ( "Syntax: %s [flags] /i <file>\n\tInstalls a package to the destination\n", cmd.c_str() );
796
					else
796
					else
797
					{
797
					{
798
						CyString aftertext = InstallPackage(&lArguments, &errors, &packages, disabled);
798
						Utils::String aftertext = InstallPackage(&lArguments, &errors, &packages, disabled).ToString();
799
						if ( !aftertext.Empty() )
799
						if(!aftertext.empty())
800
						{
800
						{
801
							prepare = true;
801
							prepare = true;
802
							endMessage = aftertext;
802
							endMessage = aftertext;
803
						}
803
						}
804
						PrintDebug(&errors);
804
						PrintDebug(&errors);
Line 808... Line 808...
808
				case 'u':
808
				case 'u':
809
					if ( argc <= start )
809
					if ( argc <= start )
810
						printf ( "Syntax: %s [flags] /u <package#\n\tUninstalls a package, package# is from the /l list command\n", cmd.c_str() );
810
						printf ( "Syntax: %s [flags] /u <package#\n\tUninstalls a package, package# is from the /l list command\n", cmd.c_str() );
811
					else
811
					else
812
					{
812
					{
813
						prepare = UninstallPackage(CyString(argv[start]).ToInt(), &errors, &packages, &endMessage);
813
						prepare = UninstallPackage(CyString(argv[start]).ToInt(), &errors, &packages, endMessage);
814
						PrintDebug(&errors);
814
						PrintDebug(&errors);
815
					}
815
					}
816
					break;
816
					break;
817
 
817
 
818
				case 'e':
818
				case 'e':
819
					if ( argc <= start )
819
					if ( argc <= start )
820
						printf ( "Syntax: %s [flags] /u <package#\n\tEnabled an installed package thats been disabled\n", cmd.c_str() );
820
						printf ( "Syntax: %s [flags] /u <package#\n\tEnabled an installed package thats been disabled\n", cmd.c_str() );
821
					else
821
					else
822
					{
822
					{
823
						prepare = EnablePackage(CyString(argv[start]).ToInt(), &errors, &packages, &endMessage);
823
						prepare = EnablePackage(CyString(argv[start]).ToInt(), &errors, &packages, endMessage);
824
						PrintDebug(&errors);
824
						PrintDebug(&errors);
825
					}
825
					}
826
					break;
826
					break;
827
 
827
 
828
				case 'd':
828
				case 'd':
829
					if ( argc <= start )
829
					if ( argc <= start )
830
						printf ( "Syntax: %s [flags] /u <package#\n\tDisabled an installed package\n", cmd.c_str() );
830
						printf ( "Syntax: %s [flags] /u <package#\n\tDisabled an installed package\n", cmd.c_str() );
831
					else
831
					else
832
					{
832
					{
833
						prepare = DisablePackage(CyString(argv[start]).ToInt(), &errors, &packages, &endMessage);
833
						prepare = DisablePackage(CyString(argv[start]).ToInt(), &errors, &packages, endMessage);
834
						PrintDebug(&errors);
834
						PrintDebug(&errors);
835
					}
835
					}
836
					break;
836
					break;
837
 
837
 
838
				case 'l':
838
				case 'l':
Line 867... Line 867...
867
			}
867
			}
868
			else
868
			else
869
				packages.RestoreFakePatch();
869
				packages.RestoreFakePatch();
870
 
870
 
871
			printf ( "\nDone!\n" );
871
			printf ( "\nDone!\n" );
872
			if ( !endMessage.Empty() )
872
			if ( !endMessage.empty() )
873
				printf ( "\n%s\n", endMessage.c_str() );
873
				printf ( "\n%s\n", endMessage.c_str() );
874
		}
874
		}
875
		else
875
		else
876
			printf ( "Unknown Command: %c\n", c );
876
			printf ( "Unknown Command: %c\n", c );
877
	}
877
	}