问题标签 [major-upgrade]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
910 浏览

wix - 如何防止 Wix 安装旧版本?

我有一个我们正在切换到 WiX 安装程序的应用程序。到目前为止,几乎一切似乎都进展顺利。我遇到的一个问题是,如果下载并尝试安装旧版本,它就会这样做。

这有点问题。如果安装了新版本,我不希望它安装旧版本。我认为问题出在“升级”组件上,但我必须承认我碰壁了。如何更改它以便旧版本看到已经安装了较新版本而不安装它?

我的测试产品现在是 2.4 版(我们正在尝试推出的最新版本)。它正确升级到 2.4.1 或 2.5 或 3.0。但是如果我制作一个 3.0 版本,然后运行 ​​2.4 的 msi,它仍然会添加它。

我的升级组件:

跟进:
在遵循 Steins 的建议后,我收到类似
“重复符号 'WixAction:InstallExecuteSequence/RemoveExistingProducts' 找到”
的错误 在查看 Product.wxs 文件后,<InstallExecuteSequence>我不得不删除<RemoveExistingProducts Sequence="6550" />它,因为这是它所指的重复项。这样做之后,安装程序工作并且旧版本不能再安装在新版本之上。

0 投票
2 回答
1728 浏览

wix - 仅在卸载期间而不是在主要升级期间运行 Wix 自定义操作

我正在尝试使用计划在标准操作InstallInitialiseInstallFinalize标准操作之间的自定义操作来删除文件。

MajorUpgrade element用于设计升级。

但是,我希望自定义操作仅在卸载期间运行,而不是在主要升级期间运行(这包括卸载和安装)。

