94 lines
3.4 KiB
C#
94 lines
3.4 KiB
C#
|
/***********************************************************************
|
||
|
*
|
||
|
* Copyright (C) 2005-2006 Novell, Inc. All Rights Reserved.
|
||
|
*
|
||
|
* This library is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU Lesser General Public
|
||
|
* License as published by the Free Software Foundation; version 2.1
|
||
|
* of the License.
|
||
|
*
|
||
|
* This library is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
* Library Lesser General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU Lesser General Public
|
||
|
* License along with this library; if not, Novell, Inc.
|
||
|
*
|
||
|
* To contact Novell about this file by physical or electronic mail,
|
||
|
* you may find current contact information at www.novell.com.
|
||
|
*
|
||
|
***********************************************************************/
|
||
|
|
||
|
//
|
||
|
// copyright 2003 Don Kackman - mailto:dkackman_2000@yahoo.com
|
||
|
//
|
||
|
// no warranty expressed or implied
|
||
|
// use however you'd like
|
||
|
//
|
||
|
using System;
|
||
|
using System.IO;
|
||
|
using System.Collections;
|
||
|
|
||
|
namespace VersionVDProj
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Class that updates the version info of MSI projects
|
||
|
/// </summary>
|
||
|
public class MSIProjectVersioner : VDProjectVersioner
|
||
|
{
|
||
|
private readonly static Guid MSI_PROJECT_TYPE = new Guid( "{978C614F-708E-4E1A-B201-565925725DBA}" );
|
||
|
|
||
|
private Guid productCode = Guid.Empty;
|
||
|
private Guid packageCode = Guid.Empty;
|
||
|
private Guid upgradeCode = Guid.Empty;
|
||
|
/// <summary>
|
||
|
/// createas a new instance of the class
|
||
|
/// </summary>
|
||
|
/// <param name="file">the project file</param>
|
||
|
public MSIProjectVersioner( FileInfo file ) : base( file, MSI_PROJECT_TYPE )
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
protected override void SetOptions( Hashtable options )
|
||
|
{
|
||
|
// get the package code - generate if not specified
|
||
|
if ( options.Contains("packagecode") )
|
||
|
packageCode = new Guid( options["packagecode"].ToString() );
|
||
|
else
|
||
|
packageCode = Guid.NewGuid();
|
||
|
|
||
|
// get the product code - set to package code if not specified
|
||
|
if ( options.Contains("productcode") )
|
||
|
productCode = new Guid( options["productcode"].ToString() );
|
||
|
else
|
||
|
productCode = packageCode;
|
||
|
|
||
|
// get the upgrade code - leave empty if not specified
|
||
|
if ( options.Contains("upgradecode") )
|
||
|
upgradeCode = new Guid( options["upgradecode"].ToString() );
|
||
|
}
|
||
|
|
||
|
protected override string TranslateLine( string line )
|
||
|
{
|
||
|
// look for the properties we are interested in changing
|
||
|
// if we find them, replace the old value with the new and return the new line string
|
||
|
// otherwise just return the line string
|
||
|
if ( line.IndexOf( "\"ProductVersion\"" ) != -1 )
|
||
|
line = ReplaceValue( line, "ProductVersion", version.ThreePartVersion );
|
||
|
|
||
|
else if ( productCode != Guid.Empty && line.IndexOf( "\"ProductCode\"" ) != -1 )
|
||
|
line = ReplaceValue( line, "ProductCode", "{" + productCode.ToString().ToUpper() + "}" );
|
||
|
|
||
|
else if ( packageCode != Guid.Empty && line.IndexOf( "\"PackageCode\"" ) != -1 )
|
||
|
line = ReplaceValue( line, "PackageCode", "{" + packageCode.ToString().ToUpper() + "}" );
|
||
|
|
||
|
else if ( upgradeCode != Guid.Empty && line.IndexOf( "\"UpgradeCode\"" ) != -1 )
|
||
|
line = ReplaceValue( line, "UpgradeCode", "{" + upgradeCode.ToString().ToUpper() + "}" );
|
||
|
|
||
|
return line;
|
||
|
}
|
||
|
}
|
||
|
}
|