Windows 安装程序在安装的旧版本中具有相同 GUID 时创建具有旧名称的文件夹
Windows Installer creates folders with old names when they have the same GUID in older version that was installed
我们有一个使用 WIX 构建的 windows 安装程序。它安装在某个服务器上。
我们更改了一个文件夹的名称,但相应组件的GUID 是相同的。然后我们进行卸载和安装。该文件夹是用旧名称创建的。我试图在 windows 注册表中找到解决方案,但失败了。
应该对系统进行哪些清理以删除旧安装程序的痕迹?当然更改组件的 GUID,安装此文件夹是一种解决方法,但应该可以在不更改代码的情况下实现。
更改名称需要更改组件 GUID。其他都是违反组件规则的。
简单解决方案:更改安装路径需要更改组件 GUID,因为 MSI component rules - 所以一起更改,否则混淆结果。技术细节如下。
如果更改组件 GUID 不是一个选项(应该是),您应该能够 "fix" 通过在 InstallExecuteSequence
早期安排 RemoveExistingProducts
来解决您当前的问题(一般方法以避免由 MSI 文件设计问题和组件引用错误引起的问题)。或者更确切地说,你会避免看到的问题,实际的根本原因可能仍然存在,它只是被避免了。
我想目录 table 中也可能存在导致此问题的问题(使用 WiX 时不太可能)。
解释:理解 MSI 组件化的核心是绝对路径是引用计数的,而不是文件本身: Change my component GUID in wix? 换句话说:the component GUID does not follow a file around if it moves
.
MSI 的总体概念是 组件 GUID(唯一标识符)和 1:1 映射 =33=]绝对路径(安装位置/关键路径)。完整路径,包括文件名(如果有)。
因此,重命名文件夹意味着您应该为所有以该文件夹为目标的组件生成新的 GUID(因为绝对路径已更改)。有点难以理解和合理化,但这就是设计。
WiX features auto-magic for automatically setting the component GUIDs dealing with changes like folder renames and re-targeting in an automagic-fashion (recommended read). A component GUID is calculated 基于安装文件夹(绝对路径)。
我们有一个使用 WIX 构建的 windows 安装程序。它安装在某个服务器上。
我们更改了一个文件夹的名称,但相应组件的GUID 是相同的。然后我们进行卸载和安装。该文件夹是用旧名称创建的。我试图在 windows 注册表中找到解决方案,但失败了。
应该对系统进行哪些清理以删除旧安装程序的痕迹?当然更改组件的 GUID,安装此文件夹是一种解决方法,但应该可以在不更改代码的情况下实现。
更改名称需要更改组件 GUID。其他都是违反组件规则的。
简单解决方案:更改安装路径需要更改组件 GUID,因为 MSI component rules - 所以一起更改,否则混淆结果。技术细节如下。
如果更改组件 GUID 不是一个选项(应该是),您应该能够 "fix" 通过在 InstallExecuteSequence
早期安排 RemoveExistingProducts
来解决您当前的问题(一般方法以避免由 MSI 文件设计问题和组件引用错误引起的问题)。或者更确切地说,你会避免看到的问题,实际的根本原因可能仍然存在,它只是被避免了。
我想目录 table 中也可能存在导致此问题的问题(使用 WiX 时不太可能)。
解释:理解 MSI 组件化的核心是绝对路径是引用计数的,而不是文件本身: Change my component GUID in wix? 换句话说:the component GUID does not follow a file around if it moves
.
MSI 的总体概念是 组件 GUID(唯一标识符)和 1:1 映射 =33=]绝对路径(安装位置/关键路径)。完整路径,包括文件名(如果有)。
因此,重命名文件夹意味着您应该为所有以该文件夹为目标的组件生成新的 GUID(因为绝对路径已更改)。有点难以理解和合理化,但这就是设计。
WiX features auto-magic for automatically setting the component GUIDs dealing with changes like folder renames and re-targeting in an automagic-fashion (recommended read). A component GUID is calculated 基于安装文件夹(绝对路径)。