2013-03-08 58 views
2

我在刻录时带有“安装桌面图标”复选框的自定义用户界面。我的MSI(也是使用WiX创建的)我有和Burn一样的东西。问题是刻录似乎设置复选框值为01(通过MsiProperty),而我的MSI预计NULLNOT NULL。如果您尝试通过Burn中的复选框值发送,则MSI将始终将其评估为NOT NULL。我发现,我可以编辑我的WiX的项目和改变:WiX - 将Burn UI中的复选框值传递给MSI

<Condition>DESKTOP_ICONS</Condition> 

到:

<Condition>DESKTOP_ICONS = 1</Condition> 

,这将解决这个问题。但是有没有任何方法让Burn根据复选框的值向MSI传递NULL或NOT NULL?

回答

0

烧伤会将“真”和“检查”视为“1”和“0”为假。但是,您可以在MSI中创建一个将数字属性转换为“NULL”的自定义操作。它会是这个样子:

<SetProperty Id="NULL" Value="1" After="AppSearch">DESKTOP_ICONS = 1</SetProperty> 

现在Property命名为“NULL”(这是一个非常有趣的名称,属性,恕我直言)如果DESKTOP_ICONS属性设置为“1”将被定义。

+0

感谢您的关注。我可以看到如何编辑MSI将允许Burn复选框值传递给MSI,但我想避免编辑MSI - 看起来这是不可能的。 看待这个另一种方式是,如果你有,你想通过命令行来设置的逻辑属性将是: 'MSIEXEC/I my.msi MYVAR = 1' ,然后反向,即有'MYVAR'未定义,它会是: 'msiexec/i my.msi MYVAR =“”' 您可以实现第一个与烧伤,但不是第二个据我所知 - 不是如果你想控制它带有Burn's UI中的复选框。 – 2013-03-08 17:43:44

+0

你是对的。 – 2013-03-08 17:58:06