刻录(WiX引导程序)不会卸载MSI包

时间:2013-03-14 13:16:52

标签: wix burn

我有一个带有此链的Burn捆绑包:

<Chain>
  <PackageGroupRef Id="NetFx40Web"/>
  <MsiPackage SourceFile="c:\\My\\Path\\MyMsi.msi"
        Id="MyMsi" DisplayName="MyMsi" DisplayInternalUI="yes" Vital="yes">
    <MsiProperty Name="INSTALLLOCATION" Value="[InstallFolder]" />
  </MsiPackage>
</Chain>

.NET框架和我的MSI文件都已正确安装。但是卸载过程中没有卸载MSI软件包(在单击引导程序EXE或程序和功能之后)。有什么方法可以强制卸载MSI包吗?

2 个答案:

答案 0 :(得分:6)

Burn将创建一个日志文件,其中包含%TEMP%中每个包的更改状态的详细信息。看一下名为“Plan”的部分,您将看到Bundle中每个包的行。日志文件中的其他消息将指出MSI是否仍由另一个Bundle计数引用,或者机器上的MSI是否比Bundle携带的MSI更新(因此它不会将其卸载)。

答案 1 :(得分:2)

我遇到了同样的问题,即MSI在删除捆绑包时没有卸载,原因很简单。

MSI是在同一个Visual Studio解决方案中创建的,它被设置为捆绑项目的依赖项。每次创建包时,都会首先创建MSI。

未发生卸载的根本原因是MSI的产品密钥设置为“*”,因此每次创建时都会更改。这以某种方式阻止了删除。设置为固定GUID时,卸载成功。

编辑:原来,我做了一件特别的事。我创建了德语和英语版本(称为light.exe两次)和(使用一些外部脚本)将它们合并为一个MSI。因此,德语版本具有与英语版本不同的产品ID。卸载在德语或英语Windows中正常工作,具体取决于首先调用哪个light.exe。