我正在为基于WiX的安装程序进行升级功能.
作为安装的一部分,我们正在安装web.config文件,然后使用自定义操作更新文件中的连接字符串.
但是,当我们运行升级时,这会导致问题.我们希望在InstallFinalize之后安排RemoveExistingProducts,因为这在不删除和重新安装未更改的文件方面效率最高.但是,当Windows Installer尝试确定是否应该更新它时,这会留下原始的web.config文件.由于它的上次修改日期比其创建日期更新,因此Windows Installer决定不更新它(请参阅Windows Installer使用的版本控制规则).但我们需要更新它.
一个显而易见的解决方案是将RemoveExistingProducts的调度更改为InstallValidate之后 - 但这样效率很低,而且,我认为如果我们需要这样做,我认为它不会让我们有机会从现有文件迁移设置.
还有其他想法吗?
在部署到生产环境之前,我正在OPS环境中对MSI进行兼容性检查.
我正在部署的第一部分是最新的MSI说"在MSIv1之上的MSIv2到OPS环境,MSIv2自动卸载MSIv1并安装MSIv2而没有任何问题.
现在,当我在MSIv2上安装MSIv1时.MSIv1已安装,它在安装的控制面板中显示.但是当我看到目录路径时,bin文件夹中没有.dll文件.
我正在日志文件中记录MSI的操作告诉...日志:不允许安装组件:{AC7BC9EB-4F1D-4FEE-B0C2-478966229D8E}因为存在具有更高版本密钥文件的相同组件