Dav*_*son 9 windows-installer guid wix msi-patch
我正在学习Windows-Installer和Wix,并且有很多与它如何工作有关的问题:
如果组件 GUID 发生更改,但组件中存在相同的文件,那么重大升级时会发生什么情况?
首先,问题是旧组件是否被卸载。如果您没有将升级配置为卸载产品的早期版本,则该组件将不会被删除(尽管其文件可能会被覆盖)。另请参阅问题 2 的回答。
其次,问题是是否会安装新组件。仅当组件的键路径丢失时才会安装该组件。如果密钥路径是版本文件,则较低版本也算作“丢失”。
最后,如果新组件被标记为安装,并且 Windows Installer 遇到与其尝试安装的文件同名的文件,则文件版本控制规则将确定是否替换该文件。例如,版本较高的文件不会降级。
如果从产品中删除某个组件,重大升级时相关文件会发生什么情况?卸载时原始文件会被删除吗?
除非您将正确的条目放入升级表和告诉 Windows 安装程序删除旧产品的 InstallExecuteSequence 中,否则旧组件将被保留。请参阅 Alex Shevchuk 的这篇博客文章,了解如何在 wix 中创建删除旧版本的安装程序的指南。
我是否正确地说,重大升级将替换所有组件中的所有文件......
否。这取决于是否先删除旧组件、是否根据密钥路径安装新组件以及文件版本控制规则。
假设在不使用安装程序的情况下将产品部署到计算机上。如果您随后创建了一个安装程序,其中组件中的文件与已安装目录中的文件同名,那么如果您尝试安装,这些文件会发生什么情况?
同样,这取决于组件是否安装,取决于它们的密钥路径和文件版本控制规则。
我是否正确地说,如果我使用 heat 这样的工具来创建一个包含目录中所有文件的 xml 文件(例如网站),那么您必须保持 GUID 相同(手动或使用脚本) ,或者你只能进行重大升级?
正确的。GUID 是组件的标识,因此如果您更改 GUID,则会存在两个组件(在产品的旧版本和新版本中)将相同的资源安装到相同的目标位置。根据 MSDN 的说法,这是一个禁忌:“永远不要创建两个以相同名称和目标位置安装资源的组件。”