问题标签 [msi-patch]

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 回答
716 浏览

wix - 使用 Purely Wix (v3.10.3.3007) 创建时,Wix 次要升级补丁不会更改版本

1)我使用以下 wix 教程(使用 PCP)创建了一个补丁 http://wixtoolset.org/documentation/manual/v3/patching/patch_building.html

本教程使用相同的 product.wxs(1.0.0 版本)生成 MSI,但我使用 product1.0.wxs(1.0.0)和 product1.1.wxs(1.1.0),这样我们将获得一个 1.0.0 版本的 MSI 和另一个 1.1.0 版本的 MSI。

补丁已成功安装,并在“程序和功能”中将版本从 1.0 更改为 1.1(我还可以在“已安装的更新”中看到补丁)

2)现在,我使用以下 wix 教程(使用 Purely Wix)创建了一个补丁 http://wixtoolset.org/documentation/manual/v3/patching/wix_patching.html

在本教程中,product.wxs 中也使用相同的版本 (1.0.0) 来创建 1.0\product.msi 和 1.1\product.msi。但是,我使用了两个单独的 .wxs 文件 - 一个带有 Version="1.0.0" (product1.0.wxs),另一个带有 Version="1.1.0" (product1.1.wxs) - 就像以前一样。

当我安装上面获得的patch.msp 时,可以在“已安装的更新”中看到它,但在“程序和功能”中产品版本没有从1.0.0 更改为1.1.0。

在比较了 2 个补丁安装日志后,我了解到通过 Purely Wix 方法获得的补丁被视为“小更新”补丁。

尽管我更改了版本,但我正在努力找出为什么将补丁创建为“小更新”补丁而不是“小更新”补丁。

熟悉这个的人可以帮忙吗?

注意:请不要要求我进行重大升级。我只在寻找小升级

0 投票
0 回答
34 浏览

windows-installer - 次要升级补丁问题

我创建了一个版本为 5.2.1 的安装程序,补丁 5.2.2 为现有功能添加了一些新组件,而安装补丁 5.2.3 时我的一项功能没有安装。它的状态是 Advertise,因为日志表明 5.2.2 添加的组件之一已从 5.2.3 中删除。我检查了 5.2.3 版的 MSI,通过在 MSI 5.2.2 上打开补丁 5.2.3,组件的更改绝对为零。guid、keypath 都是一样的。谁能帮助我的安装程序检测到该组件已从补丁中删除的原因可能是什么?

0 投票
1 回答
232 浏览

wix - WIX - 在 MSP 中重命名快捷方式

我对 WiX 没有那么丰富的经验,并且在通过 MSP 更新期间重命名快捷方式时遇到问题。在我以前的 MSI 中,我使用以下命令创建了一个桌面快捷方式

在我的 MSP 中,我想这样重命名 schortcut

当我运行升级时,我得到的是一个新的桌面快捷方式以及孤立的旧快捷方式。我从这篇文章中了解为什么会发生这种情况,为什么在主要升级(迁移)之后有两个快捷方式?但我不确定如何解决此问题并更新原始快捷方式名称或删除孤立的快捷方式名称。我无法构建 MSI,它必须是 MSP,因此欢迎任何建议。

先感谢您 ;-)

0 投票
0 回答
51 浏览

wix - 未更改的文件中断补丁卸载

一般信息:

我们使用 WIX 3.10.3 来构建我们的 Base Msi 和 Patch Msp。

支持 Windows 安装程序版本 301

补丁是使用文档中的 Purely Wix 方法构建的。

问题的根本原因:

Base Msi 包含一个名为“Sample.dll”的文件,版本为 1.0.0.0,语言为“中性”。在构建补丁时,WIX 认为 Sample.dll 的内容发生了变化,但版本保留为“1.0.0.0”,语言为“中性”。

Sample.dll 用于创建补丁,尽管内容没有变化,但与用于创建的基本 dll 和 msp dll 相比,我们能够识别出二进制变化。请参阅Beyond Compare的以下屏幕截图

Beyond Compare MSI 和 MSP 包含的 DLL 快照

