我使用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>