簡體   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