कुछ refs
CustomAction_NoImpersonate.js प्रश्न में संदर्भित संशोधन करना इस स्क्रिप्ट जो जोड़ सकते हैं/गुण तालिका में किसी भी मान सेट देता है ।
"cscript.exe MSI_SetProperty.js your.msi संपत्ति के मूल्य"
// MSI_SetProperty.js <msi-file> <property> <value>
// Performs a post-build fixup of an msi to set the specified property (and add it if it doesn't already exist)
// Constant values from Windows Installer SDK
var msiOpenDatabaseModeTransact = 1;
var msiViewModifyInsert = 1;
var msiViewModifyUpdate = 2;
if (WScript.Arguments.Length != 3)
{
WScript.StdErr.WriteLine("Usage: " + WScript.ScriptName + "file property value");
WScript.Quit(1);
}
var filespec = WScript.Arguments(0);
var property = WScript.Arguments(1);
var value = parseInt(WScript.Arguments(2));
var installer = WScript.CreateObject("WindowsInstaller.Installer");
var database = installer.OpenDatabase(filespec, msiOpenDatabaseModeTransact);
WScript.StdOut.WriteLine("Looking for property:" + property);
try
{
var sql = "SELECT Property, Value FROM Property WHERE Property = '" + property + "'";
var view = database.OpenView(sql);
view.Execute();
var record = view.Fetch();
if (record)
{
while (record)
{
WScript.StdOut.Write("Found: " + record.StringData(0) + ", " + record.StringData(1) + ", " + record.StringData(2));
if (record.IntegerData(2) != value)
{
WScript.StdOut.WriteLine(" - changing to " + value);
record.IntegerData(2) = value;
view.Modify(msiViewModifyUpdate,record);
}
else
WScript.StdOut.WriteLine(" - OK");
record = view.Fetch();
}
}
else
{
WScript.StdOut.WriteLine("Not found, so adding");
// There may be a better way to do this?
sql = "INSERT INTO Property (Property,Value) VALUES ('" + property + "','" + value + "')";
view = database.OpenView(sql);
view.Execute();
}
view.Close();
database.Commit();
}
catch(e)
{
WScript.StdErr.WriteLine(e);
WScript.Quit(1);
}
क्या MSIUSEREALADMINDETECTION की हेक्स मान है के साथ बुलाया गया। या आप बस MSIUSEREALADMINDETECTION सेट करते हैं? कारण, जब मैं स्क्रिप्ट चलाता हूं, तो मैं यह पूछता हूं, यह हमेशा अन्य ब्लॉक में जाता है और एक नई संपत्ति जोड़ दी जाती है। भी, मेरा इंस्टॉलर अभी भी सिस्टम खाते के तहत चल रहा है, न कि उपयोगकर्ता खाता – Dhawalk