5

我有一个带有这条链的 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 文件都已正确安装。但是在卸载过程中(无论是在单击引导程序 EXE 还是从程序和功能中)都不会卸载 MSI 包。有什么方法可以强制卸载 MSI 包吗?

4

2 回答 2

7

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

于 2013-03-14T14:38:10.353 回答
2

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

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

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

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

于 2014-01-09T10:13:11.217 回答