WIX是属性集

时间:2012-11-18 18:00:24

标签: wix windows-installer

使用命令行我可以像这样执行'msi'文件:

myProgramm.msi myProperty="abc"

在我的wxs文件中,我想将myProperty(例如'xyz')设置为仅定义它。

4 个答案:

答案 0 :(得分:5)

查看SetProperty元素。元素的内部文本是必须求值为true才能使SetProperty发生的条件。

假设您正确使用安全自定义公共属性,代码将如下所示:

<SetProperty Id="MYPROPERTY" After="AppSearch" Sequence="both" Value="SomeValue">Not MYPROPERTY</SetProperty>

答案 1 :(得分:2)

不,你应该用这个:

<SetProperty Id="P.IP" 
             After="AppSearch" 
             Sequence="first" 
             Value="SomeValue">NOT P.IP</SetProperty>

我将Sequence更改为'First' - 它只会执行一次:在InstallUISEquence(如果执行)或InstallExecuteSequence(否则为 - silent模式)期间。但也许你真的需要在两个序列中设置属性 - 你应该决定。如果要从命令行指定属性,可以考虑使用静默模式运行:

msiexec  /i setup.msi /qn /lv*x install.log P.PASSWORD="xxx" P.IP="192.168.1.1"

或基本UI模式:

msiexec  /i setup.msi /qb /lv*x install.log P.PASSWORD="xxx" P.IP="192.168.1.1"

另外,我建议阅读Rob Menching关于记住属性模式的文章 - 它与从命令行传递的属性的注册表搜索设置有关:http://robmensching.com/blog/posts/2010/5/2/The-WiX-toolsets-Remember-Property-pattern

答案 2 :(得分:1)

我认为不需要使用自定义操作。如果使用值创建PUBLIC属性并将其添加到SecureCustomProperties列表,则它将提供值,除非您使用命令行覆盖它。那就是:

<Property Id='P.IP' Value="Localhost" Secure='yes'>

然后,如果您只运行安装程序,您将最终使用P.IP = Localhost,如果您启动msi并为其提供值,则该值将被存储,直到您卸载软件包,即:

msiexec /i <YouPackage.Msi> P.IP=192.168.1.1

答案 3 :(得分:-1)

msiexec  /i setup.msi /lv*x install.log P.PASSWORD="xxx" P.IP="192.168.1.1"

所以当我想设置P.IP时,如果用户没有在命令行中设置它,我可以使用它吗?:

<SetProperty Id="P.IP" 
             After="AppSearch" 
             Sequence="both" 
             Value="SomeValue">localhost</SetProperty>