我目前正在努力使用 WiX 3.7 为我们的产品构建一个工作补丁。
我们目前正处于产品开发阶段,我想在 RTM 之前验证构建补丁的过程,以便我知道原始安装程序具有所需的任何信息。
我尝试遵循 WiX 工具集网站上详述的补丁创建属性方法,我使用相同的 UpgradeCode 和 ProductCode 构建了我的两个安装程序,因为这是一个小更新 - 唯一的区别是一个名为 something_to_patch.txt 的文本文件。
当我生成补丁时,它正确地识别出 something_to_patch.txt 中的数据已经改变;msimsp.exe 的日志文件包含:
INFO Comparing Files: D:\Development\xa3-modular\XAnalyser3\Installer\Patches\tmpinstall\target\Warwick Control Technologies\X-Analyser 3\something_to_patch.txt D:\Development\xa3-modular\XAnalyser3\Installer\Patches\tmpinstall\origin\Warwick Control Technologies\X-Analyser 3\something_to_patch.txt...
INFO Comparing bytes...
INFO Different content...
INFO File Key: something_to_patch.txt is modified
INFO: Phase IV: Entering Generate Payload.
INFO: Phase V: Entering Generate MSP.
INFO: Generating Patch Metadata.
然后当我尝试安装补丁时,它似乎“安装”成功(它显示在“添加和删除程序更新”部分)并且日志表明安装成功,但是安装的文件没有更新。
通过补丁的详细日志输出,有大量信息(如有必要,我可以将其上传到某个地方),但对我来说突出的部分是行
MSI (s) (6C:60) [12:12:07:205]: Executing op: FileCopy(SourceName=gsbnpcwh.txt|something_to_patch.txt,SourceCabKey=something_to_patch.txt,DestName=something_to_patch.txt,Attributes=4608,FileSize=21,PerTick=65536,,VerifyMedia=1,,,,,CheckCRC=0,,,InstallMode=58982400,HashOptions=0,HashPart1=-656054953,HashPart2=1104329007,HashPart3=-1666156207,HashPart4=-1000780969,,)
MSI (s) (6C:60) [12:12:07:205]: File: C:\Program Files (x86)\Warwick Control Technologies\X-Analyser 3\something_to_patch.txt; Won't Overwrite; Won't patch; Existing file is unversioned and unmodified - hash matches source file
所以它知道它有一些东西要写入该文件,但它似乎跳过它,因为哈希匹配。
我已经测试了“目标”MSI 和“原始”RTM MSI 文件,它们按预期安装了不同的文本文件。
有没有人有任何建议或额外的日志文件等有助于追踪问题。如有必要,我可以添加我的 wxs 文件,但它们与WiX 网站上的示例几乎相同。
问候, 安东尼