gpt4 book ai didi

wix - 如何防止安装两次具有相同升级代码/版本的 WiX 包

转载 作者:行者123 更新时间:2023-12-04 04:41:28 25 4
gpt4 key购买 nike

我有一个用 MSI 打包的应用程序,它与各种所需的第三方工具一起制作成 WiX 包。由于应用程序的工作方式,我已禁用 MSI 中的修改和修复操作,以便在再次安装相同版本之前需要完全卸载。

当我单独运行 MSI 时,它按预期工作:安装程序不能运行两次。再次运行完全相同的 Bundle 时同样适用。但是只需重新构建包(使用相同的 UpgradeCodeVersion ),安装就会继续进行(这次要快得多),我最终会在已安装的程序中出现重复的条目。我真的很想阻止这种情况并使捆绑包作为 MSI 工作。

我已经尝试在捆绑包上设置各种条件; NOT WixBundleInstalled , WixBundleInstalled != 1等。但这些似乎都不起作用。

作为引用,这里是 bundle 语句:

<Bundle UpgradeCode="{FAF9CBDD-BE89-4B18-9921-FD5B426B5B0C}" IconSourceFile="$(var.SolutionDir)Resources\product.ico" 
Name="Product 4.4" Version="4.4.0.0" Manufacturer="My Company" DisableModify="yes" Condition="NOT (WixBundleInstalled = 1)">

最佳答案

如果添加 OptionalUpdateRegistration标签,您将在注册表中获得一个条目,您可以将其用作 InstallCondition适用于您的 MSI 软件包

<OptionalUpdateRegistration ProductFamily="MyProductFamily" Name="MyAppBundle"/>
<util:RegistrySearch Id="SearchForMyProduct" 
Root="HKLM"
Key="SOFTWARE\WOW6432NODE\MyCompany\Updates\MyProductFamily\MyAppBundle"
Value="PackageVersion"
Result="exists" />
<MsiPackage Id="MyMsi"
InstallCondition=SearchForMyProduct
DisplayName="My Wonderful Product"
SourceFile="MyProduct.msi"
ForcePerMachine="yes"/>

这将阻止新版本的捆绑包再次安装“MyProduct”。这不会阻止在您已经从 MSI 安装包之后安装它。要做到这一点,您还可以使用 RegistrySearch由您的 MSI 创建的 key 的标签。

关于wix - 如何防止安装两次具有相同升级代码/版本的 WiX 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23783045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com