我们每周都会自动生成设置,以便修复错误或为我们的产品引入新功能。
所有组件都在Wix Library(ies)预构建步骤中自动收获。 例如:
"%WIX%BIN \ Heat.exe" project"%SolutionDir%projectNameXXX.Web \ projectNameXXX.Web.csproj" -configuration%FlavorToBuild%-directoryid dirBE9FDAE56D974104BBF8070FB6CC7F69 -platform AnyCPU -pog Content -projectname projectNameXXX.Web -ag -sfrag -out"%ProjectDir%projectNameXXX.Web.wxs"
因此,对于我们正在部署的每个文件,都有一个带有“*”Guid的组件。
我们还在任何先前版本的设置(比如说V0)和当前版本(V1)之间自动化了补丁创建。只要V1没有删除(或重命名)文件,就会创建并正在部署补丁。我们不介意,只要更新了文件和新文件,V0中的文件就不会被删除。
到目前为止,我已经完成了数十项测试,例如: 在蜡烛上添加-sfdvital以强制文件不重要,但我终于发现问题来自组件,而不是文件......;
另一个重要的测试是在V0中的3个组件上设置硬编码Guid,我在V1设置中删除了。生成的补丁已安装(要删除的文件仍在磁盘上,所有其他文件更新都已部署)。卸载安装程序后,除3个文件外,所有内容都将被删除。不幸的是,如果安装程序V1删除3个文件但添加了1个其他文件,则修补程序不会安装,它会在遇到第一个要删除的文件时立即停止。
SELMGR:ComponentId' {68FB7BC2-8D59-4CFB-88F5-9AA8CA570345}'已注册到功能' ProductFeature',但在组件表中不存在。不支持从功能中删除组件! 相关主题:
Remove file during minor upgrade
没有提供可行的解决方案,因为我不能应用“穿刺模式”技术,或添加标签,因为这不能自动完成。或者可以吗? 如果用户必须编辑V0 msi,获取组件ID并将其添加到新的msi或补丁,这对我们来说不是解决方案。我们正在部署超过25000个文件。重大升级也不是解决方案。 任何想法都会受到欢迎!
答案 0 :(得分:1)
您无法删除该组件,但您可以将其暂时转换并将其与具有false值的属性相关联,以使该文件实际上不在系统上。组件仍然存在,但文件将消失。如果要重命名文件,则同样适用。如上所述,安排文件不存在,并将重命名的文件作为新组件添加到现有功能。
次要更新实际上用于修复现有资源,而不是添加,重命名或删除它们,这就是最安全的解决方案是重大升级的原因。
答案 1 :(得分:-1)
我们终于设法生成了成功安装的次要更新补丁。
以下是我们所做的:
“%WIX%bin \ dark.exe”“%OldSetupDir%SetupV0.msi”“%OldSetupDir%SetupV0.wxs”
也许这不是最好的解决方案,(对注册表项不是很自豪),我们尝试添加空的createfolder标签,但是create folder标签使得补丁可以卸载。