Вы можете использовать следующий фрагмент кода (после того, как вы загрузите класс WindosInstaller, написанный Иэном Шоном Махром Мариано
здесь
http://www.codeproject.com/KB/cs/msiinterop/msiinterop.zip
public static bool ChangeProperty(string MsiPath, string property, string value)
{
bool result = true;
IntPtr view = IntPtr.Zero;
IntPtr dataBase = IntPtr.Zero;
MsiError err;
try
{
err = MsiInterop.MsiOpenDatabase(MsiPath, MsiDbPersistMode.Transact, out dataBase);
if (err == MsiError.Success)
{
string sql = "INSERT INTO Property (Property, Value) VALUES ('" + property + "', '" + value + "')";
err = MsiInterop.MsiDatabaseOpenView(dataBase, sql, out view);
err = MsiInterop.MsiViewExecute(view, IntPtr.Zero);
if (err == MsiError.FunctionFailed)
{
string sqlUpdate = @"UPDATE Property SET Value = '" + value + "' WHERE Property = '" + property + "'";
err = MsiInterop.MsiDatabaseOpenView(dataBase, sqlUpdate, out view);
err = MsiInterop.MsiViewExecute(view, IntPtr.Zero);
}
}
err = MsiInterop.MsiDatabaseCommit(dataBase);
}
catch
{
result = false;
}
finally
{
err = MsiInterop.MsiViewClose(view);
err = MsiInterop.MsiCloseHandle(dataBase);
}
return result;
}