Ocena użytkowników: 4 / 5

Star ActiveStar ActiveStar ActiveStar ActiveStar Inactive
 

Visual Studio 2010 Setup Project

Prosty skrypt pozwala na automatyczną numerację wersji instalatora.
Uruchomiony przy wykonaniu PostBuildEvent pozostawia nowy numer wersji instalatora do następnego wydania.

 

Kod skryptu IncrementVersionSetup.js :

/*
 * Standard call: ..\PathToScript\IncrementVersionSetup.js PathToSetupProject\SetupProject.vdproj
 * Data: 2015-04-25
 * Autor: Marek Kosman - http://software.infinitydreams.net
 */

if (WScript.Arguments.Length != 1)
{
	WScript.StdErr.WriteLine(WScript.ScriptName + " no project file");
	WScript.Quit(1);
}

arguments = WScript.Arguments(0);

// read project file and save backup 
fso = WScript.CreateObject("Scripting.FileSystemObject");
f = fso.OpenTextFile(arguments)
s = f.ReadAll();
f.Close();

fbak = arguments + ".bak";
WScript.StdOut.WriteLine( "Saving backup file " + fbak );

if(fso.fileexists(fbak))
	fso.deletefile(fbak);
	
fso.copyfile(arguments, fbak);

// increment product version
re = /(\"ProductVersion\" = \"8:)(\d+(\.\d+)+)\"/
m = re.exec(s);
if( m != null ) 
{
	v = m[2];
	WScript.StdOut.WriteLine(m[0]);
	v1 = v.split(".");
	buildNumerA =  v1[v1.length-1] ;
	buildNumer = parseInt(buildNumerA) + 1;
	v1[v1.length-1] = buildNumer;
	vnew = v1.join(".");
	s = s.replace(re, m[1] + vnew + "\"");	
	m = re.exec(s);	
	WScript.StdOut.WriteLine(m[0]);
}
else 
{
	WScript.StdErr.WriteLine(WScript.ScriptName + " no project file");
	WScript.Quit(1);
}

// replace ProductCode
re = /(\"ProductCode\" = \"8:)(\{.+\})\"/
m = re.exec(s);
if( m != null )
{
	guid = WScript.CreateObject("Scriptlet.TypeLib").Guid;
	guid = guid.substring(0,guid.length - 2);
	WScript.StdOut.WriteLine(m[0] + " - " + guid);
	s = s.replace(re, m[1] + guid + "\"");
}
else 
{
	WScript.StdErr.WriteLine(WScript.ScriptName + " no ProductCode");
	WScript.Quit(1);
}

// replace PackageCode
re = /(\"PackageCode\" = \"8:)(\{.+\})\"/
m = re.exec(s);
if( m != null )
{
	guid = WScript.CreateObject("Scriptlet.TypeLib").Guid;
	guid = guid.substring(0,guid.length - 2);
	WScript.StdOut.WriteLine(m[0] + " - " + guid);
	s = s.replace(re, m[1] + guid + "\"");
}
else 
{
	WScript.StdErr.WriteLine(WScript.ScriptName + " no PackageCode");
	WScript.Quit(1);
}

//write project file
fnew = arguments;
f = fso.CreateTextfile(fnew, true);
f.write(s);
f.close();

 

Wywołanie w projekcie.

Ustawiamy właściwości projektu PostBuildEvent

..\PathToScript\IncrementSetupVersion.js $(ProjectDir)\\DualTaskingSetup.vdproj

 

Plików:
AutoIncrement Setup project version 0.1
(1 vote)
Licencja GNU/LGPL Data 26-04-2015 10:15:52 Język  Multilanguage System  Windows Wielkość 864 B Download 1 Pobierz