【问题标题】:Wix: Apply property publishingWix:应用属性发布
【发布时间】:2012-04-26 13:35:21
【问题描述】:

我的 Wix 项目包含 3 个文件:

1) Product.wsx - 主 wxs 文件

2) MyDlg.wxs - 我的带有复选框的自定义对话框

3) 1.txt - 任何文件

Product.wxs

  <Media Id="1" Cabinet="media.cab" EmbedCab="yes" />      
    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />

  <Directory Id="TARGETDIR" Name="SourceDir">
     <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="My" />
     </Directory>
  </Directory>

  <DirectoryRef Id="INSTALLFOLDER">
     <Component Id="ProductComponent" Guid="{FC9CE1FD-9BF6-4746-9918-5B2DFA312A2B}">
        <File Id="img" Source="$(sys.CURRENTDIR)1.txt" Name="1.txt" KeyPath="yes" Vital="yes" DiskId="1" />
     </Component>
  </DirectoryRef>

    <Feature Id="ProductFeature" Title="My" Level="1" Absent="allow">
        <ComponentRef Id="ProductComponent" />
     <Condition Level="0">RECOGVERSION = 0</Condition>
  </Feature>

  <UI>
     <UIRef Id="WixUI_Mondo" />
     <UIRef Id="WixUI_ErrorProgressText"/>

     <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="MyDlg" Order="10" >LicenseAccepted = "1"</Publish>
     <Publish Dialog="MyDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg" Order="10">NOT Installed</Publish>
     <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="MyDlg" Order="10">NOT Installed</Publish>
  </UI>

MyDlg.wxs

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
   <Fragment>
      <UI>
         <Property Id="RECOGVERSION" Value="0" Secure="yes" /><br/>

         <Dialog Id="MyDlg" Width="370" Height="270" Title="My empty dialog">

            <Control Id="RecognitionServerText" Type="Text" X="25" Y="53" Width="340" Height="15" Transparent="yes" NoPrefix="yes" Text="Select version:" />
            <Control Id="RecognitionServerRadioButtonGroup" Type="RadioButtonGroup" X="16" Y="70" Width="120" Height="73" Property="RECOGVERSION" >
               <RadioButtonGroup Property="RECOGVERSION">
                  <RadioButton Height="15" Text="version 1 (old)" Value="0" Width="120" X="0" Y="0" />
                  <RadioButton Height="15" Text="version 2 (new)" Value="1" Width="120" X="0" Y="18" />
               </RadioButtonGroup>
            </Control>

            <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">
               <Publish Property="RECOGVERSION" Value="0">RECOGVERSION = "0"</Publish>
               <Publish Property="RECOGVERSION" Value="1">RECOGVERSION = "1"</Publish>
               <Publish Event="NewDialog" Value="CustomizeDlg" Order="10" />
            </Control>
            <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)">
               <Publish Event="NewDialog" Value="LicenseAgreementDlg" Order="10" />
            </Control>
            <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
               <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
            </Control>

         </Dialog>
      </UI>
   </Fragment>
</Wix>

当我尝试点击自定义对话框中的“下一步”按钮时,什么都没有发生。 我无法进入下一个对话框。

我尝试从 MyDlg.wxs 中删除这些行:

<Publish Property="RECOGVERSION" Value="0">RECOGVERSION = "0"</Publish>
<Publish Property="RECOGVERSION" Value="1">RECOGVERSION = "1"</Publish>

有效但在新窗口中,“RECOGVERSION”属性未更新值

有什么问题?

【问题讨论】:

  • 像这样运行你的 msi:msiexec /i myprod.msi /l*v install.log wxs 对我来说看起来是正确的。
  • 从日志中有提取:pastebin.com/5BWU3rt9

标签: installation wix windows-installer wix3.5


【解决方案1】:

解决方案

<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">
   <Publish Event="NewDialog" Value="CustomizeDlg" Order="10">1</Publish>
   <Publish Property="RECOGVERSION" Value="[RECOGVERSION]" Order="11">1</Publish>
</Control>

【讨论】:

    【解决方案2】:

    使用 ORCA 查看您的 MSI 的 ControlEvent 表。我猜是因为您没有指定 Order 属性,所以您的订单完全错误,并且在您的增强 ControlEvents 有机会运行之前正在处理 NewDialog [NEXTDIALOG]。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多