使用次要升级来提供一些新文件

时间:2014-04-23 19:41:51

标签: wix windows-installer

我正在做一个涉及创建版本1.0.0.0的MSI的PoC;将该版本安装到测试机器上。

接下来,我创建了另一个MSI(相同名称,相同的产品代码,不同的包代码,相同的升级代码)。我只是将一个新的.txt文件添加到原始(v1.0.0.0)MSI的源代码中。我使用WiX创建新的MSI文件,并将其版本为1.1.0.0。

到目前为止一切都很好。

以下是目前为止的代码细分(来自Orca.exe):

ProductCode for msi-v1.0.0.0: {CBCF9206-1539-47B8-9A46-A18C2E40D7A1}
ProductCode for msi-v1.1.0.0: {CBCF9206-1539-47B8-9A46-A18C2E40D7A1}

PackageCode for msi-v1.0.0.0: {AB2B02E4-213E-48C1-9394-E30A75BAF2BE}
PackageCode for msi-v1.1.0.0: {C68D3A88-583A-41BF-A971-CB5E083B8547}

UpgradeCode for msi-v1.0.0.0: {06726F10-FF0B-4534-A008-032A70CACDBB}
UpgradeCode for msi-v1.1.0.0: {06726F10-FF0B-4534-A008-032A70CACDBB}

ProductVersion for msi-v1.0.0.0: 1.0.0.0
ProductVersion for msi-v1.1.0.0: 1.1.0.0

我想要完成的是通过此次要升级部署新的单个.txt文件。我知道有一个名为Small Update的较小类型更新,但这不是这个PoC的发展方向。我们需要更改版本号作为最终游戏的一部分。

我在用于生成MSI的Wix脚本中有这个(我真的不认为这与我的问题有任何关系 - 只包括它因为它中有'Upgrade'一词):< / p>

<MajorUpgrade 
    DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." 
    AllowDowngrades="no" 
    AllowSameVersionUpgrades="yes" 
    />

我所看到的是,当我跑步时:

msiexec.exe /i FileName.msi REINSTALLMODE=vomus REINSTALL=ALL

我没有提供新的单个.txt文件。我确实看到产品版本(在appwiz.cpl中)从1.0.0.0更改为1.1.0.0,缓存的本地MSI文件(在C:\ Windows \ Installer目录下)确实现在版本为1.1.0.0(由Orca验证) .EXE)。

我很困惑为什么没有部署新的单个.txt文件。

我想我的主要问题是:为什么这个次要升级(即相同的产品代码,差异包代码,差异产品版本)不会提供新文件?

提前感谢任何指针!

2 个答案:

答案 0 :(得分:3)

如果您违反了组件规则,您会在日志中看到有关它的内容。这将是SELMGR条目以及有关删除不受支持的组件的信息。如果您没有正确添加文件,可能会发生这种情况。如果在命令行上将MSIENFORCEUPGRADECOMPONENTRULES设置为1进行次要更新安装,则如果违反规则,则安装将失败。

答案 1 :(得分:2)

我会读到:

What happens if the component rules are broken?

Dealing with very large number of files

我不是这种自动化的巨大反对者。特别是如果您尝试进行小幅升级和补丁。我经常发现那些对安装程序有所了解的人,并不是真的想要这样做,并且发现它更有趣并且“自动化”以实现自动化的自动化。不要这样做! :)相反,我专注于创建使安装程序开发和维护尽可能简单的流程。 (参见IsWiX on CodePlex)只有经验丰富的开发人员知道他的代码,并且可以就如何部署他的资源做出正确的选择。