Wix:将ListBox中的值保存到配置文件中

时间:2012-01-26 15:36:37

标签: listbox wix

我在其中一个对话框上有一个带ListBox和Add / Remove按钮的安装程序。 ListBox的项目通过我的CA添加和删除。

Microsoft.Deployment.WindowsInstaller.View listBoxView = session.Database.OpenView("select * from ListBox where Property = '" + listBoxProperty + "'");
            listBoxView.Execute(null);
            int count = 0;
            while (listBoxView.Fetch() != null)
                count++;

            Record newListBoxRecord = new Record(4);
            newListBoxRecord[1] = listBoxProperty;
            newListBoxRecord[2] = ++count;
            newListBoxRecord[3] = listItemValue;
            newListBoxRecord[4] = listItemValue;

            ICollection<ValidationErrorInfo> errors = listBoxView.ValidateNew(newListBoxRecord);
            if (errors == null)
                listBoxView.Modify(ViewModifyMode.InsertTemporary, newListBoxRecord);

项目成功添加和删除,但稍后我需要将它们存储在应用程序配置文件中。 Deffered操作无法访问Installer Database,因此我在InstallFinalize之后使用了Immediate action。但是当我读ListBox表时它是空的。我认为它是因为InsertTemporary修改模式而发生的。插入模式给我“执行期间功能失败。数据库:表格更新失败。”错误。

1 个答案:

答案 0 :(得分:0)

当您离开此向导页面时,将列表保存到具有分隔符的属性。

延迟操作可以访问特殊属性CustomActionData,以便您可以在安装阶段将它们写入配置文件。

InstallFinalize之后使用立即操作有一个不能写入受保护系统区域的缺点,例如Program Files。只能延迟执行延迟操作。