I assume that you are using the VS2008 built-in installer, not InstallShield or Wise or something like that (both of them have much better ways).
You can create an installer class that adds it (see below).
, , TARGETDIR Path...
/VariableName = "" /Value = "[TARGETDIR] \"
using System;
using System.ComponentModel;
namespace Emv
{
[RunInstaller(true)]
public class Installer : System.Configuration.Install.Installer
{
public Installer()
{
}
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
try
{
var varName = this.Context.Parameters["VariableName"];
var valToAdd = this.Context.Parameters["Value"];
var newVal = String.Empty;
var curVal = Environment.GetEnvironmentVariable(varName);
if (curVal != null && curVal.Contains(valToAdd))
{
return;
}
newVal = (curVal == String.Empty) ? valToAdd
: curVal + ";" + valToAdd;
Environment.SetEnvironmentVariable(varName, newVal,
EnvironmentVariableTarget.Machine);
}
catch (Exception ex)
{
this.Rollback(stateSaver);
}
}
}
}
System.Configuration.Install .