Wix补丁包服务
下面是两个非常基本的burn引导程序的源代码。引导程序安装2个MSI包,然后SP1对appdata MSI包执行主要升级。最初,这工作得很好,除了我有几个维修问题Wix补丁包服务,wix,burn,wix3.8,Wix,Burn,Wix3.8,下面是两个非常基本的burn引导程序的源代码。引导程序安装2个MSI包,然后SP1对appdata MSI包执行主要升级。最初,这工作得很好,除了我有几个维修问题 当我删除父引导程序时,它足够聪明,可以删除子SP1补丁。但是,当我从添加/删除程序中删除SP1更新时,根本没有安装任何appdata。我必须对原始引导程序包执行修复,才能重新安装原始版本的appdata。这是一个bug还是我实现错了 我能够自行安装SP1捆绑包。如果尚未安装引导程序,如何防止安装SP1 如果我创建了Bootstrapp
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle Manufacturer="ISWIX" Name="Bootstrapper" UpgradeCode="44a1059e-e7f7-46c7-9627-b720d6417d69" Version="1.0.0.0">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"/>
<Chain>
<MsiPackage SourceFile="app-1.0.msi"/>
<MsiPackage SourceFile="appdata-1.0.msi"/>
</Chain>
</Bundle>
</Wix>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle Manufacturer="ISWIX" Name="SP1" ParentName="Bootstrapper" UpgradeCode="44a1059e-e7f7-46c7-9627-b720d6417d69" Version="1.0.0.1">
<RelatedBundle Action="Patch" Id="44a1059e-e7f7-46c7-9627-b720d6417d69"/>
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"/>
<Chain>
<MsiPackage SourceFile="appdata-1.1.msi"/>
</Chain>
</Bundle>
</Wix>
要阻止在没有原始引导程序的情况下安装SP1,可以使用以下选项之一: 选项1:使用bundle/@Condition属性
<Bundle
Name="Test123" Version="1.0.0.0"
Manufacturer="abc cORP" UpgradeCode=""
Condition="((VersionNT = v6.0)">
</Bundle>
这只适用于预构建的wix burn变量。变量的详细列表可在此处找到:
选项2:第二种方法使用条件元素:
<bal:Condition
Message="The Bootstrapper has to be installed in version $(var.BaselineVersion)">
WixBundleInstalled OR
((SampleMsiInstalledState = 5) AND (SampleMsiInstalledVersion >= v$(var.BaselineVersion)))
</bal:Condition>
<util:ProductSearch Guid="[msi_prerequisite_package_product_code]"
Result="version" Variable="SampleMsiInstalledVersion" />
<util:ProductSearch Guid="[msi_prerequisite_package_product_code]"
Result="state" Variable="SampleMsiInstalledState" />
WixBundleInstalled或
((SampleMsiInstalledState=5)和(SampleMsiInstalledVersion=v$(var.BaselineVersion)))
这里我们使用WixUtilExtension中的ProductSearch来查找相关msi包的状态和版本。然后将该版本与捆绑包所需的捆绑包的最低版本(BasellineVersion)进行比较
抱歉,我发布了XML,但它不会呈现。这是我能想到的最好的分享方式。为什么不使用代码示例{}来粘贴实际的XML呢?我试了很多次。当我只粘贴XML时,它不会显示所有内容。当我把它放在引号块或代码块中时,它显得很奇怪。检查这个问题,@ChristopherPaint:关于格式,请看-在你的例子中,我会选择添加注释,因为代码块在语义上不属于列表的一部分。