InstallShield 2010和基本MSI的动态属性值

时间:2014-09-05 21:06:56

标签: windows-installer installshield

在XML文件更改中,我想将节点内容设置为[MYPUBLICPROPERTY1],以便可以通过命令行传递,例如msiexec /i my.msi MYPUBLICPROPERTY1="Foo"。但是,如果它没有通过命令行传递,我希望它是[INSTALLDIR]Sub\Path

要实现这一结果的任何想法?

1 个答案:

答案 0 :(得分:1)

查看此答案是否澄清了与您的问题相关的一般事项:How can I have a WiX Property default to null?

至于你的要求。在CostFinalize(已解析的目录)之后使用自定义操作将MYPUBLICPROPERTY1设置为[INSTALLDIR] Sub \ Path。如果已经通过命令行设置了属性,则在自定义操作中包含逻辑,以便不覆盖该属性(只需读取属性并检查它是否为空)。 将该属性保留在Property表之外。如果您在XML文件更改中使用它,我不确定Installshield是否会自动将其添加到属性表中。如果是,请扫描以查看它是否已被命令行覆盖(在属性表中添加默认虚拟值),如果它没有,则将其设置为您需要的目录。如果无法做到这一点,请中止设置。