【发布时间】:2009-06-18 15:46:45
【问题描述】:
症状
我有新创建的安装程序包 (MSI),用于安装我的应用程序的新版本。
我有一个新的 ProductCode 用于我的安装,但我将 UpgradeCode 保持不变。
所以当我执行新的 MSI 时,它首先会正确卸载旧版本。甚至 Program Files\MyProduct 目录也被删除了。
但在卸载旧版本后,安装程序只会部分安装新版本。如果我修复损坏的新安装(使用添加删除程序->修改安装->修复),一切都修复了。
如果我首先使用“添加删除程序”卸载旧版本,然后安装新版本,一切正常。仅当我在旧版本之上安装新版本时才会出现此问题。
可能的原因
旧版本中各种dll和exe的版本号弄乱了。旧的 exe 版本是 4.11.1234。新 exe 的版本是 4.5.1234。根据“文件版本控制规则”,新文件不会覆盖旧文件。我摸不着头脑的原因是,当 InstallFiles 操作执行时,目标文件不再驻留在磁盘上。
其他信息
我的目标是 Windows Installer 3.1。
我的安装执行顺序大致是:
...
InstallValidate
RemoveExistingProducts
InstallInitialize
...
InstallFiles
...
InstallExecute
InstallFinalize
....
如果这个上下文没有把问题说清楚,请告诉我...
谢谢!
【问题讨论】: