Я создал msi, используя набор инструментов Wix для рабочего сервиса как оконного сервиса. В проекте установки я добавил свойство в файл product.wxs.
<Property Id="DF_PORT" Value="8080"/>
Как я могу обновить значение свойства 'DF_PORT' с помощью ядра. net. Я пробовал код c# ниже, но не работает. Ссылка: После этого не удается переименовать MSI
private string SetMsiProperty(string msiFilePath, string property, string value)
{
string retVal = string.Empty;
// Create an Installer instance
WindowsInstaller.Installer installer = (WindowsInstaller.Installer)new Installer();
// Open the msi file for reading
// 0 - Read, 1 - Read/Write
Database db = installer.OpenDatabase(msiFilePath, WindowsInstaller.MsiOpenDatabaseMode.msiOpenDatabaseModeTransact); //// Open the MSI database in the input file
// Fetch the requested property
string sql = String.Format("SELECT Value FROM Property WHERE Property='{0}'", property);
View view = db.OpenView(sql); //View vw = db.OpenView(@"SELECT `Value` FROM `Property` WHERE `Property` = 'ProductVersion'");
view.Execute(null);
// Read in the fetched record
Record record = view.Fetch();
if (record != null)
{
record.set_StringData(1, value);
}
view.Modify(MsiViewModify.msiViewModifyReplace, record);
view.Close();
db.Commit();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(record);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(view);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(db);
return retVal;
}