使用msiexec

时间:2017-06-02 18:49:33

标签: visual-studio-2015 installer setup-project msiexec

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

当我使用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中更改此内容?

1 个答案:

答案 0 :(得分:0)

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

这意味着您需要在构建后更改MSI文件(例如使用Orca)。在InstallExexecuteSequence表中,将调用重置您的属性的自定义操作,如CustomCheckA_SetProperty_CHECKBOX1。如果您的属性名称是CHKVSEXTENSION,那么在NOT CHKVSEXTENSION的Condition行中添加一个条件,这意味着它将仅在尚未设置的情况下重置它。