在安装 Base 和补丁期间,根据 Windows Installer 文件版本控制规则 ( https://msdn.microsoft.com/en-us/library/windows/desktop/aa368599(v=vs.85).aspx ),文件“Sample.dll”没有通过补丁重新安装,因为版本和语言相同。因此,在删除补丁时,Windows 安装程序会请求 msi 的来源。这导致我们的客户卸载失败,因为在卸载期间无法使用 msi 的源。

这是一个博客条目,它说这个问题在 Windows 安装程序版本 301 ( https://blogs.msdn.microsoft.com/heaths/2007/06/28/unchanged-files-break-patch-uninstall) 中被识别。

我们已经尝试在 WIX 中将安装程序版本支持更新为 405,但问题仍然存在。

在这里,补丁创建考虑了基本 msi 和补丁 msi 之间的二进制更改以创建 Msp,而 Windows 安装程序在安装时考虑了文件版本控制规则。

是否有一些更改可以帮助避免此类情况以及如何确保仅考虑真正更改的文件来创建和安装补丁?

0 投票
0 回答
475 浏览

c# - 使用 C# 或任何工具以编程方式提取 MSP 文件中的内容,无需应用补丁即可查看内容(例如:MSI unpacker)

我想在不安装补丁的情况下查看 MSP 文件的文件版本、文件名、注册表设置等内容。就像(MSI Unpacker Link)为我提供这些数据一样。

是否有可以为 MSP 文件服务的工具?

0 投票
1 回答
233 浏览

wix - 我们能否在 MSP 中提供更新的文本文件(任何非版本化文件)

第 1 步:我有一个更新的 msi,它有一个新的文本文件:env.info 从中生成的 msp 将此文本文件放在文件夹中。

第 2 步:我已经更新了这个文本文件并再次生成了一个 msp,现在这个 msp 不会替换新文件。

知道如何在 msp 中处理非版本化文件吗?

0 投票
0 回答
328 浏览

c# - 发布桌面应用程序 C# 时如何修复 .Net Framework 3.5 SP1 错误?

我正在尝试使用“从与我的应用程序相同的位置下载先决条件”来部署 C# 桌面应用程序。当我启动发布向导时,我收到此错误:

严重性代码说明项目文件行抑制状态错误要在先决条件对话框中启用“从与我的应用程序相同的位置下载先决条件”,您必须为项目“.NET Framework 3.5 SP1”下载文件“DotNetFX35SP1\dotNetFX20\winforms_64.msp”到您的本地机器。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=616018。部署测试

所以我不明白如何处理这个错误我下载了.Net 3.5 SP1,但我不知道应该在哪里安装它。如果这有助于我使用 Visual Studio 2017 来开发这个应用程序。

0 投票
1 回答
258 浏览

merge - 如何使用 WiX 将 MSM 包含到 MSP 中

我正在使用 WiX 构建 MSI 和 MSP。

在我的 MSI 中,我有一个 MSM 文件。

我对 MSM 中的文件进行了一些更改并重新生成了相同的文件。

现在我想创建一个包含 MSM 更改的补丁/MSP。

请帮助我使用更新的 MSM 文件创建 MSP。

0 投票
1 回答
120 浏览

wix - MsiPatchRemovalList on MSI uninstall

I have a CustomAction inside my MSI Project with a condition of MsiPatchRemovalList, this is because i need to execute this for each patch uninstall process.

This is working properly, when i execute the uninstall patch it is executing the CustomAction and do the process refere to the specific patch without error.

The problem is when i uninstall the MSI, all patches are uninstalled but the event is not fired.

Note: execute in the MSI uninstall is not an option because this event need to do a process specific for each patch

Update: The custom action process is take the MSIPATCHREMOVE element to know the Patch Guid and create a register key using this guid, in the register to have a historic to know what patch was uninstalled

0 投票
3 回答
937 浏览

windows-installer - MSP 安装期间出现错误 1603

在使用包含在 EXE 文件中的 MSP 文件更新我们的软件时出现错误。我有以下版本: 1.5.1810.00081.5.1810.0010

版本“0008”完全由打包到 EXE 文件(由 Advanced Installer 创建)中的 MSI 文件安装,补丁文件也是打包到 EXE 文件中的 MSP 文件。

在补丁安装过程中,我收到以下错误:

"This package can only be run from a bootstrapper."

这是 Advanced Installer 在 13.2 版或类似版本中实现的功能。如果您执行 MSI 文件,即使旁边有带有资源的 EXE 文件,此功能也会触发错误。这样您就必须执行 EXE 文件而不是 MSI 文件。但是我执行 EXE 文件,所以这是我的引导程序,我只有 EXE 文件中的资源

问题是,此错误未记录在日志文件中。日志文件中的错误有code 1603. 这与缺少权限或防病毒软件有关。然而,在停用我的防病毒软件并重新检查权限(完全访问权限)后,我仍然遇到同样的错误。

谁能帮我解决这个code 1603问题?