当使用 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 table 中,将调用重置您的 属性 的自定义操作,类似于 CustomCheckA_SetProperty_CHECKBOX1。如果您的 属性 的名称是 CHKVSEXTENSION,则在 NOT CHKVSEXTENSION 的条件行中添加一个条件,这意味着只有在尚未设置时才会重置它。
我继承了一个设置项目,当我尝试在命令行中使用 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 table 中,将调用重置您的 属性 的自定义操作,类似于 CustomCheckA_SetProperty_CHECKBOX1。如果您的 属性 的名称是 CHKVSEXTENSION,则在 NOT CHKVSEXTENSION 的条件行中添加一个条件,这意味着只有在尚未设置时才会重置它。