如何在使用可覆盖属性时按命令行卸载MSI-Package?

时间:2014-12-01 07:46:48

标签: wix

我使用WiX 3.8创建了一个MSI-Package,它包含一个名为“INSTALLLOCATION”的安装文件夹的属性。 通常,MSI包由Bootstrapper-Bundle调用,后者设置属性。 在MSI中,属性定义如下:

<Property Id="INSTALLLOCATION"
          Value="ProgramFilesFolder"
          Hidden="no"/>

如您所见,ProgramFilesFolder是默认值。 现在我们想要 - 与Bootstrapper并行 - 有可能通过命令行安装MSI包。 所以我发送以下命令:

msiexec /i Setup.msi INSTALLLOCATION=C:\MyApplication

MSI将安装在正确的位置。 到目前为止,非常好。

但是当我尝试通过ControlPanel / Programs或命令行卸载它时,它不起作用,因为默认值为“ProgramFilesFolder”。 即使我尝试以下命令:

msiexec /u Setup.msi INSTALLLOCATION=C:\MyApplication

我能做什么,卸载有效?

1 个答案:

答案 0 :(得分:0)

这是我的错! RemoveFolder条目错误。 当您使用像这样的目录层次结构时

<Directory Id="TARGETDIR"
           Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLLOCATION"
               Name="InstallLocation">
      <Directory Id="CompanyFolder"
                 Name="MyCompany">
        <Directory Id="INSTALLDIR"
                   Name="MyApp" />
      </Directory>
    </Directory>
  </Directory>

必须是:

<RemoveFolder Id="INSTALLDIR"
              On="uninstall"/>

就是这样。