下面是两个非常基本的烧录引导程序的源代码。Bootstrapper 安装 2 个 MSI 包,然后 SP1 对 appdata MSI 包执行重大升级。最初这工作得很好,除了我有几个维修探针。
当我删除父引导程序时,删除子 SP1 补丁足够聪明。但是,当我从添加/删除程序中删除 SP1 更新时,根本没有安装任何 appdata。我必须对原始 Bootstrapper 包进行修复才能重新安装原始版本的 appdata。这是一个错误还是我实施错了?
我可以自己安装 SP1 包。如果尚未安装 Bootstrapper,如何防止安装 SP1?
如果我创建一个 Bootstrapper 2.0,它会正确取代 Bootstrapper 1.0 和 SP1。如果我运行 Bootstrapper 1.0,它会正确阻塞。但如果我运行 SP1,它会安装。如何仅将 SP1 限制为 Bootsrapper v1?
如果目前无法实现前两项,是否可以创建不可移动的 SP1?(强制删除和重新安装父捆绑包以恢复原始状态。)我看到了如何使用 DisableRemove 和 DisableModify 属性,但是它根本没有出现在添加/删除程序中,用户仍然可以返回EXE 并使用 WiXStdBA 删除捆绑包。
<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>