listbox
  • wix
  • 2012-01-26 91 views 1 likes 
    1

    我有一個安裝程序,其中一個對話框上有ListBox和Add/Remove按鈕。 ListBox的項目添加並刪除通過我的CA.Wix:將列表框中的值保存到配置文件

    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); 
    

    項目成功添加和刪除,但後來我需要將它們存儲在應用程序配置文件中。已確認的操作無法訪問安裝程序數據庫,因此我在InstallFinalize之後使用了立即操作。但是當我讀ListBox表時它是空的。由於InsertTemporary修改模式,我會將其隱藏起來。插入模式給我「執行期間功能失敗,數據庫:表更新失敗。」錯誤。

    回答

    0

    當您離開此嚮導頁面時,請使用分隔符將列表保存到屬性中。

    延遲操作可以訪問特殊屬性CustomActionData,以便您可以在安裝階段將它們寫入配置文件。

    InstallFinalize之後立即採取措施有一個缺點,就是您無法寫入受保護的系統區域,如程序文件。只有延遲操作才能運行。

    相關問題