繁体   English   中英

使用msiexec在cmdline中运行时,复选框的值从空白更改为true

[英]Checkbox's value is changed from blank to true when run in cmdline with msiexec

我继承了一个安装项目,当我尝试在命令行中使用msiexec运行msi文件时,我离开了该属性,或将其指定为{},然后将其更改回'1'或true。

当我使用GUI运行msi时不是这种情况。 如果我未选中该复选框,则它仍保持未选中状态。

这是我在命令行中运行的示例:

msiexec.exe /i D:\BeanLocalDev\Development\Setup2015.msi CHKVSEXTENSION={} /QN /L*V D:\BeanLocalDev\Development\Setup2015\Debug\log.txt

从日志文件:

MSI (s) (F0:1C) [20:29:42:324]: Doing action: 
CustomCheckA_SetProperty_CHECKBOX2
MSI (s) (F0:1C) [20:29:42:325]: Note: 1: 2235 2:  3: ExtendedType 4: SELECT 
`Action`,`Type`,`Source`,`Target`, NULL, `ExtendedType` FROM `CustomAction` 
WHERE `Action` = 'CustomCheckA_SetProperty_CHECKBOX2' 
MSI (s) (F0:1C) [20:29:42:325]: PROPERTY CHANGE: Modifying CHKVSEXTENSION 
property. Its current value is '{}'. Its new value: '1'.
Action start 20:29:42: CustomCheckA_SetProperty_CHECKBOX2.
Action ended 20:29:42: CustomCheckA_SetProperty_CHECKBOX2. Return value 1.

如何在安装项目的Visual Studio中更改此设置?

您不能直接在安装项目中更改它。 由于某些原因,VS会在UI序列的早期插入插入自定义操作以清空复选框的值并执行序列。 在UI序列中没有关系,因为在输入值之前,但是在执行序列中,它会将命令行中的值空白。

这意味着您需要在构建后更改MSI文件(例如,使用Orca)。 在InstallExexecuteSequence表中,将调用一个用于重置您的属性的自定义操作,如CustomCheckA_SetProperty_CHECKBOX1。 如果您的属性名称为CHKVSEXTENSION,则在NOT CHKVSEXTENSION的“条件”行中添加一个条件,这意味着仅当尚未设置时,它才会重置它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM