gpt4 book ai didi

windows - 防止多次安装

转载 作者:可可西里 更新时间:2023-11-01 11:48:35 26 4
gpt4 key购买 nike

我正在使用 WiX 工具集 3.10.2 为我的产品构建安装程序。

解决方案中有两个 WIX 项目,一个从已编译的二进制文件构建 MSI,另一个使用 WixStandardBootstrapperApplication 从 MSI 构建 setup.exe。

如果我增加版本,它工作正常,提供升级。

如果我第二次启动相同的安装程序,它工作正常,打开“修改设置”屏幕。

问题是,我在不增加版本的情况下重建安装程序后,它无法检测到以前的安装,并愉快地安装了第二次(所以“卸载”控制面板有多个相同的项目)。

如何阻止它,只允许产品的单个安装实例?

微星:

<?include "..\Version.wxi"?>

<Product Id="*" Name="xxx" Language="1033" Version="$(var.vvvVersion)"
Manufacturer="yyy" UpgradeCode="0d88cab0-d278-43bb-b891-607bc01c4dec" >
<MajorUpgrade DowngradeErrorMessage="A newer version of xxx is already installed." />

执行文件:

<?include "..\Version.wxi"?>

<Bundle Name="xxx" Manufacturer="yyy" Version="$(var.vvvVersion)"
UpgradeCode="eac46fb0-09d1-4c29-8fc1-984dddb35e50"
IconSourceFile="$(var.SolutionDir)applicationIcon.ico" >

最佳答案

如果当前安装的 bundle 的版本 <= 已安装的 bundle 的版本,则 bundle 的默认行为是保留先前的 bundle 。

有两种方法可以解决这个问题。一种实现起来相对简单,另一种需要编辑 Bootstrap 应用程序的代码。

如您所述,解决此问题的第一种方法是将 Bootstrap 的版本与代码的构建号或修订号相关联,以便版本的一部分始终增加。这样 Bootstrap 总是知道删除以前安装的 bundle exe。请注意, Bootstrap 应用程序确实考虑了版本的全部 4 个部分,这与 MSI 的版本不同,后者会丢弃第 4 个数字。这是我在 Bootstrap 应用程序中实现的解决方案。

解决此问题的第二种方法是覆盖 OnPlanRelatedBundle 中的 requestedState。 (供引用https://sourceforge.net/p/wix/bugs/3065/)

关于windows - 防止多次安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36878201/

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