我使用以下条件来执行 CUstom 操作:

  1. (NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")
  2. REMOVE AND NOT WIX_UPGRADE_DETECTED

有没有办法使用 Wix 中的属性来唯一地检测主要升级?

0 投票
1 回答
2580 浏览

wix - WIX(删除所有以前的版本)

在“添加或删除程序”下,我可以看到五个版本:

尝试安装 ApplicationName v3.0.5.30 时,不会删除所有以前的版本。保留的版本是:

我已经阅读了有关如何实施 WiX 安装程序升级的所有内容?

我使用的代码是:

我做错了什么?

我还尝试构建版本 v3.0.6.0,安装后我得到了相同的结果。

UpgradeCode 对于所有版本都是相同的,我查看了 Orca 图像

图像上的最后一个 UpgradeCode 适用于版本 3.0.6.0

0 投票
2 回答
1745 浏览

wix - 如何使 WIX 在执行重大升级时不删除特定文件

我有两个组件,其中一个组件具有simple.exe,另一个组件具有sample.dll一个 MSI。如果我同时安装 MSIsimple.exe并将sample.dll安装和在某个文件夹下的程序文件中,它有两个是.exe.dll。如果我对整个 MSI 进行重大升级,它会将在程序文件中创建的文件夹替换为新文件夹。.exe那么,如果我更改/提供文件更新,如何使 wix 不被替换.dll,反之亦然。在提供更新的同时,我将使用一些文件.dll注册和注销密钥。.bat请帮我解决我需要有条件的重大升级,当我更改它们时将替换特定文件。

请找到以下代码:

product.wxs

0 投票
1 回答
1406 浏览

wix - wix Restart Manager 成功关闭应用程序但说它不能

在我的 wix 项目中,我有一个文件“connect.exe”,通常会在卸载或更新期间运行。在卸载和主要更新期间,Wix 将在关闭之前提示通常的“在继续安装之前应关闭以下应用程序”。

此对话框成功关闭程序:

但紧接着,它会抛出一个错误,说它无法关闭应用程序:

即使应用程序在系统上明显关闭。此外,在安装程序完成更新后进行重大更新时,它不会重新启动它。

其他一切似乎都很好。

值得注意的是,connect.exe 程序运行的窗口大部分时间都是隐藏的。它主要用作通过 Windows 系统服务运行的 service.exe 的屏幕显示。

我该如何解决这个问题?我没有在 connect.exe 应用程序端处理什么吗?

connect.exe组件入口:

0 投票
2 回答
1433 浏览

wix - 向 MSI UpgradeTable 添加条目以删除相关产品

WiX 安装程序产品节点具有属性UpgradeCode。它用于指代同一产品的先前版本。该值存储在UpgradeTable中。UpgradeTable 由FindRelatedProducts操作解析。

UpgradeCode允许删除以前的具有相同的产品UpgradeCode。但计划是将几个过时的遗留产品整合到一个组合的单一产品中。这个UpgradeCode遗留产品的 是已知的。我希望将此代码添加到 UpgardeTable 也会删除此旧产品。这可以通过填写 UpgradeTable 来完成。

如何在 WiX 设置的 UpgradeTable 中添加更多条目?

编辑:需要什么语法?

有没有更好的方法来删除升级后过时的产品?

0 投票
0 回答
290 浏览

windows-installer - 使用 InstallShield,我如何“强制”特定的动态链接文件覆盖更高版本的文件?

我有一个用于安装应用程序的基本 MSI 项目。由于各种原因,此软件包包含一个 JRE。在 InstallShield2016 项目中,打包的 JRE 由一个组件表示。构成 JRE 组件的文件是动态链接的。

最近,我从 Oracle Java 8 迁移到 OpenJDK 8。对于这次迁移,我进行了必要的更改,以便在从旧包升级到新包时执行重大升级。这会导致 InstallShield 先卸载以前的软件包,然后再安装新软件包。

这是我遇到问题的地方。在移除旧版本和安装新版本的过程中,MSI 从 Oracle Java 8 JRE 中查看“jvm.dll”,然后在 OpenJDK 8 JRE 中查看同一文件,发现新文件的文件版本为低于旧文件。

Oracle Java 8 'jvm.dll' 文件版本:25.45.0.2

OpenJDK 8 'jvm.dll' 文件版本:8.0.2220.10

没有手动更改文件版本,我不确定如何强制将新文件安装在前一个文件之上。有没有其他选择?

0 投票
0 回答
24 浏览

wix - Wix 工具集 - 主要升级 - 希望在主要升级时保持某些文件完整而不删除它们

我想我没有清楚地解释我的要求,所以删除了原来的问题并再次询问。对此深表歉意!!

基本上,我有一个包含近 3000 个文件的文件夹(其中大部分是从我们不断更改的项目中获取的 dll)。在这 3000 个文件中,有些需要在升级时保持不变(我将使用您刚刚测试和工作过的“永久”标志。谢谢)。

对于剩余的dll文件。我需要一种方法,可以将新建的文件作为 msi 包推送,以便在字段的主文件夹中更新它们而无需卸载。我无法采用补丁路线,因为我的公司希望在控制面板中只看到一个条目 > 带有最新版本产品的程序(就像任何其他常用软件,如 notepadd++ 或 ccleaner 等),但仍会更新新增强的 dll。

有时,我们只向现场发送 1 个 dll,而大多数时候我们必须发送数百个 dll。因此,我们正在寻找一个不仅更新(甚至替换也可以)现有 dll 的重大升级。选项“afterInstallExecute”对我不起作用,因为它正在删除 dll,尽管我正在更改版本并发送。

<MajorUpgrade Schedule="afterInstallExecute" AllowDowngrades="no" DowngradeErrorMessage="A newer version of $(var.ProductName) is already installed. Setup will now exit." />

0 投票
2 回答
158 浏览

installation - 使用 InstallShield 创建的 Setup.exe 文件已成功安装,但应用程序没有更新,它保留以前安装的版本

我面临的问题是具有新应用程序版本的 Setup.exe 已成功安装,但存在的先前版本未升级。

当我运行应用程序时,它会在以前的版本(4.5)中打开,但在应用程序名称旁边的控制面板中显示新应用程序的版本号(4.6)。控制面板中没有两个实例。

Setup.exe 文件是使用 InstallShield 2018 Express 创建的。在升级路径中,我添加了从以前的 setup.exe 文件创建的新路径。升级代码与以前的版本相同,在一般信息中我更新了产品代码。

对于“最大版本”编号,我尝试使用 4.6、4.5.1、5.0 并且总是出现相同的问题。

“包括最低版本”设置为否

过去我已经成功完成了几次,但由于某种原因,这次它不起作用。

使用相同的 setup.exe 文件应用程序从头开始成功安装,但是当存在以前的版本时,它不能按预期工作。

我在网上找到的解决方案都不适合我。

0 投票
1 回答
24 浏览

cakephp-4.x - 升级到 4.1 后 CakePHP 选择不再执行

在 CakePHP 3.X 中运行多年的查询在升级到 CakePHP 4.1 后不再执行。$order 数组包含正确的值,SQL 查询看起来不错,与 CakePHP 3.X 版本相同。升级后的应用程序中的所有其他查询运行良好。

任何人都可以帮助我理解吗?提前致谢。