首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wix贴片捆绑服务

Wix贴片捆绑服务
EN

Stack Overflow用户
提问于 2013-10-31 14:09:51
回答 1查看 1.9K关注 0票数 1

下面是两个非常基本的刻录引导程序的源代码。引导程序安装2个MSI包,然后SP1对appdata包进行重大升级。最初,这是非常好的工作,除了我有几个维修问题。

  1. 当我删除父引导程序时,它足够聪明地删除子SP1修补程序。但是,当我从Add/Remove程序中删除SP1更新时,根本没有安装任何appdata。为了重新安装appdata的原始版本,我必须对原始的Bootstrapper包进行修复。这是一个错误,还是我实现了错误?
  2. 我能够自行安装SP1包。如果还没有安装Bootstrapper,如何防止安装SP1?
  3. 如果我创建一个Bootstrapper2.0,它将正确地取代Bootstrapper1.0和SP1。如果我运行Bootstrapper 1.0,它将正确阻止。但是如果我运行SP1,它就会安装。如何将SP1限制为Bootsrapper v1?
  4. 如果前两项目前不可能,是否可以创建不可移动的SP1?(强制移除和重新安装父包以回到原来的状态。)我了解了如何使用DisableRemove和DisableModify属性,但是在添加/删除程序中根本没有显示出来,用户仍然可以返回EXE并使用WiXStdBA删除包。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-01 22:14:48

为了阻止在没有原始引导程序的情况下安装SP1,可以使用以下选项之一:

选项1:使用bundle/@条件属性

代码语言:javascript
复制
<Bundle
    Name="Test123" Version="1.0.0.0"
    Manufacturer="abc cORP" UpgradeCode=""
    Condition="((VersionNT = v6.0)">
</Bundle>

这将只适用于预先构建的wix刻录变量。详细的变量列表可以在这里找到:链接

选项2:第二个方法使用WIXBALExtension条件元素:

代码语言:javascript
复制
<bal:Condition
   Message="The Bootstrapper has to be installed in version $(var.BaselineVersion)">  
      WixBundleInstalled OR      
      ((SampleMsiInstalledState = 5) AND (SampleMsiInstalledVersion &gt;= 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" />

在这里,我们使用来自ProductSearch的WixUtilExtension来查找相关的msi包的状态和版本。然后将该版本与捆绑包(BasellineVersion)所需的最低版本进行比较。

相关链接1 相关链接2

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19708773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档