首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WiX -卸载msi时如何卸载包

WiX -卸载msi时如何卸载包
EN

Stack Overflow用户
提问于 2014-01-28 15:59:48
回答 3查看 7.9K关注 0票数 4

我使用WiX来安装我的.msi,我正在使用Bundle元素生成一个WiX包。我试图在“添加/删除程序”上不显示Bundle,因此我设置了Bundle元素的属性如下:

代码语言:javascript
复制
<Bundle Name="$(var.ProductName)" Version="!(bind.packageVersion.MSIPackage)" 
      Manufacturer="$(var.ProductManufacturer)" UpgradeCode="$(var.UpgradeCode)" 
      DisableRemove="yes" DisableModify="yes" DisableRepair="yes">

DisableRemove、DisableModify和DisableRepair的“是”使绑定隐藏在“添加/删除程序”之下。

我的问题是,当我卸载应用程序时,应用程序被正确卸载,但是Bundle仍然隐藏,所以当我尝试安装其他版本的App时,它会导致一些问题,例如,新的Bundle检测到还有其他的Bundle安装,并执行一些版本控制检查等等。

所以我的问题是:当应用程序从“添加/删除程序”中卸载时,是否也可以卸载隐藏包?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-06 19:29:54

若要扩展Tom的答案,请从Bundle标记中删除禁用项

代码语言:javascript
复制
<Bundle Name="$(var.ProductName)" Version="!(bind.packageVersion.MSIPackage)"
        Manufacturer="$(var.ProductManufacturer)" UpgradeCode="$(var.UpgradeCode)">

您可以修改MsiPackage标记以隐藏MSI不受添加/删除程序的影响。

代码语言:javascript
复制
  <MsiPackage
      Id="YOUR-ID"
      Vital="yes"
      DisplayName="$(var.ProductName)"
      SourceFile="$(var.Source.TargetPath)">

    <MsiProperty Name="ARPSYSTEMCOMPONENT" Value="1"/>

  </MsiPackage>

这将在添加/删除程序中只留下一个条目。您的包现在将处理安装和卸载的UI,并将正确地允许安装其他版本的包。

票数 6
EN

Stack Overflow用户

发布于 2014-01-29 02:12:34

嗯,您可以在msi中使用自定义操作,但不需要。

您已经颠倒了包和包之间的设计关系。我建议您隐藏包并在ARP中显示引导程序。

引导程序引擎("burn")是一个与Windows安装程序协作的包管理器。它们一起处理包的升级和卸载。如果,在理解了它的工作原理之后,你不想要它所做的,那么你可能想要一个自我提取器,而不是燃烧。(一些确实使用WiX的项目是Visual和WiX本身。)

票数 4
EN

Stack Overflow用户

发布于 2017-09-27 16:01:56

每次运行安装程序时使用-repair选项。这是一次黑客攻击,但很有效。问题是,包卸载是隐藏的,当运行卸载时,您只删除包内部,而不是包。

这将导致在卸载包后再次运行安装时的问题。安装程序认为包仍然安装。通过使用-repair选项(每次安装包时),您将告诉它,如果没有包,则要么安装该包。或者,如果包被移除,就修复它。

-repair =修复(如果没有安装,则安装)

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

https://stackoverflow.com/questions/21410593

复制
相关文章

相似问题

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