我使用WiX来安装我的.msi,我正在使用Bundle元素生成一个WiX包。我试图在“添加/删除程序”上不显示Bundle,因此我设置了Bundle元素的属性如下:
<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安装,并执行一些版本控制检查等等。
所以我的问题是:当应用程序从“添加/删除程序”中卸载时,是否也可以卸载隐藏包?
发布于 2014-02-06 19:29:54
若要扩展Tom的答案,请从Bundle标记中删除禁用项
<Bundle Name="$(var.ProductName)" Version="!(bind.packageVersion.MSIPackage)"
Manufacturer="$(var.ProductManufacturer)" UpgradeCode="$(var.UpgradeCode)">您可以修改MsiPackage标记以隐藏MSI不受添加/删除程序的影响。
<MsiPackage
Id="YOUR-ID"
Vital="yes"
DisplayName="$(var.ProductName)"
SourceFile="$(var.Source.TargetPath)">
<MsiProperty Name="ARPSYSTEMCOMPONENT" Value="1"/>
</MsiPackage>这将在添加/删除程序中只留下一个条目。您的包现在将处理安装和卸载的UI,并将正确地允许安装其他版本的包。
发布于 2014-01-29 02:12:34
嗯,您可以在msi中使用自定义操作,但不需要。
您已经颠倒了包和包之间的设计关系。我建议您隐藏包并在ARP中显示引导程序。
引导程序引擎("burn")是一个与Windows安装程序协作的包管理器。它们一起处理包的升级和卸载。如果,在理解了它的工作原理之后,你不想要它所做的,那么你可能想要一个自我提取器,而不是燃烧。(一些确实使用WiX的项目是Visual和WiX本身。)
发布于 2017-09-27 16:01:56
每次运行安装程序时使用-repair选项。这是一次黑客攻击,但很有效。问题是,包卸载是隐藏的,当运行卸载时,您只删除包内部,而不是包。
这将导致在卸载包后再次运行安装时的问题。安装程序认为包仍然安装。通过使用-repair选项(每次安装包时),您将告诉它,如果没有包,则要么安装该包。或者,如果包被移除,就修复它。
-repair =修复(如果没有安装,则安装)
https://stackoverflow.com/questions/21410593
复制相似问题