我使用旧的(目标图片)msi和新的(升级图片)msi创建了一个Advanced Installer的补丁。检查MSP文件我发现它包含已修改的文件和全新文件。问题是在安装过程中它只安装“添加”的文件。现有文件被忽略。我已经尝试过MSIEXEC开关:
..以不同的顺序和组合(即“REINSTALLMODE = aums REINSTALL = ALL”),所以不要仅仅通过告诉我尝试REINSTALLMODE = omus或类似的东西来回复或评论。
答案 0 :(得分:1)
创建补丁时需要遵循a set of rules,你检查过吗?打破其中一个可能会导致意外行为,例如您现在遇到的行为。
要检查规则,您可以从项目文件之间的差异开始,因为它们是标准的XML文件,并检查其产品代码,组件GUID等...例如,文件夹同步是一个常见的问题,当遇到创建补丁,因为这会更改组件GUID。
答案 1 :(得分:1)
由于某些奇怪的原因,我想要更新的所有核心组件(exe,dlls)都设置为“不要使用Windows Installer注册此组件”。 我想这是某种项目错误,因为它已经很老了,并且通过不同的Advanced Installer版本(7,8和9)进行了迁移。
无论如何,即使使用固定补丁,我也无法正确更新我的应用程序。 Windows Installer一直要求我浏览目标映像msi文件(以前版本的缓存安装程序)。
但是,并非所有客户都保留这些文件(通常此缓存文件存储在%APPDATA%文件夹中)。所以我找到了一个解决方法:
第一次:
"myPatch.msp" /n {150F6CE2-8C12-414B-9377-F087A62E6B67} REINSTALLMODE=c /qb
第二次:
"myPatch.msp" /n {150F6CE2-8C12-414B-9377-F087A62E6B67} REINSTALLMODE=dep /qb
REINSTALLMODE = c 基于哈希值切换文件比较算法,因此不再需要原始设置源
REINSTALLMODE = dep 恢复所有其他missing files, files with unknown or different (from target) version
我希望这种解决方法对使用除Advanced Installer之外的MSI / MSP创作工具的人有用