How to set the list of features which will be inst

2019-07-06 21:37发布

I'am using WixUI_Mondo set. I modified "CompleteButton" button in the SetupTypeDlg:

<Control Id="ServerButton" Type="PushButton" X="40" Y="120" Width="80" Height="17" ToolTip="!(loc.SetupTypeDlgServerButtonTooltip)" Text="!(loc.SetupTypeDlgServerButton)">
   <Publish Property="WixUI_InstallMode" Value="InstallServer">1</Publish>                  
   <Publish Property="SERVICE" Value="[SERVSTR]">1</Publish>
   <Publish Property="ADDLOCAL" Value="Feature1,Feature2,Feature3">1</Publish>
</Control>

<Property Id="ADDLOCAL" Secure="yes"></Property>

When I push ServerButton the log says:

(CLIENT)     MSI (c) (1C:88) [15:28:49:154]: PROPERTY CHANGE: Adding ADDLOCAL property. Its value is 'Feature1,Feature2,Feature3'. 
(UNKNOWN)     Действие 15:28:49: ServStrDlg. Dialog created 
(UNKNOWN)     Действие 15:28:53: ShortsDlg. Dialog created 
(UNKNOWN)     Действие 15:28:55: VerifyReadyDlg. Dialog created 
(CLIENT)     MSI (c) (1C:88) [15:28:55:966]: Note: 1: 2727 2: 
(UNKNOWN)     Действие закончено 15:28:56: WelcomeDlg. Код возврата 1. 
(CLIENT)     MSI (c) (1C:DC) [15:28:56:076]: Doing action: ProgressDlg 
(UNKNOWN)     Действие 15:28:56: ProgressDlg. 
(UNKNOWN)     Начало действия 15:28:56: ProgressDlg. 
(UNKNOWN)     Действие 15:28:56: ProgressDlg. Dialog created 
(UNKNOWN)     Действие закончено 15:28:56: ProgressDlg. Код возврата 1. 
(CLIENT)     MSI (c) (1C:DC) [15:28:56:091]: Doing action: ExecuteAction 
(UNKNOWN)     Действие 15:28:56: ExecuteAction. 
(UNKNOWN)     Начало действия 15:28:56: ExecuteAction. 
(CLIENT)     MSI (c) (1C:DC) [15:28:56:091]: PROPERTY CHANGE: Adding SECONDSEQUENCE property. Its value is '1'. 
(CLIENT)     MSI (c) (1C:DC) [15:28:56:091]: Grabbed execution mutex. 
(CLIENT)     MSI (c) (1C:DC) [15:28:56:091]: Incrementing counter to disable shutdown. Counter after increment: 0 
(CLIENT)     MSI (c) (1C:DC) [15:28:56:091]: Switching to server: NETFRAMEWORK40CLIENT="#1"INSTALLLOCATION="some dir" TARGETDIR="C:\"
 MANUFACTURERDIR="C:\Program Files\..\" CURRENTDIRECTORY="C:\.." CLIENTUILEVEL="0" CLIENTPROCESSID="6684" USERNAME="User" COMPANYNAME=".."
 SOURCEDIR=".." ACTION="INSTALL" EXECUTEACTION="INSTALL" SECONDSEQUENCE="1" ROOTDRIVE="C:\" INSTALLLEVEL="1" ADDLOCAL=Feature4,Feature5,Feature6 

Levels of Feature1,Feature2,Feature3 are more than 3. Can't figure out why it's passing INSTALLLEVEL="1".

UPD:

I made next changes, the result is same. The installer is modifying values of INSTALLLEVEL,ADDLOCAL properties on client-side. On server-side: INSTALLLEVEL=11,ADDLOCAL consists of features with "Level" attribute<=11.

<Control Id="ServerButton" Type="PushButton" X="40" Y="120" Width="80" Height="17" ToolTip="!(loc.SetupTypeDlgServerButtonTooltip)" Text="!(loc.SetupTypeDlgServerButton)">
   <Publish Property="WixUI_InstallMode" Value="InstallServer">1</Publish> 
   <Publish Event="SetInstallLevel" Value="11">1</Publish>                 
   <Publish Property="SERVICE" Value="[SERVSTR]">1</Publish>
   <Publish Property="ADDLOCAL" Value="Feature1,Feature2,Feature3">1</Publish>
</Control>

标签: wix
2条回答
仙女界的扛把子
2楼-- · 2019-07-06 21:54

I read this article many times and finally found: i have to publish Event='AddLocal' not a Property. Thank's, Yan, for your time very much. Here is working code:

<Control Id="ServerButton" Type="PushButton" X="40" Y="120" Width="80" Height="17" ToolTip="!(loc.SetupTypeDlgServerButtonTooltip)" Text="!(loc.SetupTypeDlgServerButton)">
   <Publish Property="WixUI_InstallMode" Value="InstallServer">1</Publish>                  
   <Publish Property="SERVICE" Value="[SERVSTR]">1</Publish>
   <Publish Event="AddLocal" Value="ALL">1</Publish>
   <Publish Event="Remove" Value="Feature4">1</Publish>
   <Publish Event="Remove" Value="Feature5">1</Publish> 
   <Publish Event="Remove" Value="Feature6">1</Publish>
</Control>

And I added an event to the "Back" button of the next dialog:

<Control Id="Back" Type="PushButton" X="192" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)">
   <Publish Event="SetInstallLevel" Value="3">WixUI_InstallMode="InstallServer"</Publish>
</Control>
查看更多
Melony?
3楼-- · 2019-07-06 22:13

According to the MSDN documentation, the installation level specified by the INSTALLLEVEL property can be overridden by a number of properties, including ADDLOCAL. Hence, as far as I understand it, even if INSTALLLEVEL is set to 1, it gets overriden by the ADDLOCAL property and is not taken into consideration by the Windows Installer.

If you experience any error or wrong behavior related to this, add more details about it to your question.

查看更多
登录 后发表回答