在自定义刻录应用程序中,如果许可证不匹配,我们怎能不安装任何内容

时间:2016-04-08 23:10:48

标签: wix

我使用Wix创建了一个示例自定义刻录应用程序(BA)。当BA运行时,我们不想安装任何东西,如果没有正确输入密码则退出。我复制了标准主题,并更改了如下所示的Install页面,添加了一个Name = SecretCode的编辑框,并向Bundle添加了一个变量来接收SecretCode。 BA运行时,用户输入密码,代码显示在日志中,InstallCondition评估为false,但msi仍然安装。在ExePackage文档中,InstallCondition声明:

“只有在条件计算结果为true时才会安装软件包。如果条件的计算结果为false,并且正在安装,修复或修改软件包,则将卸载软件包。”

在我的情况下,BA正在安装,即使密码不匹配,msi仍然安装。我无法传递命令行参数,并希望远离自定义托管应用程序。这是一个简化的例子来说明我们的问题。

有没有办法让这个工作或我做错了什么?

日志

[1FE4:12AC] [2016-04-08T15:07:01] i000:将字符串变量'SecretCode'设置为值'boo' [1FE4:230C] [2016-04-08T15:07:01] i052:条件'SecretCode = foo'的计算结果为false。 [1FE4:230C] [2016-04-08T15:07:01] w321:在没有依赖提供者的包上跳过依赖注册:Netfx46Full [1FE4:230C] [2016-04-08T15:07:01] i052:条件'SecretCode = foo'的计算结果为false。 [1FE4:230C] [2016-04-08T15:07:01] i201:计划包:MySetup,状态:缺席,请求默认:缺席,请求:缺席,执行:无,回滚:无,缓存:否,未缓存:不,依赖:无

安装页面

    <Page Name="Install">

    <!--
    <Richedit Name="EulaRichedit" X="11" Y="80" Width="-11" Height="-70" TabStop="yes" FontId="0" HexStyle="0x800000" />
    <Checkbox Name="EulaAcceptCheckbox" X="-11" Y="-41" Width="260" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
    -->

    <Text Name="SomeText" X="60" Y="50" Width="-11" Height="-70" TabStop="no" FontId="0" >
    <![CDATA[
    Please enter the secret code in the following field.
    ]]>
    </Text>

    <Editbox Name="SecretCode" X="85" Y="150" Width="-91" Height="21" TabStop="yes" FontId="3" FileSystemAutoComplete="no"  />

    <Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.InstallOptionsButton)</Button>
    <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button>
    <Button Name="WelcomeCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
</Page>

Bundle.wxs

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
  xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
  xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
  xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension" >

<Bundle Name="My Bootstrapper" Version="8.0.0.682" Manufacturer="FooBar" UpgradeCode="33AAE528-A1F0-45DD-AAF5-A83B4B749F10">

<WixVariable Id="WixStdbaThemeXml" Value="Themes\ExtractionTheme.xml" />
<Variable Name="SecretCode" bal:Overridable="yes"/>

<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense" >
      <bal:WixStandardBootstrapperApplication SuppressOptionsUI="yes" LicenseUrl=""  LogoFile="graphics\logo.png" LogoSideFile="graphics\logoSide.png"  />
    </BootstrapperApplicationRef>

    <Chain>

      <MsiPackage 
    Id="MySetup" 
    Cache="no" Compressed="yes" DisplayInternalUI="yes" 
    InstallCondition="SecretCode=foo" 
    SourceFile="SetupFiles\MyInstaller.msi" />



    </Chain>

  </Bundle>

</Wix>

0 个答案:

没有答案