【发布时间】:2013-02-01 15:41:11
【问题描述】:
我正在尝试使用 CustomAction 填充 ListBox,但进展不顺利。
我试图找出session.Database.Tables,但不知道如何开始。
我已经创建了一个这样的列表框
<Control Id="ListBox1" Type="ListBox" Sorted="no" Indirect="no" Property="LISTBOXVALUESONE" X="10" Y="50" Width="150" Height="180">
<ListBox Property="LISTBOXVALUESONE">
<ListItem Text="ARGHH!" Value="1"/>
</ListBox>
</Control>
但是我在详细日志中看不到该属性或任何关于表格的内容,所以我想我必须在 customAction 中创建一个表格并填充它?
我在列表中看到我的ARGHH!,所以它应该存在,但我如何访问这些值?并添加新的?
在 C++ 中找到了更多示例和内容,但我想在 C# 中制作 CustomAction
编辑
Database db = session.Database;
string sqlInsertTemp = db.Tables["ListBox"].SqlInsertString + " TEMPORARY";
View view = db.OpenView(sqlInsertTemp );
view.Execute( new Record( new object[] { "LISTBOXVALUESONE", 2, "2", "One" } ));
view.Close();
多亏了 Christopher,我才得以使用它来增加价值。
db.Tables["ListBox"] 应该保持不变并命名类型而不是我教的 id
在这条线上view.Execute( new Record( new object[] { "LISTBOXVALUESONE", 2, "2", "One" } ));
你把你的列表框属性,然后我们插入的值“一”的位置
两个“2”是我们想要的位置,我已经在 1 上有一个测试值 我的“啊!”所以我把新的放在2上,不知道细节但是......
我收到一个表更新错误,如果我在 customaction 中输入 2,1 或 1,2,则会出现一个重复值错误!
【问题讨论】:
-
在 MSI 中动态发射行是一个强大的概念,但请注意,您会失去构建时验证的好处。因此,您必须确保您插入的行是 100% 有效的。
-
@ChristopherPainter 您的意思是 XML 的有效字符?幸运的是,我读到了文件夹名称,它们不能用你想要的任何东西命名:)
-
XML 用于创建 Windows Installer 表。我说的是表格数据。 msdn.microsoft.com/en-us/library/windows/desktop/…blog.iswix.com/2009/02/msi-tip-authoring-ice-using-c-dtf.html