我有一个 VS 安装程序 (.vdproj) 安装程序项目。我刚刚将版本从 1.0.0 更改为 1.0.1 并重新构建,但是当我运行安装程序 MSI 时,出现此错误:
我希望安装程序允许覆盖以前的版本,是否还有其他一些我必须更改的设置,或者是否存在其他可能导致此行为的问题?
更改安装程序项目目标的版本号时,您最可能需要做的是同时更改该安装程序的“ProductCode”属性(这将是一个 GUID,格式为
{A327EF4E-8B37-A0CC-B678-4AAD2D219E36}
)。
通常,当您完成编辑“版本”属性(在“属性”窗格中)时,Visual Studio 会向您显示如下所示的弹出窗口:
您应该单击“是”按钮以生成新的 GUID,这将使 MSI 文件识别出它正在使用较新的版本更新现有安装。否则,安装程序将检测“同一”产品的两个版本之间的“冲突”并显示您报告的错误。
请注意,安装程序使用“UpgradeCode”属性(也是一个 GUID)来检测您的产品实际上是同一应用程序的更高版本(即使“ProductCode”不同),并且它将用新包中的更新版本。 请确保在程序的所有版本中保持相同。(事实上,我在项目源文件之一的注释中保留了此 GUID 的副本,以防发生任何无意的更改。)
另请注意,任何组件文件(可执行文件、DLL 等等)都应具有适当更新的任何嵌入式
VERSIONINFO
资源,否则先前安装中的任何现有文件都不会被替换。 (对于没有VERSIONINFO
资源的文件,那么我相信它们的修改日期用于确定是否更新/替换。)