当前位置: 首页 > 知识库问答 >
问题:

如何让Wix Burn bundle阻止升级

公羊学义
2023-03-14

我发布了一系列测试版的产品,用户在安装“最终公开发行版”之前必须删除这些版本。

在这种情况下,我通常会执行主要升级,但在这种情况下,由于产品的性质,主要升级太难实现。未来的升级从“干净的基线”开始会容易得多。

是否有一种内置的方式来检测和通知用户以前安装的版本必须卸载?

或者我是否需要向捆绑包添加一个进行检查、显示消息并使捆绑包失败的包?

如果与答案相关,那么所有以前的版本都有相同的专业。少数的修补程序版本。仅更改了内部版本号,例如1.0.0.1、1.0.0.20、1.0.0.50;最终版本为1.0.0.100。

共有1个答案

仲孙俊贤
2023-03-14

假设产品MSI中的升级表是按照“正常”用法构建的,那么可以在BA中使用OnDetectRelatedMSIPack回调来评估找到的每个安装。您需要调用MsiGetProductInfo()API(或等效的DTF?)在该回调中获取版本字符串,然后分析该字符串以确定安装的版本号是否足够小,从而阻止/失败安装。

请注意,Windows Installer中的主要升级机制只检查版本四的前三个部分,因此Windows Installer本身无法区分1.0.0.1和1.0.0.100。您可能需要解决这个问题。

 类似资料:
  • 问题内容: Ajax使用回调,因为它是同步的。 我希望对远程URL块的调用直到出现一些答案为止 ,就像在Ajax中一样,但是没有异步部分,或者我要说要进行JAX调用。 是否有任何技术可以使以下事情发生(使用JQuery)(…使用JQuery或其他解决方案): 我只是想知道-想学习。 实际上,有时会阻塞直到回复合适为止。我并不是说要浏览器阻止,而只是脚本运行时。 问题答案: 您可以在使用jQuery

  • 问题内容: 是否有可能做出无法逃脱和?我目前得到: 但我正在寻找这样的事情: 问题答案: 从Go 1.7开始,您仍然 无法使用json.Marshal()做到​​这一点 。json.Marshal的源代码显示: json.Marshal总是这样做的原因是: 字符串值编码为强制转换为有效UTF-8的JSON字符串,用Unicode替换符文替换无效字节。尖括号“ <”和“>”转义为“ \ u003c”

  • 问题内容: 是否可以使用angularjs拦截器阻止请求? 问题答案: 在1.1.5及更高版本中,您可以使用配置对象的’timeout’属性。 从文档中: 超时– {number | Promise} –超时(以毫秒为单位),或承诺应在解决后中止请求。 简单的例子:

  • 我正在做一个正在改造/现代化的项目,其中有一个小的RMI部分,不幸的是,我以前从未与RMI合作过。 我不明白的一件事是,为什么在我最初创建RMI客户端之后,它一直调用其自定义SocketFactory构造函数。似乎每5分钟我就会看到一次调用构造函数的输出,即使客户端和服务器之间没有通信。 连接完成后,我应该做什么来清理和停止任何线程以进行持久化? 我在检查UnicastRemoteObject,也

  • 问题内容: 我对Go如何处理非阻塞IO感到困惑。API在我看来基本上是同步的,并且在Go上观看演示时,听到诸如“和调用块”之类的注释并不罕见。 从文件或网络读取时,Go是否使用阻塞IO?还是当在Go Routine中使用某种魔术来重写代码? 来自C#背景,这感觉非常不直观,在C#中,当使用异步API时我们使用了关键字。这清楚地表明,API可以产生当前线程,并在以后的延续中继续。 因此,TLDR;当

  • 问题内容: 强制保持Node.js进程运行的最佳方法是什么,即使其事件循环不为空,从而防止进程终止?我能想到的最好的解决方案是: 如果您将间隔时间保持足够长,它将使间隔运行,而不会引起过多干扰。 有更好的方法吗? 问题的长版 我有一个使用Edge.js来注册回调函数的Node.js脚本,以便可以从.NET中的DLL内部对其进行调用。每秒将调用此功能1次,发送一个应打印到控制台的简单序列号。 Edg