[英]Switch on Nullable Boolean : case goes to null when value is 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.