首页 文章

当我从项目中删除合并模块时,不会运行WiX主要升级

提问于
浏览
1

我有一个WiX项目,其中包括为x86安装Visual C 2008运行时组件以及一个单独的合并模块 .

不幸的是,使用MSI v4.5的.msm存在一个众所周知的问题 . 更具体地说,.msm自定义操作 SxSUninstallCA 在卸载时需要20分钟才能完成 .

所以,长话短说,我决定从新版本的产品中删除.msm,用.exe文件安装VC组件 .

如果我只改变这个东西(当然还有ProductCode),安装程序不检测机器上已安装的产品并执行正常安装,而不先卸载旧版本 .

关于这里发生了什么的任何想法? MSI应检查UpgradeCode和ProductCode以检测产品是否已升级到系统上已安装的另一个产品?

3 回答

  • 2

    检查两个安装程序中的ALLUSERS属性是否设置相同 . 我有合并模块的相同问题,并解决了它 .

  • 1

    如果您希望新的MSI升级旧的MSI(并且您需要使用重大升级,因为您要删除组件),那么,是的,您需要使用UpgradeCode和Upgrade元素(或者在WiX v3.5中,您可以使用新的MajorUpgrade元素) .

    如果您提供有关.wxs文件内容的更多详细信息,我可以更具体 .

  • 0

    该项目设置为使用UpgradeCode和ProductCode来检测升级 . 例如:我用以下代码构建.msi:

    ProductCode="05406C5C-8D66-4779-AECA-A93B18729ED5"  
    UpgradeCode="05B87404-548E-4BEA-9621-FBF9459F25B0"  
    PackageCode="*"  
    Version="1.1.1"
    

    此.msi包含要安装的文件和文件夹,以及Microsoft_VC90_CRT_x86.msm合并模块 .

    然后我使用以下参数构建另一个.msi

    ProductCode="7F626A0C-5E69-496D-999E-8E2B14C01FE6"  
    UpgradeCode="05B87404-548E-4BEA-9621-FBF9459F25B0"  
    PackageCode="*"   
    Version="1.1.2"
    

    相同的文件,合并模块仍然包括:它工作,应用程序更新(卸载以前的版本,安装新版本) . 当我评论每一个对Microsoft_VC90_CRT_x86.msm的引用时,构建的安装程序都不会检测到以前版本的应用程序 .

相关问题