我继承了一个安装项目,当我尝试在命令行中使用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中更改此内容?
答案 0 :(得分:0)
您无法在安装项目中直接更改它。由于某种原因,VS插入自定义操作以在UI序列的早期空白复选框的值并执行序列。在UI序列中没有关系,因为它是在输入值之前,但在执行序列中,它会从命令行中清空值。
这意味着您需要在构建后更改MSI文件(例如使用Orca)。在InstallExexecuteSequence表中,将调用重置您的属性的自定义操作,如CustomCheckA_SetProperty_CHECKBOX1。如果您的属性名称是CHKVSEXTENSION,那么在NOT CHKVSEXTENSION的Condition行中添加一个条件,这意味着它将仅在尚未设置的情况下重置它。