Code Snippet
// Constant values from Windows Installer
var msiOpenDatabaseModeTransact = 1;
var msiViewModifyInsert = 1
var msiViewModifyUpdate = 2
var msiViewModifyAssign = 3
var msiViewModifyReplace = 4
var msiViewModifyDelete = 6
if (WScript.Arguments.Length != 3)
{
WScript.StdErr.WriteLine(WScript.ScriptName + " file version name");
WScript.Quit(1);
}
var filespec = WScript.Arguments(0);
var installer = WScript.CreateObject("WindowsInstaller.Installer");
var database = installer.OpenDatabase(filespec, msiOpenDatabaseModeTransact);
try
{
UpdateProperty(database, "ProductVersion", WScript.Arguments(1));
UpdateProperty(database, "ProductName", WScript.Arguments(2));
database.Commit();
}
catch(e)
{
WScript.StdErr.WriteLine(e);
WScript.Quit(1);
}
function UpdateProperty(database, propertyName, propertyValue)
{
var sql
var view
var record
sql = "SELECT `Property`, `Value` FROM `Property` WHERE `Property`='" + propertyName + "'";
view = database.OpenView(sql);
view.Execute();
record = view.Fetch();
record.StringData(2) = propertyValue;
view.Modify(msiViewModifyReplace, record);
view.Close();
}