Обновить свойство в msi, созданное с помощью набора инструментов Wix - PullRequest
0 голосов
/ 12 июля 2020

Я создал 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;
        }
...