在Wix中获取命令行参数

时间:2014-11-28 10:13:24

标签: windows wix installer windows-installer wix3.7

是否有办法使用msiexec传递/枚举属性?如果属性拼写错误,我需要显示错误。

2 个答案:

答案 0 :(得分:1)

由于某种原因,Windows Installer从未实现过属性枚举功能。您可以查询属性表,但只能获取构建时表中定义的属性。我知道没办法做你想做的事。我最好的解决方法是使用EXE引导程序前端MSI并在那里进行检查。然后,您可以将类似EXEDRIVEN = 1的内容传递给MSI,然后对该属性进行MSI门检查。

另一个想法是使用CLIENTPROCESSID在自定义操作中查询Win32_Process。

答案 1 :(得分:1)

命令行设置的所有属性必须是 PUBLIC (大写)属性,如果在命令行上设置它们,则应将它们添加到属性列表中通过SecureCustomProperties property分隔的属性列表传递到服务器安装过程。此处未列出的任何属性在延迟安装模式下将不可用,其中可以进行所有类型的更改,因为它使用 LocalSystem 帐户(内置操作系统服务帐户)运行。用户界面序列以用户权限运行,如果安装以静默方式运行,则可以完全跳过。

如果您使用命令行设置的所有属性更新SecureCustomProperties properties中的此属性列表,则可以使用简单的字符串操作对它们进行枚举。您以分号分隔字符串,然后枚举所有值。您可以在属性表中设置默认值,并在命令行上覆盖它们。您的代码可以检查发送到服务器进程的值是默认值还是已更改。您甚至可以将不可接受的值设置为默认值,因此必须通过命令行覆盖该属性。

请注意EnableUserControl property